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 9 - Statika

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
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?

 
Odpovědět
6.10.2019 17:42
Avatar
Odpovídá 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? ;-)

Odpovědět
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.

 
Odpovědět
7.12.2019 17:20
Avatar
Odpovídá 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.

Odpovědět
16.1.2020 18:03
j.k.j
Avatar
David
Člen
Avatar
David:15.4.2020 16:06

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

 
Odpovědět
15.4.2020 16:06
Avatar
Werner Yuyong:1.5.2022 5:20

Supr clanek, diky za nej.

 
Odpovědět
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;
 
Odpovědět
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.

 
Odpovědět
22.1.2023 14:33
Avatar
David Novák
Tvůrce
Avatar
Odpovídá 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í.

 
Odpovědět
28.9.2023 8:15
Avatar
David Novák
Tvůrce
Avatar
Odpovídá 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í.

 
Odpovědět
28.9.2023 8:16
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 40.