Omezená dědičnost (je něco lepšího než OOP?)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #75 kdy: 09. 09. 2015, 18:11:19 »
To je dost nesmysl, bo code reuse.

Prakticky každá firma (co jsem viděl), která měla zoufale neudržitelný kód ho měla zoufalí proto, že dědily kůli code reuse. Takže za mě fakt ne!

To je lidma, ne děděním.


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #76 kdy: 09. 09. 2015, 18:12:30 »
@zboj
urcite nie
behavior fail

Určitě jo. V tomto případě to ani není težké na pochopení.

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #77 kdy: 09. 09. 2015, 18:25:13 »
@zboj
urcite nie
behavior fail

Určitě jo. V tomto případě to ani není težké na pochopení.

Projed si historii diskuse. Problem nastane, kdyz mas mutable objekty.

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #78 kdy: 09. 09. 2015, 18:29:36 »
@zboj
urcite nie
behavior fail

Určitě jo. V tomto případě to ani není težké na pochopení.

Dokonce koukam, ze to je defaultni priklad na wikipedii: https://en.wikipedia.org/wiki/Liskov_substitution_principle#A_typical_violation

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #79 kdy: 09. 09. 2015, 18:34:03 »
@zboj
urcite nie
behavior fail

Určitě jo. V tomto případě to ani není težké na pochopení.

Projed si historii diskuse. Problem nastane, kdyz mas mutable objekty.

To ale platí obecně, nesouvisí to se čtvercema a obdélníkama.


Kit

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #80 kdy: 09. 09. 2015, 20:10:30 »
Projed si historii diskuse. Problem nastane, kdyz mas mutable objekty.

To je vše o tom, že si někdo myslí, že čtverec je obdélník. Když pak zjistí, že některé vlastnosti na to nepasují, zavrhne dědění jako celek - s vaničkou vyleje i dítě. Přitom kdyby neudělal chybu v počátečním předpokladu, že čtverec == obdélník, tak by věděl, že tyto dvě třídy od sebe dědit nemohou.

Takže dědičnost je nutné používat tam, kde má smysl a nepoužívat tam, kde smysl nemá. Bez dědičnosti by naše aplikace v OOP byly mnohonásobně delší. A ten kdo tvrdí, že dědičnost nepoužívá, ji používá neustále.

LSP

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #81 kdy: 09. 09. 2015, 22:16:28 »
Přitom kdyby neudělal chybu v počátečním předpokladu, že čtverec == obdélník, tak by věděl, že tyto dvě třídy od sebe dědit nemohou.

Bez problémů mohou, ve čtverci se napíše nový konstruktor a dva settery a vyřešeno. Problém s tím má pouze Barbara Liskov a pár teoretiků k tomu :)

Kit

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #82 kdy: 09. 09. 2015, 22:37:26 »
Přitom kdyby neudělal chybu v počátečním předpokladu, že čtverec == obdélník, tak by věděl, že tyto dvě třídy od sebe dědit nemohou.

Bez problémů mohou, ve čtverci se napíše nový konstruktor a dva settery a vyřešeno. Problém s tím má pouze Barbara Liskov a pár teoretiků k tomu :)

Někteří diskutující by z obavy před porušením LSP nejraději tyhlety dědičnosti úplně zakázali a vyhodili z OOP.

perceptron

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #83 kdy: 09. 09. 2015, 23:09:14 »
@zboj
ja to lsp potom nechapem. vyjasni mi to:-) dik

LSP

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #84 kdy: 10. 09. 2015, 08:31:53 »
Někteří diskutující by z obavy před porušením LSP nejraději tyhlety dědičnosti úplně zakázali a vyhodili z OOP.

Dědičnost objektů je nutná nikoliv postačující podmínka existence OOP. Nutný důsledek z toho je, že někteří diskutující vůbec nemají rádi OOP :) To jsme ale věděli dlouho ...

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #85 kdy: 10. 09. 2015, 10:27:04 »
Někteří diskutující by z obavy před porušením LSP nejraději tyhlety dědičnosti úplně zakázali a vyhodili z OOP.

Dědičnost objektů je nutná nikoliv postačující podmínka existence OOP. Nutný důsledek z toho je, že někteří diskutující vůbec nemají rádi OOP :) To jsme ale věděli dlouho ...

Neni to nutna podminka. Muzes mit trebas OOP postavene na prototypech (nejsem fanda, ale reseni to je).

LSP

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #86 kdy: 10. 09. 2015, 13:25:12 »
Neni to nutna podminka. Muzes mit trebas OOP postavene na prototypech (nejsem fanda, ale reseni to je).

Prototypy umožňují dědičnost z principu, byť je k dědění nutná rozsáhlá ruční práce.
Jazyk kde dědičnost opravdu není je hypotetická Java bez keyword extends.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #87 kdy: 10. 09. 2015, 14:19:53 »
Neni to nutna podminka. Muzes mit trebas OOP postavene na prototypech (nejsem fanda, ale reseni to je).

Prototypy umožňují dědičnost z principu, byť je k dědění nutná rozsáhlá ruční práce.
Jazyk kde dědičnost opravdu není je hypotetická Java bez keyword extends.

Samotné implements je taky dědičnost, byť trochu jiná.

Kit

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #88 kdy: 10. 09. 2015, 14:20:43 »
Neni to nutna podminka. Muzes mit trebas OOP postavene na prototypech (nejsem fanda, ale reseni to je).

Prototypy umožňují dědičnost z principu, byť je k dědění nutná rozsáhlá ruční práce.
Jazyk kde dědičnost opravdu není je hypotetická Java bez keyword extends.

Mýlíš se. Dědičnost v Javě funguje i bez extends. Každá třída má předka.

Re:Omezená dědičnost (je něco lepšího než OOP?)
« Odpověď #89 kdy: 10. 09. 2015, 15:05:22 »
Jinak bude vypadat objektový návrh v C++, jinak v Javě, jinak v Pythonu, jinak ve Smalltalku, jinak pro účely grafické, jinak pro účely matematické, jinak pro účely čmárání po obrazovce myší, jinak pro účely vykreslení něčeho plottrem, jinak pro účely algebraické, jinak pro účely geometrické a docela jinak, pokud by se mělo všechno výše uvedené nějak skloubit dohromady. A pak přijde někdo s požadavkem doplnění sférické geometrie a další bude chtít diferenciální a uvidíte, jak jste v ...
...a tomu se, milé děti, říká "znovupoužitelnost kódu v OOP" :)