Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 9. diel - Statika

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
Avatar
Jiří Dvořák:6.10.2019 17:42

Mám otázku, jak je na konci článku code:

class Kalendar
{

    public string VratNastaveni()
    {
        string s = "";
        s += String.Format("Jazyk: {0}\n", Nastaveni.Jazyk());
        s += String.Format("Barevné schéma: {0}\n", Nastaveni.BarevneSchema());
        s += String.Format("Spustit po startu: {0}\n", Nastaveni.SpustitPoStartu());
        return s;
    }

}

tak proč je tam

string s = "";

místo

string s;

má to nějaký hlubší význam nebo je to uplně jedno?

 
Odpovedať
6.10.2019 17:42
Avatar
Odpovedá na Jiří Dvořák
Neaktivní uživatel:6.10.2019 18:33

Hned na dalším řádku k s přičítáš. Pokud se nepletu, mělo by ti přičítání k null vyhodit chybu. Však proč by sis to vlastně nemohl zkusit sám? ;-)

Odpovedať
+2
6.10.2019 18:33
Neaktivní uživatelský účet
Avatar
Libor Novák
Člen
Avatar
Libor Novák:7.12.2019 17:20

Jen malá poznámka
nesouhlasím s tím, že statika porušuje principy OOP a že se dá vše napsat i bez statiky.
Statika je podle mých zkušeností a znalostí OOP (hlavně v Javě) velmi důležitou součástí OOP, která může významně programátorovi usnadnit život a také snížit nároky na paměť a tím i zrychlit běh aplikace. Autor článku zde uvádí krásné příklady, jak je statika užitečná.
Např. příklad se třídou Math. Pokud potřebujeme použít nějakou matematickou funkci, je přece zbytečné vytvářet instanci a pak volat její metodu námi požadovanou matematickou funkcí. Jednodušší je použít statickou funkci třidy Math. Je to i méně náročné na režiji.
O tom, že statika je důležitou součástí OOP svědčí i fakt, že metoda main() je také statická.
V OOP musíme rozlišovat, jestli pracujeme na úrovni instance (objektu) a nebo třídy (šablony podle které se objekt vytváří). Proto všechny atributy a metody, které se týkají konkrétních objektů by měli být instanční. Naproti tomu všechny metody a atributy, které s konkrétním objektem nesouvisí a jsou obecnějšího charakteru, pak většinou souvisí přímo se třídou a měli by být statické.
Na tvrzení, že všechno se dá napsat objektové bez použití statiky, mohu argumentovat tím, že všechno se dá napsat procedurálně tedy bez použití OOP.
Pokud budeme potřebovat někde ukládat informaci, kolik instancí jsme od určité třídy vytvořili, pak se bez statiky moc neobejdeme. Stačí ve třídě definovat nějaký statický atribut např. pocetInstanci a jeho hodnotu vždy zvýšit o 1 při vytvoření další instance.
Bez statiky bychom museli vytvářet nějaký pomocný objekt, což by bylo řešení přes ruku.
Čtenář ocení výhody statiky, při hlubších znalostech OOP.
Jinak tento článek hodnotím pozitivně. Oceňuji zde použité názorné příklady.

 
Odpovedať
+3
7.12.2019 17:20
Avatar
Odpovedá na Libor Novák
Nositelka Změny:16.1.2020 18:03

Rozhodně souhlasím. Statika objektové principy nenarušuje, naopak umocňuje, protože umožňuje zapouzdřit i data, která sice s danou třídou souvisí, ale nepatří k jednotlivým instancím. Vždyť je to napsané přímo v tom článku. ;-) Osobně si dokonce troufám říct, že vše se dá naprogramovat bez C#, nestrukturovaně, dokonce ve strojovém kódu, na štítcích... Žít by se dalo dokonce i bez samotného programování, ale rozhodně tím nechci shazovat jeho význam. :-) Jenom škoda, že nemůžeme vytvářet statické proměnné uvnitř metod, jako to lze v C++. Pravda, je to něco, co s objektově orientovanou statikou vůbec nesouvisí, ale občas by se hodilo ji mít.

Odpovedať
16.1.2020 18:03
j.k.j
Avatar
David
Člen
Avatar
David:15.4.2020 16:06

Díky za článek. ;-)

 
Odpovedať
15.4.2020 16:06
Avatar
Werner Yuyong:1.5.2022 5:20

Supr clanek, diky za nej.

 
Odpovedať
1.5.2022 5:20
Avatar
Jaroslav Drobek:3.8.2022 9:03

Hodnocení:

  • "U příkladu se statickým atributem minimalniDelkaHesla jsme porušili zapouzdření,.." - ale při poslední ukázce kódu to již přece bylo (bez komentáře) napraveno:
private static int minimalniDelkaHesla = 6;
 
Odpovedať
+2
3.8.2022 9:03
Avatar
Filip Doskocil:22.1.2023 14:33

Nějak jsem nepochopil rozdíl mezi statickou a normální metodou, třídou.

 
Odpovedať
22.1.2023 14:33
Avatar
David Novák
Tvůrce
Avatar
Odpovedá na Filip Doskocil
David Novák:28.9.2023 8:15

Ahoj Filipe, děkujeme za podnět, který jsem předal k řešení.

 
Odpovedať
28.9.2023 8:15
Avatar
David Novák
Tvůrce
Avatar
Odpovedá na Jaroslav Drobek
David Novák:28.9.2023 8:16

Ahoj Jaroslave, děkujeme za podnět, který jsem předal k řešení.

 
Odpovedať
28.9.2023 8:16
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 40.