Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO



Nadmierna ogólność

W niektórych zastosowaniach wzorca kompozyt może przy zachowaniu ogólności dojść do pewnej niespójności. Zdarza się to w sytuacjach, gdy kompozyty mogą zawierać tylko ograniczony zbiór zdefiniowanych liści. Aby uniemożliwić sytuację w której nie dopuszcza się do dodania niewłaściwego liścia bądź kompozytu, należałoby rozszerzyć hierarchię dziedziczenia o kolejne klasy abstrakcyjne kategorii, tak aby mechanizmy statycznej kontroli typów w C++ mogły odpowiednio reagować. Nie obyło by się przy tym bez wielodziedziczenia, w tym wirtualnego.

Konsekwencją tego jest taka, iż metody dodawania/usuwania dzieci musiały by być zawarte nawet już nie w klasie kompozytu abstrakcyjnego, ale w klasie kompozytu konkretnego, bowiem dwa różne kompozyty pozwalały by na dodawanie obiektów innych typów – lista argumentów metody różniłaby się.

Innym – bardziej zalecanym rozwiązaniem jest kontrola dynamiczna. Należy zadeklarować metodę dodaj() wcześniej w hierarchii dziedziczenia i później przesłonić ją w klasie kompozytu konkretnego, gdzie z kolei w przypadku próby dodania nieodpowiedniego rodzaju liścia czy kompozytu zostałby rzucony wyjątek.

Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11