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 11 - Gettery a settery v Javě

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
ostrozan
Tvůrce
Avatar
ostrozan:17.4.2016 7:51

Když už se tu tak pěkně propírá ternární operátor tak dodám, že kromě if-else umí nahradit i switch

String size
        = (x >= 1000) ? "Big"
        : (x >= 500) ? "Medium"
        : (x >= 100) ? "Small"
        : (x > 10) ? "Smallest"
        : "None";
 
Odpovědět
17.4.2016 7:51
Avatar
mayo505
Tvůrce
Avatar
Odpovídá na hitzoR
mayo505:17.4.2016 11:33

chápeš ten operátor dobre, ale ten príklad čo napísal František a ja, sa uzátvorkuje inak ako si myslíš

pohlavi = muz ? "muž" : "žena"

sa uzátvorkuje ako

pohlavi = (muz ? "muž" : "žena")

Kde premenná muz je už tá podmienka, lebo je typu boolean. Dalo by sa to zapísať aj takto

pohlavi = (muz == true ? "muž" : "žena")
 
Odpovědět
17.4.2016 11:33
Avatar
hitzoR
Člen
Avatar
Odpovídá na mayo505
hitzoR:17.4.2016 12:18

Jasně, takhle se závorkama mi to smysl dává, ale ten původní příklad, který sem házel Kit mi přišel dost zvláštní.

 
Odpovědět
17.4.2016 12:18
Avatar
Debrax
Člen
Avatar
Debrax:26.4.2016 10:49

len drobný preklep - 2x setter
(za předpokladu, že setter nebo setter nemá nějakou další logiku)

 
Odpovědět
26.4.2016 10:49
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:10.6.2016 3:38

I když souhlasím s autorem, že nemá cenu pohlaví měnit, schválně jsem si tam setter přidal dodatečně. Pochopitelně se dopsal až na konec třídy a nepochopitelně to funguje. Jak to?
Když návrat řetězce je psán už před tím a getter taky. Vlastně všechny gettery se přidávají před settery. Přece nejdřív píšu do proměnných hodnotu a pak čtu proměnné .... .
Prosím pomožte staré struktuře pochopit nové objektové myšlení.

 
Odpovědět
10.6.2016 3:38
Avatar
Odpovídá na Nezmar Hydra
Robert Michalovič:10.6.2016 7:02

Špatně to chápeš.

  1. Jedná se o metody - pořadí jak jsou programovány či umístěny v kódu(v třídě) je naprosto irelevatní na běh programu (až na specifické případy např. statický cyklus, či jisté anotace v Java EE při běhu EE aplikací)
  2. Všechny metody jsou instační(objektové) takže nejdříve musíš vytvořit objekt což vytvoří konstruktor a ten provede vložení údajů. Teprve poté jsou ti dané metody k dispozici. Pokud by samozřejmě nedošlo k vytvoření údajů přes konstruktor, gettery vrátí null nebo hodí vyjímku. Schopností programátora je samozřejmě této situaci předcházet. Nemá umožnit získání údajů dříve než jsou vloženy.
  3. Pokud pořád tomu nerozumíš, CTRL+C a CTRL+V hod sem tvůj kód na kterém jsi to testoval a vysvětlíme si to řádek po řádku.
Editováno 10.6.2016 7:04
 
Odpovědět
10.6.2016 7:02
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:10.6.2016 15:56

Děkuji za pomoc. Ano špatně to chápu. Prostě si nedovedu představit jak ten program běží, když je irelevantí pořadí metod. Doteď jsem programoval jen strukurově ve VB a assembler PIC.
Představoal jsem si to tak, že když mám požadavek na objekt, stejně ho to sjede od zhora dolů a provede změny v proměnných.
Teď to vidím tak, že se provedou pouze ty změny s čím je proměnné svázána. Tedy jak jsem nastavil spojovací rouru, vstupní kohoutky ( settery) a výpustě (getery) Je to tak?
Pohraju si s programem v debugeru, nasázim si tam stopky a třeba to pochopim až řádek po řádku.

 
Odpovědět
10.6.2016 15:56
Avatar
Atrament
Člen
Avatar
Odpovídá na Nezmar Hydra
Atrament:11.6.2016 0:34

Ale tohle není strukturové programování, tohle je objektové programování, třída se neprovádí řádek po řádku od shora dolů, slouží k vytváření objektů, a na těch objektech se taky nevolají všechny metody jedna za druhou, ale voláš pouze ty, které potřebuješ volat. Settery se nevolají automaticky, jestli jsi to teda pochopil takto, ty voláš sám, když chceš nějaký atribut změnit.

 
Odpovědět
11.6.2016 0:34
Avatar
Odpovídá na Nezmar Hydra
Robert Michalovič:11.6.2016 7:52

No ten "požadavek na objekt "neexistuje"( tvz. metody se nemohou sami zavolat, až na specifické případy listenerů na objekt v GUI či JavaBeans). Ale tu myšlenku aplikuj na tu metodu. Objekt zavolá metodu a v té metodě to běží jak si představuješ. Tam už samozřejmě pořadí příkazů(instrukcí) hraje roli tvz. běží od vrchu dolů jak byli naprogramovány. Např. pokud bys měl metodu(vnitřní) v metodě(vnější). Tak samozřejmě běží nejdříve příkazy v metodě vnější než narazí na zavolání metody vnitřní kde se program vydá cestou příkazů té vnitřní. Samozřejmě se nejdříve dokončí ta vnitřní metoda až poté se dokončí ta vnější. ( toto opět nemusí platit pokud využíváš vlákna - to už je kapitola sama o sobě).

Na tyto věci nefunguje žádný rychlokurz, chce to svůj čas stovky, tisíce hodin programování než se ti to dostane pod kůži. Návody zde na webu nejsou vůbec špatné ale kniha pomůže taky dost.

 
Odpovědět
11.6.2016 7:52
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:19.6.2016 0:35

knihu už mám, ale stejně mi to pod kůži nějak neleze :o(

 
Odpovědět
19.6.2016 0:35
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 89.