Diskuze: gettery

Java Java gettery

Avatar
eviel
Člen
Avatar
eviel:

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
Redaktor
Avatar
Odpovídá na eviel
Kit:

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  +1 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:

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
Redaktor
Avatar
Odpovídá na eviel
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na eviel
David Čápka:

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

Nahoru Odpovědět 16.7.2013 17:18
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na eviel
Kit:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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

Nahoru Odpovědět  -1 16.7.2013 17:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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  +1 16.7.2013 17:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
tastyfish
Redaktor
Avatar
tastyfish:

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  +1 17.7.2013 8:58
škoda mluvit
Avatar
eviel
Člen
Avatar
eviel:

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):

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  +1 17.7.2013 10:23
:)
Avatar
Homo
Člen
Avatar
Odpovídá na eviel
Homo:

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):

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
:)
Avatar
Homo
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Homo:

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):

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
:)
Avatar
Homo
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Homo:

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):

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
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na eviel
Kit:

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.