Jarosław
Żeliński
Analityk i
Projektant Systemów
Temat: Częste błędy na diagramach UML dziedziczenie i użycie
Jakub W.:co to jest "czyste OOP"?
To takie bez np. "friend class" z C++ (mechanizmów dzięki którym można emulować dziedziczenie).
języki programowanie są implementacją "czystego idealnego OOAD" a nie odwrotnie
czyli jest to tylko zabieg czysto techniczny (reużycie kody) a nie analityczno projektowy
Ciekawe pytanie.
Nie wiem jakie były motywy twórcy OOP kiedy "tworzył" dziedziczenie...
gdybym miał strzelać - na pewno chciał osiągnąć reusing, izolowanie działającego kodu... czy chciał usprawnić modelowanie, tego nie wiem :)
dziedziczenie (jak i model klas) to klasyfikacja, pierwsza (to chciał osiągnąć autor) była w biologii, wiec dziedziczenie to wyłącznie uogólnienie lub specjalizacja (kwestia kierunku), implementacja dziedziczenia w językach programowania to między innymi reużycie kodu.... jednak formalnie dziedziczenie to domena modeli pojęciowych a nie modeli struktury
BTW: drzewo, jako rodzaj grafu, jest najłatwiejsze w analizie.żartujesz :)
to jaka klasa grafów jest prostsza w analizie ? :-)
grafów nie, tablice decyzyjne są szybsze od drzew bo wykonywane są w jednym kroku (podobnie jak transformata Fouriera) ....
mediator ma pewna odpowiedzialność, której nie maja klasy łączone mediatorem, podobni jak fasada czy adapter
Mimo to wciąż uważam, że jedynym sposobem na usunięcie zależności między klasami jest ich przeprojektowanie.
bardzo często tworzenie dodatkowych zależności (nowych klas) ma głęboki sens, bo "wyciąga" nadmiarowe odpowiedzialności z klas o "czystej funkcjonalności"...
Wprowadzenie nowej klasy niczego nie zmienia - te klasy dalej od siebie zależą, tyle że część logiki została wydzielona do osobnego komponentu (w sumie to nawet zabawny zabieg - projekt bez mediatora jest zły, więc wystarczy okroić istniejące klasy i z tych "cześci" zrobić nową).
wprowadzenie nowej klasy zmienia bardzo wiele, np. wprowadzenie dodatkowego adaptera w API oddzielającego konkretna bazę danych (jej tablice i SQLowe zapytania) od otoczenia korzystającego z tych danych, unizależnia reszte świata od zmian modelu relacyjnego tej bazy
Wrzucam, nie wiem po co ;-)
http://en.wikipedia.org/wiki/Mediator_pattern
i....?