NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Lekce 4 - Hrací kostka v Javě - Zapouzdření, konstruktor a Random

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Atrament
Člen
Avatar
Odpovídá na Ondra Hájek
Atrament:23.12.2020 10:23

Chápeš to správně, ale asi bych se tomu vyhnul, osobně nemám tohle řetězení konstruktorů rád. U jednoduchého příkladu, kdy nastavuješ jednu defaultní hodnotu je to ještě v pohodě, ale jakmile chceš nastavovat více defaultních hodnot, tak se do toho můžeš velice snadno zamotat. V tom případě je mnohem lepší použít Builder Pattern...

 
Odpovědět
23.12.2020 10:23
Avatar
Karel Stehlík:4.1.2021 23:46

Návrhové vzory jsou pokročilejší technika. Pro ty, kteří se ale s OOP teprve seznamují, je využití klíčového slova "this" při přetěžování konstruktorů ideální obrana před duplikováním kódu.

Ondro, pokud se název atributu objektu nedá zaměnit s názvem lokální proměnné - typicky u konstruktoru jeho parametrem, není nutné klíčové slovo "this" před atributem uvádět.

 
Odpovědět
4.1.2021 23:46
Avatar
Robert Vyskup:20.8.2021 16:21

Potřebuju vysvětlit proč je potřeba v programu třídy Kostka

private int pocetsten;
    private Random random;
    public Kostka(int pocetsten){
        this.pocetsten=pocetsten;
        random = new Random();
    }
    public int vratPocetsten(){
        return pocetsten;
    }
    public int hod(){
        return random.nextInt(pocetsten)+1;
    }

tento kód

public int vratPocetsten(){
        return pocetsten;

A to i v případě kdy nepotřebuju a nechci vracet ve výpisu údaj o počtu stěn. Vidím, že tato metoda má vliv na samotný hod kostkou, který se bez ni neprovede. Jak to? Souvisí to s tím, že pokud chci dostat počet stěn zadaný v instanci třídy Kostka do privátního atributu pocetsten tak musím jít skrze tuto metodu, jelikož přes konstruktor se tam nedostane?

 
Odpovědět
20.8.2021 16:21
Avatar
Atrament
Člen
Avatar
Odpovídá na Robert Vyskup
Atrament:20.8.2021 17:38

Jak to myslíš, že má ta metoda vliv na hod kostkou a že se bez ní neprovede? Nic takového tam nevidím, metoda hod() metodu vratPocetsten() vůbec nepoužívá

Editováno 20.8.2021 17:41
 
Odpovědět
20.8.2021 17:38
Avatar
Atrament
Člen
Avatar
Odpovídá na Robert Vyskup
Atrament:20.8.2021 17:50

Jinak ta metoda vratPocestSten() je v článku vysvětlena, prostě vrací hodnotu pocetsten

 
Odpovědět
20.8.2021 17:50
Avatar
Robert Vyskup:20.8.2021 19:01

Jo už to vidím, mně tam zbyla, jak jsem to mazal jedna složená závorka navíc. Proto to bylo červené. Měl jsem to líp prozkoumat ;-)

 
Odpovědět
20.8.2021 19:01
Avatar
Odpovídá na Atrament
Robert Vyskup:20.8.2021 19:07

Mně to zmátlo jak jsem zkoumal tu třídu Bojovnik. Kde máme metody

private void nastavZpravu(String zprava){
        this.zprava=zprava;
    }
    public String vratPosledniZpravu(){
        return zprava;
 
Odpovědět
20.8.2021 19:07
Avatar
Odpovídá na Atrament
Robert Vyskup:20.8.2021 19:14

Proč nestačí v té třídě Bojovnik vrátit tu zpávu takto:

public String toString(){
return zprava;
}

a jsou tam místo toho ty dvě metody?

 
Odpovědět
20.8.2021 19:14
Avatar
Atrament
Člen
Avatar
Odpovídá na Robert Vyskup
Atrament:20.8.2021 19:28

Protože toString() slouží k něčemu úplně jinému

 
Odpovědět
20.8.2021 19:28
Avatar
Odpovídá na Atrament
Robert Vyskup:20.8.2021 19:44

No ale kdybychom dali na začátku do konstruktoru i atribut zprava a v parametru měli i String zprava, tak by se nám pak přece přes toString ta zprava vrátila, a my bychom ji pak mohli vypsat v konzoli. Jasně pár dalších věcí, které jsou v programu napojeny na ty dvě metody by se muselo přepsat na atribut zprava, ale pak by to snad fungovalo, ne?

 
Odpovědět
20.8.2021 19:44
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 10 zpráv z 136.