Dědičnost dnes

SB

Re:Dědičnost dnes
« Odpověď #135 kdy: 18. 01. 2017, 11:01:41 »
Že mají třeba 5 atributů stejných a dva jiné :) Takže jsou v podstatě stejné, ale "nedává" smysl je modelovat dohromady. Zase z hlediska údržby chce člověk mít co nejvíce společného.

Tak jestli mají stejné nějaké vlastnosti, ale jejich chování je jiné, pak spolu nesouvisejí. Nebo třeba sdílejí společné stavy, které je třeba vyčlenit do jiné třídy.

Pak přichází na řadu ukládání. Radši bych to ukládal úplně stejně pro obě. Ono každé má něco a chápu, že neexistuje jen jedno řešení. Takže tvůj nápad je mít zvášť třídy, zvlášt služby a třeba zvlášť ukládání. Což bude asi docela dost duplicity. Pokud tomu dobře rozumím.

Když budete ukládat pouze stavy (typické pro dnešní DB) stejného formátu různých tříd jedním ukládačem, tak je to 1. systematická chyba, 2. se vám to při jakékoliv změně jedné ze tříd rozesere. Takže každá třída svoje.
Služba je buďto vlastností objektu, nebo patří jinam, pak je třeba si ještě uvědomit závislost co na čem.
Ukládání (persistence) modelu (objektu) je VŽDY extra, protože s modelem nesouvisí - lze přece ukládat na různá zařízení (DB, soubor, HTTP, paměť(!), ...), na víc současně nebo to za běhu prohazovat...


spasitel

Re:Dědičnost dnes
« Odpověď #136 kdy: 18. 01. 2017, 12:42:27 »
nejlepsi OOP jazyk je beztak C#. nevim co tady porad resite

Časná vazba, podtypový polymorfismus, dědičnost v třídách pouze na instanční straně, vynucené volání super v konstruktorech, implicitně nevirtuální metody (OOP pojem nevirtuální nezná, protože nedává smysl), poměrně komplikovaná syntraxe, porušení zapouzdření mezi instancemi téže třídy...

To pálím jen tak z hlavy...
no jo to palite, ale asi slepima. ono jako jo, mozna jsou i lepsi OOP jazyky (Smalltalk), jenom C#, Java, C++, vyuziva vetsina vyvojaru, takze o cem je rec? hlavni je, nech je kod citelnej a dobre udrzovatelnej. nemusi se striktne dodrzovat pravidla. jako v teoreticke rovine si muzete tady na rootu pokecat, to je tak vse.

balki

Re:Dědičnost dnes
« Odpověď #137 kdy: 18. 01. 2017, 13:08:00 »
Tam, kde ste to vytrhli, som pisal o zneuzivani dedicnosti ako nastroja na odstranenie opakovania kodu.  Nepisal som nic o dedicnosti. Casting je v OOP jedna z moznosti vyuzitia polymorfizmu. Ako odkaz odporucam http://www.lmgtfy.com/?q=oop+casting

Vy jste zmatkař. Přepokládám, že jste chtěl napsat, že dědičnost se používá pro realizaci podtypového polymorfismu u jazyků s časnou vazbou, kde přetypování je způsobem sdělení překladači očekávané třídy instance, aby to vůbec mohl zavolat, protože se nepoužívá zasílání zpráv, ale přímé volání. Je to tak?

Pekne ste to povedali, ale ani prd vam nerozumiem a to mam takmer doktorat.

milan:1

Re:Dědičnost dnes
« Odpověď #138 kdy: 18. 01. 2017, 13:35:24 »
ked je tu tato tema, tak sa spytam, ako by ste riesili nasledujucu situaciu:

mate viacero obrazoviek a kazda ma vlastnu triedu. na hociakej obrazovke moze prist callback ConnectionChanged a vy nan potrebujete reagovat. Riesili by ste to ze, spravite base triedu a kazdu triedu pre danu obrazovku odvodite od tejto base triedy? alebo by ste v kazdej obrazovkovej triede implementovali logiku, v podstate vsade tu istu, ked by sa vyvolalo ConnectionChanged?

balki

Re:Dědičnost dnes
« Odpověď #139 kdy: 18. 01. 2017, 13:45:28 »
ked je tu tato tema, tak sa spytam, ako by ste riesili nasledujucu situaciu:

mate viacero obrazoviek a kazda ma vlastnu triedu. na hociakej obrazovke moze prist callback ConnectionChanged a vy nan potrebujete reagovat. Riesili by ste to ze, spravite base triedu a kazdu triedu pre danu obrazovku odvodite od tejto base triedy? alebo by ste v kazdej obrazovkovej triede implementovali logiku, v podstate vsade tu istu, ked by sa vyvolalo ConnectionChanged?

