Data medzi classami – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Data medzi classami – Java – Fórum – Programujte.comData medzi classami – Java – Fórum – Programujte.com

 

Andrej
~ Anonymní uživatel
38 příspěvků
18. 8. 2015   #1
-
0
-

Mám 3 classy, v 1. vlastne ukladam data.

Vie niekto ako z classy 2 a 3 dostavat data voidmi?

Nahlásit jako SPAM
IP: 188.123.100.–
Kit+15
Guru
18. 8. 2015   #2
-
0
-

#1 Andrej
Předáš objekt s daty přes konstruktor dalšímu objektu.

Ovšem vytváření třídy, do které "vlastně ukládáš data" mi připomíná antipattern Register. Zkus zvážit, zda by se to nedalo vyřešit nějak lépe. Objekty se mají skládat z dat a metod, rozdělování do samostatných tříd je nežádoucí.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Matěj Andrle+1
Grafoman
18. 8. 2015   #3
-
0
-

#1 Andrej
No fuj. Uděláš kolekci (popřípadě jinou třídu) - ta bude obsahovat práci s daty. Její referenční hodnotu pak akorát předáš kýženým metodám/akcím/eventům... Rozhodně je naprostou prasárnou sdílet jednu třídu mezi všemi - ve formě předání do konstruktoru a následném uložení do třídní proměnné.

Nahlásit jako SPAM
IP: 78.136.180.–
Mutagen
~ Anonymní uživatel
549 příspěvků
19. 8. 2015   #4
-
0
-

Classu kde ukládáš data udělej statickou.

Nahlásit jako SPAM
IP: 212.47.26.–
Matěj Andrle+1
Grafoman
19. 8. 2015   #5
-
0
-

#4 Mutagen
No to rozhodně ne. Jak někdo může do OOP cpát statiku? Zde absolutně není potřeba. Zde vzniká referenční hodnota - instance. Tak proč si ji proboha nepředat?

Nahlásit jako SPAM
IP: 90.182.189.–
Mutagen
~ Anonymní uživatel
549 příspěvků
19. 8. 2015   #6
-
0
-

#5 Matěj Andrle
Podle toho jak se na to ptá mě přijde, že je to nějakej nováček/začátečník takže asi nemá moc znalostí s OOP. Takže jsem mu poradil přesně na to co se ptal nejjednoduší cestou kterou určitě zvládne a bude to i dělat to co chce ;)

Nahlásit jako SPAM
IP: 212.47.26.–
Matěj Andrle+1
Grafoman
19. 8. 2015   #7
-
0
-

#1 Andrej
V hlavním objektu aplikace zavoláš (vytvoříš instanci) objekt jádra aplikace. Ten si vytvoří datovou třídu a dalších X. Datovou třídu pak nacpe ostatním, anebo si ji holt uloží do třídní proměnné (ovšem do jediné třídní proměnné) a následně docpe do eventů, či tak. Každopádně Stačí si mezi třídami zasílat referenční hodnotu oné datové třídy, popř. struktury.

Nahlásit jako SPAM
IP: 90.182.189.–
Matěj Andrle+1
Grafoman
19. 8. 2015   #8
-
0
-

#6 Mutagen
Učit nováčka porušovat základní principy správného postupu? Pardon, leč musí se naučit používat objekty - instance, reference, ... To přeci nejde, že si řekneme - on to neumí, tak se to nebude učit. Neumí to - tak ať se hezky učí.

Nahlásit jako SPAM
IP: 90.182.189.–
Kit+15
Guru
19. 8. 2015   #9
-
0
-

#4 Mutagen
Statické třídy se už nedělají, protože se blbě testují.

#6 Mutagen
Nejjednodušší cesty bývají právě ty nejhorší: Vedou do pekel.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
19. 8. 2015   #10
-
0
-

Nicmene: zkusenost je NEPREDATELNA, clovek si musi nabit cumak, aby ziskal zkusenosti. Rikat mu muze kdo chce co chce, stejne to pochopi teprve az po ziskani zkusenosti.

Nahlásit jako SPAM
IP: 212.47.3.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mutagen
~ Anonymní uživatel
549 příspěvků
19. 8. 2015   #11
-
0
-

#9 Kit
Jo souhlasím, jen jak tu teď psal KIIV, potřebuje vlastní zkušenost a určitě pokud začíná hned nebude rozumnět jak instance/reference apod funguje. Sám jsem tak začínal a taky jsem postupem času co jsme se učil začal do toho pronikat, protože jsme si sám nabil čumák :)

Nahlásit jako SPAM
IP: 212.47.26.–
ondrej39+1
Věrný člen
19. 8. 2015   #12
-
0
-

#7 Matěj Andrle
Vytváření instancí objektu uvnitř objektu jiného vede k příliš těsné vazbě a je cestou do pokel skoro stejně jako používa třídy statický.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
Matěj Andrle+1
Grafoman
19. 8. 2015   #13
-
0
-

#12 ondrej39
V objektovém jazyce existují jen objekty - tak kde je chcete vytvářet? :S

Nahlásit jako SPAM
IP: 78.136.142.–
Kit+15
Guru
19. 8. 2015   #14
-
0
-

#13 Matěj Andrle
ondrej39 má zřejmě na mysli Dependency Injection, která tento problém řeší. To znamená, že vytvořím jeden objekt a následně ho vložím jako parametr konstruktoru druhého objektu. Tím mohou ty dva objekty spolu komunikovat, i když byly instanciovány nezávisle na sobě.

Andrej ty své třídy nijak nepojmenoval, takže nemohu na nic navázat, abych uvedl příklad.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Matěj Andrle+1
Grafoman
19. 8. 2015   #15
-
0
-

#14 Kit
V hlavním objektu aplikace zavoláš (vytvoříš instanci) objekt jádra aplikace. Ten si vytvoří datovou třídu a dalších X. Datovou třídu pak nacpe ostatním, anebo si ji holt uloží do třídní proměnné (ovšem do jediné třídní proměnné) a následně docpe do eventů, či tak. Každopádně Stačí si mezi třídami zasílat referenční hodnotu oné datové třídy, popř. struktury.

Kde tam vidíš ukládání proměnné z konstruktoru, anebo snad dokonce předávání referenční hodnoty do konstruktoru? Já tím myslel nacpat tu datovou do eventů/metod/... ostatních tříd.

Nahlásit jako SPAM
IP: 78.136.142.–
Kit+15
Guru
19. 8. 2015   #16
-
0
-

#15 Matěj Andrle
Vidím tam nesmysl už v druhé větě: "Objekt si vytvoří datovou třídu ..." Objekt nikdy třídy nevytváří.

Kde jsem podle tebe psal o ukládání proměnné z konstruktoru nebo předávání referenční hodnoty do konstruktoru? Bavíme se o Javě, ve které se nic takového nepoužívá.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
ondrej39+1
Věrný člen
19. 8. 2015   #17
-
+1
-
Zajímavé
Kit +

#13 Matěj Andrle
Třeba ve faktorce, že jo :).

Obecně vzato, pokud tvůj objekt potřebuje objekt jiný, tak mu ho vždycky předej (DI, jak píše Kit). Ideálně přes konstruktor, aby tvůj kýžený objekt bez nutné části nešel vytvořit.

Pokud ti má takový objekt vracet například modely, ty si můžeš faktorkou už poté z dat vytvořit. Díky faktorce máš přehled o tom, jak přesně se konkrétní (například) model vytváří, jeho tvorba je na jednom místě v kódu a údržba je snadná.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý