Avatar
sasa.lohr
Člen
Avatar
sasa.lohr:

Zdravím :)
Mám problém s deklarací objektu.
luštím to z Heroutovy knihy, ale prostě mi to není jasné.
Nejdříve mi to nechtělo nechat toto:
Tridy obd;
obd=new Tridy();

což by mělo být pez problémů.

package tridy;
import java.util.*;

public class Tridy {
     public int vyska, sirka;

    public int obvod(){
        int obvod=(vyska+sirka)*2;
        return obvod;
    }
    public int obsah(){
        int obsah=vyska*sirka;
        return obsah;
    }

    Tridy obd=new Tridy();

    public static void main(String[] args) {


        obd.sirka=5; //* chyba

   }
}

Taky mi není zcela jasné, jak zavolám metodu z jiného souboru. I když mám soubor ve stejným balíku, netbeans mi furt vytváří nové třídy, i když mám to samé vytvořené. Prostě si to pojmenuje jinak.
Děkuji za rady.

Editováno 25.3.2015 22:18
 
Odpovědět 25.3.2015 22:16
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na sasa.lohr
Honza Bittner:

Jsi si jistý, že chceš vytvářet instanci objektu v téže třídě? Mimochodem, jaký má objekt "Tridy" spojení s metodami obvod, obsah... ?

Doporučuji si projít zdejší tutoriály na Javu - http://goo.gl/XLACrN -, resp. její úvod do OOP - http://goo.gl/nq7eeK.

Editováno 25.3.2015 22:59
Nahoru Odpovědět 25.3.2015 22:57
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
sasa.lohr
Člen
Avatar
Odpovídá na Honza Bittner
sasa.lohr:

právě že jsem ji v této třídě vytvářet nechtěl. Jen mi nic jiného nešlo.

 
Nahoru Odpovědět 26.3.2015 6:40
Avatar
Honza Bittner
Redaktor
Avatar
Odpovídá na sasa.lohr
Honza Bittner:

Protože to děláš špatně... Jak jsem psal, koukni se na zdejší tutoriály. Už třeba ve druhém dílu - http://goo.gl/V690dj - po stažení zdrojáků uvidíš, jak se to dělá.

  1. musíš mít soubor, který obsahuje inicializaci programu - ten to všechno spustí. Jenom tento soubor obsahuje
public static void main(String[] args) {}

Z toho článku co jsem posílal výše to bude tento kód. Také vidíš, že tady vytváří instanci objektu Zdravic.

package helloobjects;

public class HelloObjects {

    public static void main(String[] args) {
        Zdravic zdravic = new Zdravic();
        zdravic.text = "Ahoj uživateli";
        System.out.println(zdravic.pozdrav("Karel"));
        System.out.println(zdravic.pozdrav("Petr"));
        zdravic.text = "Vítám tě tu programátore";
        System.out.println(zdravic.pozdrav("Richard"));
    }
}
  1. Musíš mít ty různé třídy, které obsahují předpis pro objekt. Tam už nevyužíváš kostry jako výše, ale používáš konstruktor (pokud chceš něco učinit ihned po vytvoření).

Z tutoriálu uvedeného výše to bude kód

package helloobjects;

/** Třída reprezentuje zdravič, který slouží ke zdravení uživatelů */
class Zdravic
{
        /** Text pozdravu */
        public String text;

        /**
         * Pozdraví uživatele textem pozdravu a jeho jménem
         * @param  jmeno  Jméno uživatele
         * @return      Text s pozdravem
         */
        public String pozdrav(String jmeno)
        {
                return String.format("%s %s", text, jmeno);
        }

}

Pokud budeš chtít uvnitř objektu - kde musíš ale stále myslet a zachovávat filozofii OOP - odkazovat na vlastnosti či metody daného objektu, použiješ klíčové slovo this.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 26.3.2015 10:22
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
sasa.lohr
Člen
Avatar
sasa.lohr:

dík :) Já jsem si tady ty tutoriály projížděl, ale když jsem si koupil tu knihu, už mi nenapadlo, že by tu to OOP mohlo být lépe vysvětlené :)

 
Nahoru Odpovědět 27.3.2015 6:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.