Na  by bolo velmi vyhodne pouzit traity tak, ako su implementovane v scale. Tu spolocnu logiku by som tam "prilepil", aby zbytocne nezatazovala hierarchiu dedicnosti.  Ak by neboli traity, riesil by som to podla situacie.


Polymath

Re:Dědičnost dnes
« Odpověď #140 kdy: 18. 01. 2017, 13:46:20 »
Tam, kde ste to vytrhli, som pisal o zneuzivani dedicnosti ako nastroja na odstranenie opakovania kodu.  Nepisal som nic o dedicnosti. Casting je v OOP jedna z moznosti vyuzitia polymorfizmu. Ako odkaz odporucam http://www.lmgtfy.com/?q=oop+casting

Vy jste zmatkař. Přepokládám, že jste chtěl napsat, že dědičnost se používá pro realizaci podtypového polymorfismu u jazyků s časnou vazbou, kde přetypování je způsobem sdělení překladači očekávané třídy instance, aby to vůbec mohl zavolat, protože se nepoužívá zasílání zpráv, ale přímé volání. Je to tak?

Pekne ste to povedali, ale ani prd vam nerozumiem a to mam takmer doktorat.
Doktorát z čeho? Historie "starých Slováků"? Podle toho, jak tu trolíš, nemáš ani základku a někde v Horních Uhrách se opíráš o lopatu a v jednom kuse nasáváš borovičku. Tak nás všechny ušetř těch kravin a dej si odchod.

milan:1

Re:Dědičnost dnes
« Odpověď #141 kdy: 18. 01. 2017, 13:49:49 »
ked je tu tato tema, tak sa spytam, ako by ste riesili nasledujucu situaciu:

mate viacero obrazoviek a kazda ma vlastnu triedu. na hociakej obrazovke moze prist callback ConnectionChanged a vy nan potrebujete reagovat. Riesili by ste to ze, spravite base triedu a kazdu triedu pre danu obrazovku odvodite od tejto base triedy? alebo by ste v kazdej obrazovkovej triede implementovali logiku, v podstate vsade tu istu, ked by sa vyvolalo ConnectionChanged?

Na  by bolo velmi vyhodne pouzit traity tak, ako su implementovane v scale. Tu spolocnu logiku by som tam "prilepil", aby zbytocne nezatazovala hierarchiu dedicnosti.  Ak by neboli traity, riesil by som to podla situacie.
dajme tomu ze to riesime v C#

balki

Re:Dědičnost dnes
« Odpověď #142 kdy: 18. 01. 2017, 13:53:11 »
Tam, kde ste to vytrhli, som pisal o zneuzivani dedicnosti ako nastroja na odstranenie opakovania kodu.  Nepisal som nic o dedicnosti. Casting je v OOP jedna z moznosti vyuzitia polymorfizmu. Ako odkaz odporucam http://www.lmgtfy.com/?q=oop+casting

Vy jste zmatkař. Přepokládám, že jste chtěl napsat, že dědičnost se používá pro realizaci podtypového polymorfismu u jazyků s časnou vazbou, kde přetypování je způsobem sdělení překladači očekávané třídy instance, aby to vůbec mohl zavolat, protože se nepoužívá zasílání zpráv, ale přímé volání. Je to tak?

Pekne ste to povedali, ale ani prd vam nerozumiem a to mam takmer doktorat.
Doktorát z čeho? Historie "starých Slováků"? Podle toho, jak tu trolíš, nemáš ani základku a někde v Horních Uhrách se opíráš o lopatu a v jednom kuse nasáváš borovičku. Tak nás všechny ušetř těch kravin a dej si odchod.

Odbor softverove inzinierstvo, zoberal som sa symetrickym aspektovo-orientovanym programovanim. Vy nadavate ako xenofobny dlazdic ;)  Osobne nemam len rad ludi, co sa premudrelo vyjadruju, aby robili dojem, a pritom povedia to iste. To je cele.

gll

Re:Dědičnost dnes
« Odpověď #143 kdy: 18. 01. 2017, 13:55:14 »
Tam, kde ste to vytrhli, som pisal o zneuzivani dedicnosti ako nastroja na odstranenie opakovania kodu.  Nepisal som nic o dedicnosti. Casting je v OOP jedna z moznosti vyuzitia polymorfizmu. Ako odkaz odporucam http://www.lmgtfy.com/?q=oop+casting

Vy jste zmatkař. Přepokládám, že jste chtěl napsat, že dědičnost se používá pro realizaci podtypového polymorfismu u jazyků s časnou vazbou, kde přetypování je způsobem sdělení překladači očekávané třídy instance, aby to vůbec mohl zavolat, protože se nepoužívá zasílání zpráv, ale přímé volání. Je to tak?

