Čada: Objektové programování

Kit

Re:Čada: Objektové programování
« Odpověď #90 kdy: 26. 06. 2015, 13:53:06 »
A) také nepotřebuje getry/setry. Pokud potřebuji mít možnost třínohého psa, ošetřím to v konstruktoru, resp. tuto kontrolu mohu vypustit. Pokud však čtyřnohému psu budu chtít nohu amputovat, místo setteru provedu chirurgický zákrok. Tedy pokud urizniNohu() nepovažuješ za setter.

Nohu neamputuješ, ty máš už nažačátku psa, kterej má 3 nohy.

Pokud mám třínohého psa, uvedu to v konstruktoru. Setter nepotřebuji.


JSH

Re:Čada: Objektové programování
« Odpověď #91 kdy: 26. 06. 2015, 13:58:42 »
V pořádku, v Haskellu i jinde to funguje, je to jen otázkou deklarace, já jsem narážel na argumenty takových, kteří považují omezení na String za dostatečnou kontrolu správnosti dat.
Pokud jste tak pochopil ten můj příspěvek, tak jste ho pochopil špatně. Typová kontrola tak, jak jsem ji popsal zhruba odpovídá "Porozumí tenhle objekt mojí zprávě?" A jestli ne, tak to zjistím už při překladu a nemusím si na to psát unit test.

Ano, silná typová kontrola komplikuje jazyk. Zároveň ale ulehčuje práci protože eliminuje kopec triviálních chyb. Nezaručí to program bez chyb, ale to snad nikdo ani netvrdí.

PeVa

Re:Čada: Objektové programování
« Odpověď #92 kdy: 26. 06. 2015, 14:04:48 »
Pokud mám třínohého psa, uvedu to v konstruktoru. Setter nepotřebuji.

Ja se nepřu, ale nepotřebuješ to uvádět ani v konstrukoru ani nepotřebuješ setter....Neboť je to úplně jedno jak je na tom pes s nohama...Jednou je to podle DNA pes a ostatní věci jsou podružné...Jestli pes může běhat je dáno jenom tím, jak je na tom momentálně s nohama...to se může pochopitelně celkem snadno měnit.


Kit

Re:Čada: Objektové programování
« Odpověď #93 kdy: 26. 06. 2015, 14:09:23 »
Pokud mám třínohého psa, uvedu to v konstruktoru. Setter nepotřebuji.

Ja se nepřu, ale nepotřebuješ to uvádět ani v konstrukoru ani nepotřebuješ setter....Neboť je to úplně jedno jak je na tom pes s nohama...Jednou je to podle DNA pes a ostatní věci jsou podružné...Jestli pes může běhat je dáno jenom tím, jak je na tom momentálně s nohama...to se může pochopitelně celkem snadno měnit.

K čemu je pak objekt, který nemá žádné atributy a nemůže tedy držet žádný stav?

PeVa

Re:Čada: Objektové programování
« Odpověď #94 kdy: 26. 06. 2015, 14:21:09 »
K čemu je pak objekt, který nemá žádné atributy a nemůže tedy držet žádný stav?

Ale ten objekt má attributy, mnoho atributů...má nohy, má uši, ocas....a spoustu dalšího...

Ano nedrží stavovou informaci....(žiji/nežiji).

Ano pokud implementuji vnitřní stavy, pak musím implementovat settery a gettery, aby vnitřní stav byl konzistentní.




Kit

Re:Čada: Objektové programování
« Odpověď #95 kdy: 26. 06. 2015, 14:36:58 »
Ano pokud implementuji vnitřní stavy, pak musím implementovat settery a gettery, aby vnitřní stav byl konzistentní.

Vnitřní stavy mohou být přece konzistentní i bez G/S. Jak mohou zajistit konzistenci? Vždyť (často zbytečně) rozšiřují rozhraní objektu. Bez G/S není možné tu konzistenci nijak ohrozit.

SB

Re:Čada: Objektové programování
« Odpověď #96 kdy: 26. 06. 2015, 15:21:02 »

To jste nevybral dobrý příklad, s tím psem: Buďto načítáte z objektové DB, pak jen replikujete již existující objekt na straně klientu, aniž byste musel něco řešit. Nebo načítáte z jiného zdroje (třeba RDB), pak je to pro vás vnější systém a objekt vzniká poprvé, je tedy třeba ověřit správnost dat pro rekonstrukci objektu, a to dle mechanismu vzniku samotného objektu např. v konstruktoru či v mapovači.