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 – 12. diel - Vlastnosti

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
nosekt
Člen
Avatar
nosekt:11.5.2014 20:34

Chápu to tedy správně, když řeknu, že vlastnosti nám ve většině případech pouze zkracují třídu o metody, které bychom museli jinak napsat pro navrácení privátních atribut?

Editované
Avatar
nosekt
Člen
Avatar
nosekt:12.5.2014 14:27

Prosím o odpověď :D

Avatar
Gramli
Tvůrce
Avatar
Odpovedá na nosekt
Gramli:12.5.2014 14:35

Vlastnosti jsou metody, které buď nastavují nebo vracejí privátní atributy, takže podle mě to chápaš správně.

Odpovedať
Kdo to říká ten to je...
Avatar
danar2004
Člen
Avatar
danar2004:12.5.2014 14:57

Ahoj, nevím, jestli jsem něco nepřehlédl, ale proč se v následujícím kódu (tuším předposlední z tohohle článku) nepíší i ostatní vlastnosti (Jmeno, Muz, Plnolety) do dvou řádek, stejně jako věk (vek a Vek)? Jaký je v tom rozdíl? Je to proto, abychom případně mohli mít u věku možnost změnu odmítnout a zůstat u stávající hodnoty např. otestováním, zda se někdo nesnaží zadat nereálný věk? Díky za odpověď.

class Student
{
        public string Jmeno { get; private set; }
        public bool Muz { get; private set; }
        public bool Plnolety { get; private set; }
        private int vek;
        public int Vek
        {
                get
                {
                        return vek;
                }
                set
                {
                        vek = value;
                        // kontrola plnoletosti
                        Plnolety = true;
                        if (vek < 18)
                                Plnolety = false;
                }
        }

        ...

}
Avatar
Gramli
Tvůrce
Avatar
Odpovedá na danar2004
Gramli:12.5.2014 15:11

Přesně tak, je to proto, aby jsi mohl definovat třeba nějaké podmínky.
Ty si ty vlastnosti můžeš odřádkovat u každé té metody a připsat si tam něco co ještě potřebuješ, např:

private string jmeno
public string Jmeno
(
get{return jmeno;}
set
{
 jmeno = value;
 if(jmeno =="")
    jmeno = "neznamy";
}
)

ale pokud ti stačí proměnou jen získat:

public string Jmeno { get; private set; }
Editované
Odpovedať
Kdo to říká ten to je...
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá na danar2004
Jan Vargovský:12.5.2014 15:26

Ta zkrácená verze je jen kvůli zkrácení kódu. Dost vlastností nemá nějakou vnitřní logiku, tak si je napíšeš zkráceně a ušetříš pár řádků kódu. Ve výsledku se ti to stejně zkompiluje jako ta rozepsaná varianta. Tohle třeba u Javy nenajdeš, na každou vlastnost si musíš napsat 2 metody a pakt o dopadá, že napíšeš třídu, 3 datové složky + gettry/settry a máš 60 řádků v ... :)

Editované
Avatar
p.krcmarik
Člen
Avatar
p.krcmarik:24.11.2014 16:08

Nemas tam chybu v te posledni casti, kde si vyzkousime problematicky pripad ? prece kdyz je setter u muz nastavenej na private, tak tu hodnotu nemuzu zmenit, nebo jsem neco blbe pochopil ?

Avatar
Selak
Člen
Avatar
Selak:31.12.2014 22:41

public string Muz()
{
return muz;
}

chci se zeptat jestli tady není chyba měl jsem to podtrhlý, změnil jsme to na bool a bylo to v pohodě.

Avatar
Skelag
Člen
Avatar
Skelag:17.2.2015 15:49

Nechci vypadat jako někdo kdo kontroluje každé slovo ale tohle mě trošku zmátlo :)

Pokud si přejeme, aby vlastnost nešla mimo třídu měnit, označíme getter jako privátní

public string Jmeno { get; private set; }

Neměl by být privátní ten getter? 8|

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Skelag
David Hartinger:17.2.2015 15:56

Mělo tam být setter, díky, opravil jsem to :)

Odpovedať
New kid back on the block with a R.I.P
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 99.