Mám 3 classy, v 1. vlastne ukladam data.
Vie niekto ako z classy 2 a 3 dostavat data voidmi?
#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í.
#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é.
#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.
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.
#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 :)
#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.
#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.
#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á.
#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á.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku