Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 12. diel - Gettery a settery v Jave

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
Posledné komentáre sú na spodnej časti poslednej stránky.
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";
Avatar
mayo505
Tvůrce
Avatar
Odpovedá 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")
Avatar
hitzoR
Člen
Avatar
Odpovedá 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í.

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)

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í.

Avatar
Odpovedá 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.
Editované
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.

Avatar
Atrament
Člen
Avatar
Odpovedá 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.

Avatar
Odpovedá 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.

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(

Posledné komentáre sú na spodnej časti poslednej stránky.
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.

Zobrazené 10 správy z 92.