Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: class

Aktivity
Avatar
sasa.lohr
Člen
Avatar
sasa.lohr:25.3.2015 22:16

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
Tvůrce
Avatar
Odpovídá na sasa.lohr
Honza Bittner:25.3.2015 22:57

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
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
sasa.lohr
Člen
Avatar
Odpovídá na Honza Bittner
sasa.lohr:26.3.2015 6:40

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
Tvůrce
Avatar
Odpovídá na sasa.lohr
Honza Bittner:26.3.2015 10:22

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
26.3.2015 10:22
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
sasa.lohr
Člen
Avatar
sasa.lohr:27.3.2015 6:40

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.