NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
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 1 - Úvod do objektově orientovaného programování 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
Zdenek
Člen
Avatar
Zdenek:21.6.2018 0:13

Diky za clanek

 
Odpovědět
21.6.2018 0:13
Avatar
Feri Laky
Člen
Avatar
Feri Laky:20.1.2019 15:22

Jsem rád, že jsem tohle začal číst - mám Pecinovského, pod kterým jsem začal kolem 1990 Pascal a posílali jsme takové ty vyřezávané pásy papíru, kde správné odpovědi se vystřihovaly nůžkami v binárním kódu.Bohužel rozpadem Československa všechno skončilo - chyběl mi k získání "diplomu" jeden rok.
Je výborná možnost porovnat výklad OOP zde a Pecinovského - pouze začnu - ale už teď díky za články p.Čápka (promiň Davide - zapoměl jsem, že se tady tyká :-)))

 
Odpovědět
20.1.2019 15:22
Avatar
Leona Koubková:1.5.2019 9:31

Perfektně vysvětleno, díky moc za super článek :)

 
Odpovědět
1.5.2019 9:31
Avatar
Gemy
Člen
Avatar
Gemy:8.5.2020 19:45

Mám OTÁZKU: Kdy mám použít jinou třídu jako atribut a kdy ji mám vložit do metody? Uvedu příkladu. Mám vedle main a 2 další třídy s toho druhá se jmenuje Trida tu chci vyvolat v té třetí.
Kdy použiji třídu jako atribut.

private Trida trida;

Kdy použiji třídu v metodě?

public void Metoda(Trida trida);

Děkuji všem za cenné rady. :)

Odpovědět
8.5.2020 19:45
Člověk stvořil logiku, a proto jedná v afektu.
Avatar
Lukáš Hornych
Tvůrce
Avatar
Odpovídá na Gemy
Lukáš Hornych:8.5.2020 21:20

Záleží jestli s tou jednou instancí "trida" mají pracovat (a mít k ní přistup) všechny metody v té třídě nebo jen ta jedna konkrétní. Obecně jako atributy třídy se většinou používají nějaké servisní třídy (ty které ti zpostředkovávají nějaké další operace a instance v průběhu života třídy se nemění) a jako parametry metody spíše nějaké datové třídy, které jsou např.: potřebné pro nějaké výpočty v té dané metodě nebo instance té třídy v parametru je potřebná jen pro tu danou metodu.

 
Odpovědět
8.5.2020 21:20
Avatar
Josef Nosek
Člen
Avatar
Josef Nosek:3.11.2020 14:28

Java je objektově intuitivní, vede programátora pro použití objektů. Pascal, C atd. objekty nemají, ale použití procedur a funkcí se objektovému programování dost podobá.
Jasně že OOP je lepší, přehlednější, avšak jde více o evoluci než o revoluci.
Není pravda, že program napsaný třeba v Pascalu, C nebo Algolu je časem tak složitý, že se takřka nedá udržovat a rozšiřovat. Základem slušného programátora v procedurálním strukturovaném jazyce je důsledně použití struktur programu. Například funkce i procedury obsahují neveřejné proměnné, konstanty, další (vnořené, neveřejné) funkce a procedury stejně jako obsahují objekty při OOP. Stejně tak se nepoužívali jen globální proměnné, těch naopak mělo být co nejméně, hodnoty se předávali odkazem či hodnotou.
Jenže, co je to platné, když programátor je čuně, tak mu sebelepší nástroj nepomůže udržet program přehledný a efektivní :D.
Programátor při psaní v OOP nemusí tolik myslet, musí ale mít lepší paměť :).

 
Odpovědět
3.11.2020 14:28
Avatar
Adam Pospíšek:16.11.2020 14:14

Super, dík za článek!

Odpovědět
16.11.2020 14:14
Vždy to jde
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Feri Laky
Lubor Pešek:15.3.2021 16:10

I Pecinovský učí OOP - já osobně jsem se to naučil právě od něj.

Odpovědět
15.3.2021 16:10
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
Lubor Pešek
Člen
Avatar
Odpovídá na Lukáš Hornych
Lubor Pešek:15.3.2021 16:20

To je blbost. Důležité je zaměřit se, jakou instanci chceš - jedináčka, či novou instanci.
Může být případ, kdy s instancí jedné třídy pracuje více metod. Nebo si kupříkladu chceš uchovat odkaz na jedináčka.
I třeba při práci s frameworkem většinou autowired-uješ celý objekt v deklaraci atributů. Zatím jsem viděl pár případů, kdy se přímo používal autowired jen pro přístupovou metodu.

Záleží tedy, kolik metod pracuje s tím objektem. Pokud jedna, tak ok, ať se použije jako parametr. Ale jinak často bude používat objekty jako atributy. Případně si některé objekty z knihoven bude vytvářet lokálně.

Pokud nějaký objekt použije pouze dočasně a ví o tom, tak je zase blbost ho cpát mezi atributy třídy a zatěžovat tak zbytečně místo v paměti.

No a ještě je tu třetí případ, ale ten se dneska už také moc nepoužívá (zvlášť díky rest/soap službám a efektivity jsonu) Messenger (přepravka). Návrhový vzor, který představovala instance třídy, která právě šetřila vypisování parametrů. Výhodou toho byl i fakt, že pokud se jako parametr předával takovýto objekt, tak nebylo nutné předávat úplně všechny hodnoty + dalo se využít stejné instance, takže předávání zpráv bylo efektivnější. Ale jak říkám, messenger už není tak častým případem, ale tu a tam na něj ještě narazíš.

Editováno 15.3.2021 16:21
Odpovědět
15.3.2021 16:20
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
Lukáš Hornych
Tvůrce
Avatar
Odpovídá na Lubor Pešek
Lukáš Hornych:15.3.2021 19:40

To co píšeš v prvním 3 odstavcím odpovídá tomu co jsem psal já, akorát detailněji popsané.

 
Odpovědět
15.3.2021 19:40
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 54.