Pekne ste to povedali, ale ani prd vam nerozumiem a to mam takmer doktorat.

Možná doktorát z nějaké pseudovědy. Napadáte kde co bez nějakého racionálního odůvodnění.

balki

Re:Dědičnost dnes
« Odpověď #144 kdy: 18. 01. 2017, 13:58:21 »
Tam, kde ste to vytrhli, som pisal o zneuzivani dedicnosti ako nastroja na odstranenie opakovania kodu.  Nepisal som nic o dedicnosti. Casting je v OOP jedna z moznosti vyuzitia polymorfizmu. Ako odkaz odporucam http://www.lmgtfy.com/?q=oop+casting

Vy jste zmatkař. Přepokládám, že jste chtěl napsat, že dědičnost se používá pro realizaci podtypového polymorfismu u jazyků s časnou vazbou, kde přetypování je způsobem sdělení překladači očekávané třídy instance, aby to vůbec mohl zavolat, protože se nepoužívá zasílání zpráv, ale přímé volání. Je to tak?

Pekne ste to povedali, ale ani prd vam nerozumiem a to mam takmer doktorat.

Možná doktorát z nějaké pseudovědy. Napadáte kde co bez nějakého racionálního odůvodnění.

Skor to citim naopak. Uz urcite viete, ze pseudoveda a viete co som povedal, aj ked vytrhavate z kontextu.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re:Dědičnost dnes
« Odpověď #145 kdy: 18. 01. 2017, 14:07:42 »
Doufám, že to sem nikdo nedal (nepročet jsem vše), ale nabídnu jiný pohled na čtverec a obdélník:

Obdélník je speciální typ čtverce, protože je to čtverec, který umí totéž, co čtverec, ale navíc umí měnit poměr svých stran.

A teď mě sežerte :-)

milan:1

Re:Dědičnost dnes
« Odpověď #146 kdy: 18. 01. 2017, 14:11:36 »
ked je tu tato tema, tak sa spytam, ako by ste riesili nasledujucu situaciu:

mate viacero obrazoviek a kazda ma vlastnu triedu. na hociakej obrazovke moze prist callback ConnectionChanged a vy nan potrebujete reagovat. Riesili by ste to ze, spravite base triedu a kazdu triedu pre danu obrazovku odvodite od tejto base triedy? alebo by ste v kazdej obrazovkovej triede implementovali logiku, v podstate vsade tu istu, ked by sa vyvolalo ConnectionChanged?
??

a co poviete na tuto knizku? oplati sa?
https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?s=books&ie=UTF8&qid=1484744799&sr=1-1&keywords=object+oriented+programming

Polymath

Re:Dědičnost dnes
« Odpověď #147 kdy: 18. 01. 2017, 14:14:05 »
Doufám, že to sem nikdo nedal (nepročet jsem vše), ale nabídnu jiný pohled na čtverec a obdélník:

Obdélník je speciální typ čtverce, protože je to čtverec, který umí totéž, co čtverec, ale navíc umí měnit poměr svých stran.

A teď mě sežerte :-)
To je blbost. Každý čtverec je obdélník, ale ne naopak.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re:Dědičnost dnes
« Odpověď #148 kdy: 18. 01. 2017, 14:15:47 »
Ano? Každý čtverec je prostorový útvar, jehož obsah jde parametrizovat pomocí dvou NEZÁVISLÝCH proměnných? Protože to přesně obdélník (MIMO JINÉ) je...


balki

Re:Dědičnost dnes
« Odpověď #149 kdy: 18. 01. 2017, 14:15:50 »
ked je tu tato tema, tak sa spytam, ako by ste riesili nasledujucu situaciu:

mate viacero obrazoviek a kazda ma vlastnu triedu. na hociakej obrazovke moze prist callback ConnectionChanged a vy nan potrebujete reagovat. Riesili by ste to ze, spravite base triedu a kazdu triedu pre danu obrazovku odvodite od tejto base triedy? alebo by ste v kazdej obrazovkovej triede implementovali logiku, v podstate vsade tu istu, ked by sa vyvolalo ConnectionChanged?
??

a co poviete na tuto knizku? oplati sa?
https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?s=books&ie=UTF8&qid=1484744799&sr=1-1&keywords=object+oriented+programming

Urcite sa oplati. Tu knizku je vhodne citat tak, ze sa clovek uci principy vzorov a nie rovno tie implementacie.  A tiez kriticky treba si zhodnotit, ci vzory uz nie su implementovane nejakymi konstrukciami priamo v jazyku.

Pre vasu otazku je tam vzor observer.