Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 10. diel - Aréna s mágom (dedičnosť a polymorfizmus)

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Martin Horáček:16.3.2013 19:41

Zdravím,
chci poděkovat za tenhle parádní tutoriál.
Jediné, co mi nejde, je spustit program s ASCIIart. Píše to: Unrecognized escape sequence.
Díky za radu.

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Martin Horáček
David Hartinger:16.3.2013 19:50

To je zpětnými lomítky, napiš před ten string zavináč, takhle:

string s = @"/----\.... atd";

On si jich poté nevšímá a bere je jako obyčejné znaky. V seriálu to někde popisuji, dojdeš k tomu pokud jsi to nepřehlédl.

Odpovedať
New kid back on the block with a R.I.P
Avatar
Martin Horáček:16.3.2013 19:55

Díky, funguje.

Avatar
Libor Šimo (libcosenior):9.6.2013 9:28

V časti "Konstruktor potomka" je poznámka:

"Pozn. stejně můžeme volat i jiný konstruktor v té samé třídě (ne předka), jen místo base použijeme this.

Nerozumiem ako to použiť. Poradí niekto?

Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovedá na Libor Šimo (libcosenior)
Jiří Košata - kosata50:9.6.2013 10:58

Například část třídy Kostka ze 3. dílu by mohla vypadat takto:

class Kostka
{
    private int pocetSten;
    private Random random;

    public Kostka(int pocetSten)
    {
        this.pocetSten = pocetSten;
        random = new Random();
    }

    public Kostka(): this(6)
    {
    }
}
Avatar
Libor Šimo (libcosenior):9.6.2013 11:32

To znamená, že inštancia Kostka kostka = new Kostka(); má 6 stien?

Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovedá na Libor Šimo (libcosenior)
Michael Olšavský:9.6.2013 11:55

Přesně tak. Vytvoříš bezparametrový konstruktor, který zavolá svůj konstruktor s parametrem. ;-) Je to v dalších tutoriálech (nebo alespoň myslím).

Avatar
Martin Gabriel
Tvůrce
Avatar
Martin Gabriel:11.7.2013 16:02

Trochu jsem si hrál a vytvořil si třídu Drak.
Chtěl jsem dědit z třídy Mág, jelikož Drak používá stejné vlastnosti a metody (místo many dech, místo magickéhoÚtoku ohnivýÚtok, atd), ale když jsem se o tom bavil se kamarádem programátorem, tak mi řekl, že to dělat nemám, protože od Mága bych měl dědit jen pokud je Drak speciální případ Mága, což není (šlo by to např pokud by to byl frost mage / fire mage / arcane mage).
Pokud bych teda postavil kód na tom, že mám hlavní třídu Bojovník, tak bych draka psal téměř stejně jako Mága a vznikal by mi zbytečně duplicitní kód.

Co je teda podle OOP správně?

Editované
Odpovedať
"Be the change you want to see in the world" - Michael Scofield
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Martin Gabriel
Kit:11.7.2013 17:18

Pokud by třídy Drak a Mág obsahovaly mnoho společných vlastností, můžeš jim definovat společného předka. Tím může být Bojovník nebo MagickýBojovník:Bo­jovník.

Další možností je použití vzoru Dekorátor. Tím by odpadla dědičnost.

Odpovedať
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Honza
Nevyplnené
Avatar
Honza:20.7.2013 8:50

Super návod, jen mi pořád do hlavy nejde jedna věc. Měl jsem za to, že modifikátor private u proměnné znamená, že s ní lze pracovat pouze v rámci třídy a u potomka už to není možné. Přitom se v mágovi v rámci metody Utoc volá metoda NastavZpravu, ktera je sice protected, ale v jejím těle proběhne změna proměnné zprava, která je v předkovi nastavena na private. Přesto to funguje. Může mi někdo vysvětlit proč?

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 138.