Abstrakce u OOP

Ink

  • *****
  • 667
    • Zobrazit profil
    • E-mail
Re:Abstrakce u OOP
« Odpověď #135 kdy: 14. 06. 2020, 09:06:50 »
Inheritance, if you look at it with a very jaded eye, inheritance is the declaration of methods and variables in a subscope and it has nothing to do with ISA whatever. :)
Je to o úhlu pohledu. Tohle má moje větší sympatie.

Ano, tenhle pohled dělá z dogmatického přístupu k OOP ("modelování reálného světa" typu "kameni, leť!") inženýrský přístup.


Re:Abstrakce u OOP
« Odpověď #136 kdy: 14. 06. 2020, 12:44:44 »
a ze pak lze vytvaret hierarchii potomku a usetrit si tak psani kodu.
Code reuse dědičností se považuje za antipattern.
Inheritance, if you look at it with a very jaded eye, inheritance is the declaration of methods and variables in a subscope and it has nothing to do with ISA whatever. :)
Je to o úhlu pohledu. Tohle má moje větší sympatie.
Vsak to IS-A v OOP světě znamená kompatibilní parametry, návratové hodnoty a invarianty. Tvrzení o nějakých zásadních podobnostech s objekty reálného světa patří tak do říše pohádek pro korporátní konzultanty.

Pokud má předek smysl sám o sobě, tak by potomek neměl nějak zákeřně měnit chování. To vlastně nevychází přímo z dědičnosti. Je to IMO důsledek nenápadného implicitního přetypování. Pokud toho přetypování dosáhnu jinak (třeba operátorem přetypování v c++), tak mám vlastně úplně stejnou situaci.