Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.
Avatar
eviel
Člen
Avatar
eviel:16.7.2013 14:12

Zdravím Vás, viem že tu je jeden návod na používanie getterov a setterov ale stále mi nejde do hlavy, načo sú gettery...settery mi problém nerobia len tie gettery. Načo vlastne slúžia? (viem že vracajú nejaku hodnotu). Budte dobry na nejakom príklade mi to vysvetlite, dakujem. :[

Editováno 16.7.2013 14:13
 
Odpovědět
16.7.2013 14:12
Avatar
Kit
Tvůrce
Avatar
Odpovídá na eviel
Kit:16.7.2013 14:39

Jsou to obyčejné metody, u kterých se zažily speciální názvy začínající set- nebo get-. Setter nastavuje hodnotu atributu uvnitř objektu, getter ji zjišťuje.

Pes alik = new Pes();
alik.setJmeno("Alík");  // nastaví objektu alik atribut Jmeno na "Alík"
System.out.println(alik.getJmeno());  // vypíše hodnotu atributu Jmeno

Tyto gettery a settery musíš naprogramovat, ale IDE je často vygenerují za tebe. A často i zbytečně, protože většina atributů nemusí být v rozhraní třídy.

Nahoru Odpovědět
16.7.2013 14:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
eviel
Člen
Avatar
eviel:16.7.2013 16:57

Vďaka, ešte jedna otázka, aký má význam že sa getter používa napr. takto:

public String getAtribut()
       {
               return atribut;
       }
Editováno 16.7.2013 16:58
 
Nahoru Odpovědět
16.7.2013 16:57
Avatar
Kit
Tvůrce
Avatar
Odpovídá na eviel
Kit:16.7.2013 17:08

Občas se ptám na totéž :)

Nahoru Odpovědět
16.7.2013 17:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na eviel
David Hartinger:16.7.2013 17:18

Je to vysvětlené v článku o getterech.

Nahoru Odpovědět
16.7.2013 17:18
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na eviel
Kit:16.7.2013 17:20

Už vím: Protože to tak generují IDE :)

Nahoru Odpovědět
16.7.2013 17:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:16.7.2013 17:29

Jak jsem psal, je to vysvětleno v tom článku.

Nahoru Odpovědět
16.7.2013 17:29
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:16.7.2013 17:43

V tom článku to máš popsáno pro denormalizovaná data. V praxi to pak často vypadá tak, že se gettery a settery zneužívají. Například pokud chci rychlost zvýšit o 30, tak vývojář napíše:

auto.setRychlost(auto.getRychlost() + 30);

místo mnohem praktičtějšího

auto.addRychlost(30);

Gettery a settery mají svůj smysl, ale často bývají jen berličkou pro programátory, kteří se jí jen brání proti public atributům místo toho aby tomu getteru či setteru dali nějakou funkčnost - například hlídání mezí, konverze typů, skládání výstupního stringu apod. Z objektů tak udělají jen datové skladiště.

Nahoru Odpovědět
16.7.2013 17:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
tastyfish
Tvůrce
Avatar
tastyfish:17.7.2013 8:58

Co se tady píše je pravda, základní myšlenka getterů a setterů je prostě zachovávání zapouzdřenosti - teoreticky ze základního konceptu by měl být každý atribut nepřístupný, protože atributy jsou vnitřnosti objektu, ve kterých si uchovává svůj stav, pracovat by se s objektem mělo jenom pomocí metod, proto mají atributy gettery a settery. V praxi se samozřejmě dělají různé věci z hlediska výhodnosti, praktičnosti, lenosti, apod. Koneckonců samy jazyky se tomu přizpůsobují a nabízí modifikátory přístupu, různé read-only direktivy apod.

Nahoru Odpovědět
17.7.2013 8:58
škoda mluvit
Avatar
eviel
Člen
Avatar
eviel:17.7.2013 9:52

Vďaka :)

btw. mimo temy(nechce sa mi zakladať novú): existuje nejaký balíček alebo trieda, ktorá by riadila pc(vypnutie,us­porny,restart­...)?

 
Nahoru Odpovědět
17.7.2013 9:52
Avatar
Odpovídá na eviel
Luboš Běhounek Satik:17.7.2013 10:23

Na kazdem OS se tohle resi jinak, ale v podstate vzdy volas system -
shodou okolnosti je to na win i linuxu systemovy prikaz se stejnym nazvem: shutdown a jen pak menis parametry.

Editováno 17.7.2013 10:24
Nahoru Odpovědět
17.7.2013 10:23
https://www.facebook.com/peasantsandcastles/
Avatar
Homo
Člen
Avatar
Odpovídá na eviel
Homo:17.7.2013 10:30

Pokud chces resit systemove veci tak je lepsi sahnout po jinem jazyku. V jave se takove veci resi celkem obtizne.

Nahoru Odpovědět
17.7.2013 10:30
1010011 1000101 1011000
Avatar
Odpovídá na Homo
Luboš Běhounek Satik:17.7.2013 10:39

V C# tohle jde jednoduse s tridami Process nebo ProcessStartInfo, takze v Jave to pujde urcite nejak jednoduse taky.

Nahoru Odpovědět
17.7.2013 10:39
https://www.facebook.com/peasantsandcastles/
Avatar
Homo
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
Homo:17.7.2013 10:45

Tohle zrovna jo, protoze je to pres prikazovy radek

Process process = Runtime.getRuntime().exec(); //parametry z hlavy ted nedam :D

ale, cim vic co to bude zamerovat na jeden konkretni system tim vic to bude v Jave slozitejsi a pozdeji se bude muset vyuzivat JNI nebo JNA, ktere je mozna o neco jednodusi.

Editováno 17.7.2013 10:46
Nahoru Odpovědět
17.7.2013 10:45
1010011 1000101 1011000
Avatar
Odpovídá na Homo
Luboš Běhounek Satik:17.7.2013 10:55

Tak on C# je taky multiplatformni, dokud nevyuzijes neco, co vyuziva primo neco od OS :)

Runtime.getRuntime()

to je roztomily :D

Nahoru Odpovědět
17.7.2013 10:55
https://www.facebook.com/peasantsandcastles/
Avatar
Homo
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
Homo:17.7.2013 10:58

No, rekl bych ze trida Runtime pouziva navrhovy vzor Singleton. :-)

Nahoru Odpovědět
17.7.2013 10:58
1010011 1000101 1011000
Avatar
Odpovídá na Homo
Luboš Běhounek Satik:17.7.2013 11:03

Jj, to mi doslo, ale v C# se singleton obvykle resi malinko jinak, ten Javi zpusob jsem jeste nepotkal :)

Nahoru Odpovědět
17.7.2013 11:03
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na eviel
Kit:17.7.2013 11:06

Když se podíváš do některých systémových knihoven Javy, např. do kolekcí, tak tam těch getterů a setterů moc není. V GUI je jich však požehnaně. Settery většinou volají nějaký Observer, takže pouhé přiřazení to také není.

Nahoru Odpovědět
17.7.2013 11:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 18 zpráv z 18.