tag:blogger.com,1999:blog-5197374494377847819.post4177978122240543382..comments2024-03-22T22:13:46.650+01:00Comments on Holistycznie o inżynierii oprogramowania: Telefonistka dziedziczy po telefonieSławek Sobótkahttp://www.blogger.com/profile/15082577671795313109noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-5197374494377847819.post-91740346217673549012008-08-09T21:53:00.000+02:002008-08-09T21:53:00.000+02:00Dziedziczenia używam zwykle tam, gdzie klasa ma do...Dziedziczenia używam zwykle tam, gdzie klasa ma dokładnie określoną jedną odpowiedzialność. Czyli przykładowo w strategiach... <BR/><BR/>Weźmy szkolny przykład, który jest najczęściej wypaczany: figury. Jeżeli mamy fogurę, która potrafi się narysować, policzyć swe pole itp to rysowanie powinniśmy wyenkapsulować do strategii rysowania (nazwijmy ją renderer), i to dopiero na poziomie renderea mogę bawić się w dziedziczenie po sobie jakiś renderów.<BR/><BR/>Dzięki temu:<BR/>- trzymam się LSP - rendery są używane polimorficznie, nie mam problemu (o ile projekt jest dobry) <BR/>- z niepotrzebnym bagażem klas bazowych - bo renderery są skupione na wspólnym koherentnym problemie<BR/>- problem kruchej klasy bazowej jest przynajmniej odsunięty poza stabilny interfejs renderea.<BR/><BR/>Z bardziej ogólnej perspektywy: budując nano-frameworki oparte na interfejsach możemy pozwolić sobie na dostarczanie hierarchii klas jako implementacji niektórych wyspecjalizowanych interfejsów.Sławek Sobótkahttps://www.blogger.com/profile/15082577671795313109noreply@blogger.comtag:blogger.com,1999:blog-5197374494377847819.post-36009714638258647062008-08-09T19:23:00.000+02:002008-08-09T19:23:00.000+02:00Kiedyś wydawało mi się że dziedziczenie jest dobre...Kiedyś wydawało mi się że dziedziczenie jest dobre, przydatne i fajne. Z perpektywy czasu widzę że mam coraz mniej miejsc aby je wykorzytstać. W większości przypadków prsta agregacja/kompozyja jest przejrzysta i elegancka.<BR/><BR/>Tak jak wspomniałeś, struktura klasy bazowwej to strategiczna decyzja, i uwzględniająć złożoność każdego większego projektu potencjalne zyski płynące z zastosowania dziedziczenia są dużo mniejsze niż straty (np w konsekwencji błędnej analizy). Skupienie się na zachowaniu (interfejsach), a nie strukturze obiektów pozwala poprawniej zamodelować problem.<BR/><BR/>Biedna telefonistka dziedziczy po telefonie ? No cóż, jak by szanowny wykładowca wspomnianego kandydata, wyszedł z epoki Pascala łupanego...Anonymousnoreply@blogger.com