IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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
vfsdfsdfdsf
Člen
Avatar
vfsdfsdfdsf:15.1.2014 19:16

Ahoj, u toho výpisu s Tomášem Marným (mimochodem dost dobré :D ) je menší chybička - místo System.out.println má být System.out.format - a za tím %s ještě %n pro odřádkování, ale je to jen drobnost, která snad nikoho nevyvede z míry (teda pokud to poctivě čtou a zkoušejí :D ).

 
Odpovedať
15.1.2014 19:16
Avatar
Kit
Tvůrce
Avatar
Kit:15.1.2014 19:36

Proč vlastně v třídě Kalendar vytváříš 7 stringových objektů místo jednoho? Není to plýtvání?

Odpovedať
15.1.2014 19:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na vfsdfsdfdsf
David Hartinger:15.1.2014 20:15

Díky, pak na to mrknu.

Odpovedať
15.1.2014 20:15
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Kit
David Hartinger:15.1.2014 20:16

Jo, byl by tam lepší jeden, při revizi to upravím.

Odpovedať
15.1.2014 20:16
New kid back on the block with a R.I.P
Avatar
madrlukas
Člen
Avatar
madrlukas:9.4.2015 16:41

Statické proměnné a metody lze volat i na instanci, ne pouze na třídě. Sice mě NetBeans předem upozorní(žárovkou vedle řádku), že přistupuju ke statické proměnné, nicméně program se provede bez chyby a vypíše proměnnou/vrátí hodnotu metody. Jelikož je v článku několikrát výslovně uvedeno, že statické metody lze volat pouze na třídě, tak jsem dost zmaten. Měl byste někdo k tomu nějaké vysvětlení? Popřípadě mohl byste mě vyvést z iluze..?

 
Odpovedať
9.4.2015 16:41
Avatar
roman64
Tvůrce
Avatar
roman64:23.6.2015 16:04

Máš pravdu. Já jsem byl z počátku také zmaten. Na druhou stranu, pokud používáš seznam možností Netbeans (ctrl+space nebo tečka za názvěm proměnné -instance), tak jako možnost ti tu static proměnnou NENABÍDNE!

Řešit by se to dalo přes get:
public static int getMinimalniDel­kaHesla() {return minimalniDelka­Hesla;}

a z main pak volat:
System.out.prin­tf("Minimalni dalka hesla je %s znaku",Uzivatel­.getMinimalni­DelkaHesla()); // metodu volat přes název třídy! (nikoliv instance)

Mělo by to být "in compliance" neboť tuto metodu ti Netbeans nabídne.

Odpovedať
23.6.2015 16:04
Definice šílenství je dělat stejnou věc znovu a znovu a očekávat jiné výsledky.“ Albert Einstein.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:15.1.2016 14:29

No, ale teď jsi jasně i na svém příkladu dokázal, že statická metoda nelze být volána z již vytvořené instance, ale z třídy:)
toto prostě nejde:

...
Uzivatel u = new Uzivatel(..);
u.STATICKA_METODA();
...

a jen tak pár drobností, a hned ta první je na přesdržku ode mě, ale jsem puntičkář:D

Uzivatel u = new Uzivatel("Tomáš Marný", "heslojeveslo");
System.out.printf("ID prvního uživatele: %s\n", u.vratId());
Uzivatel v = new Uzivatel("Olí Znusinudle", "csfd1fg");
System.out.printf("ID druhého uživatele: %s\n", v.vratId());
System.out.printf("Minimální délka hesla uživatele je: %s\n", Uzivatel.vratMinimalniDelkuHesla());
System.out.printf("Validnost hesla \"heslo\" je: %s", Uzivatel.zvalidujHeslo("heslo"));

tady ti chybí v posledním řádku za %s i odřádkování:) pak se výstup neshoduje se vzorem:)

No a potom, když se na to upozrňuje všude, tak proč za celou dobu nikdo nepoznamenal, že ve třídě Nastavení máš malé s u Stringu:

class Nastaveni
{
        private static String jazyk = "CZ";
        private static String barevneSchema = "cervene";
        private static boolean spustitPoStartu = true;

        private Nastaveni()
        {
        }

        public static string jazyk()            <=============== tady tu
        {
                return jazyk;
        }

        public static String barevneSchema()
        {
                return barevneSchema;
        }

        public static boolean spustitPoStartu()
        {
                return spustitPoStartu;
        }

}

jinak pěkné až na ten úvod, říct: "Obecně bych doporučoval statiku vůbec nepoužívat, pokud si nejste naprosto jisti, co děláte".... to platí obecně pro všechno:D a třeba jak jsi i ve svém návodu výstižně podotkl, vytvářet si pomocné třídy (třeba i privátní) proto, abych před třídou něco nastavil nebo aby se mi kalkulovaly instance, tak to by byla zase chyba.
To samé bys mohl říct, že je lepší používat if místo switche, nevím, prostě mi to tak příjde:) možná se pletu, ale to už je pak na každém programátorovi. Pochopitelně druhá věc je, kdyby někdo rval static všude, kde mu to zahlásí chybu, že potřebuje statický atribut/referenci, to pak ano:) ale tyto tutoriály jsou pěkně udělané + názorné příklady, takže počítej spíš s tím, že díky tomuto "vychováš" dobré programátory a ne prasata:D

Odpovedať
15.1.2016 14:29
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Adam Bucher
Člen
Avatar
Adam Bucher:25.2.2017 1:29

Vím, že jste to tu řešili před víc než jedním rokem, ale nějak jsem tu nenašel vysvětlení...
V článku je napsáno, že statické atributy/metody nelze volat na instanci. Ale podle NetBeans a funkčního programu to lze. Sice, jak už tu někdo psal, to NetBeans nenabídne, ale když si to tam programátor přece jen napíše, program funguje stejně. Tak jak to tedy je?

 
Odpovedať
25.2.2017 1:29
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Adam Bucher
David Hartinger:25.2.2017 12:23

Některé jazyky si to přeberou i když to zavoláš na instanci, ale volá se to samozřejmě pořád na třídě.

Odpovedať
25.2.2017 12:23
New kid back on the block with a R.I.P
Avatar
Adam Bucher
Člen
Avatar
Odpovedá na David Hartinger
Adam Bucher:25.2.2017 12:40

Jo, myslel jsem si to. Díky za rychlou odpověď.

 
Odpovedať
25.2.2017 12:40
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.

Zatiaľ nikto nevložil komentár - buď prvý!