Citace od: Mirek Prýmek kdy 10. 09. 2015, 15:05:22...a tomu se, milé děti, říká "znovupoužitelnost kódu v OOP"
Citace od: JSH kdy 10. 09. 2015, 15:39:15To je ale překvápko. Z různých zadání vypadla různá řešení
Citace od: JSH kdy 10. 09. 2015, 15:39:15Možná jsem naivní ale mám pocit, že ta bublina nekritického obdivu OOP začíná trochu splaskávat. Jsem zvědavý, co za stříbrnou kulku přijde teď.
Citace od: Mirek Prýmek kdy 10. 09. 2015, 15:58:35Nicméně já bych se vrátil k původnímu dotazu a podpořil bych Kit-a: stude, koukni se na jazyky, kde se na dědičnost nehraje a místo toho se používají volně kombinovatelné protokoly. Největší šanci na mainstreamovost má asi Go.
Citace od: Mirek Prýmek kdy 10. 09. 2015, 15:58:35Nicméně já bych se vrátil k původnímu dotazu a podpořil bych Kit-a: stude, koukni se na jazyky, kde se na dědičnost nehraje a místo toho se používají volně kombinovatelné protokoly. Největší šanci na mainstreamovost má asi Go.Různé implementace podobného principu:Go: https://tour.golang.org/methods/5Elixir: http://elixir-lang.org/getting-started/protocols.htmlHaskell: https://www.haskell.org/tutorial/classes.htmlRust: https://doc.rust-lang.org/book/traits.html
Citace od: LSP kdy 10. 09. 2015, 16:49:42Zrovna Go to má takhle: "Dědí" se jenom interface, nejsou virtuální metody a předek tak nemůže zavolat metodu z potomka. Pomůže to k něčemu ?
Citace od: Mirek Prýmek kdy 10. 09. 2015, 17:55:02Citace od: LSP kdy 10. 09. 2015, 16:49:42Zrovna Go to má takhle: "Dědí" se jenom interface, nejsou virtuální metody a předek tak nemůže zavolat metodu z potomka. Pomůže to k něčemu ?Nedědí se nic. Předek nemůže volat metodu potomka, protože žádný předek a potomek neexistuje. Pomůže to k tomu, že se nebudou vést nekonečné debaty, jestli je čtverec potomek obdélníka nebo obdélník předem čtverce.
Citace od: Mirek Prýmek kdy 10. 09. 2015, 17:55:02Nedědí se nic. Předek nemůže volat metodu potomka, protože žádný předek a potomek neexistuje. Pomůže to k tomu, že se nebudou vést nekonečné debaty, jestli je čtverec potomek obdélníka nebo obdélník předem čtverce.
Citace od: Kit kdy 09. 09. 2015, 20:10:30Citace od: Ondra Satai Nekola kdy 09. 09. 2015, 18:25:13Projed 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.
Citace od: Ondra Satai Nekola kdy 09. 09. 2015, 18:25:13Projed si historii diskuse. Problem nastane, kdyz mas mutable objekty.
Citace od: Goheeca kdy 10. 09. 2015, 19:17:20Citace od: Kit kdy 09. 09. 2015, 20:10:30Citace od: Ondra Satai Nekola kdy 09. 09. 2015, 18:25:13Projed 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.Nebo dědit mohou, ale musí být na to objektový systém připraven, příkladem být může CLOS.
Citace od: Kit kdy 10. 09. 2015, 19:52:02Proč tady musí být zatvrzelí odpůrci versus zatvrzelí zastánci dědičnosti? Je tak těžké pochopit, že někdy se dědičnost hodí a jindy ne?
Citace od: zboj kdy 09. 09. 2015, 18:11:19Citace od: BoneFlute kdy 09. 09. 2015, 17:43:21Citace od: zboj kdy 09. 09. 2015, 14:18:07To 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.
Citace od: BoneFlute kdy 09. 09. 2015, 17:43:21Citace od: zboj kdy 09. 09. 2015, 14:18:07To 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!
Citace od: zboj kdy 09. 09. 2015, 14:18:07To je dost nesmysl, bo code reuse.
Citace od: Kit kdy 09. 09. 2015, 22:37:26Ně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.
Citace od: LSP kdy 10. 09. 2015, 21:04:47Citace od: Kit kdy 10. 09. 2015, 19:52:02Proč tady musí být zatvrzelí odpůrci versus zatvrzelí zastánci dědičnosti? Je tak těžké pochopit, že někdy se dědičnost hodí a jindy ne? Protože code reuse. Mít čtyři různé objekty je teoreticky správné, ale prakticky nežádoucí a kontraproduktivní. Stejně ty čtyři různé objekty budou jenom boiler plate pro volání funkcí společných pro všechny čtyři varianty.
Citace od: BoneFlute kdy 10. 09. 2015, 21:11:04Přesně! Tady nejde o zatvrzelé odpůrce dědičnosti, ale o zatvrzelé zastánce dědičnosti pro nevhodná použití. Dědičnost na code reuse se používá proto, že máme blbý jazyky, který to lépe neuměj.