Temat: diagram klas - co poprawić?
Przede wszystkim bym podzielił to na cztery osobne diagramy: osoby, magazyn, katalog produktów oraz płatności. Osobiście nie lubię, jak na jednym diagramie dzieje się za dużo, bo dość szybko można się pogubić we własnych tworach:)
1) Osoba:
Zlikwidowałbym trochę dziedziczenia, bo naprawdę generuje to zazwyczaj więcej problemów niż korzyści.
Skoro klasa Osoba to jedynie dane dotyczące klienta bądź pracownika, to zrobiłbym z tego asocjację i zmienił nazwę na DaneOsobowe, czy coś w tym stylu. Jedno dziedziczenie znika:)
Magazynier, dyrektor, woźny i kasjer to typy pracowników, więc również wierzę, że można to rozwiązać za pomocą asocjacji, a nie dziedziczenia, ale taki zabieg wymaga już głębszego zastanowienia się:)
Jaka będzie korzyść? Dodanie kolejnego typu pracownika w przyszłości będzie dziecinnie proste i nie będzie wymagało większych ingerencji w istniejący kod.
2) Magazyn:
Te wszystkie towary są jak na mój gust zbyt podobne. Wydaje mi się, że dałoby się wyciągnąć jakąś część wspólną, ale to tylko przypuszczenie, bo wiele zależy od tego (możliwe, że iluzorycznego:) podobieństwa.
3) Te liczne klasy będące typami pracowników oraz towarów, to moim zdaniem coś, co w przyszłości może przysporzyć Ci sporych problemów, bo (patrząc na projekt) w każdym miejscu gdzie będą wykorzystywane ich obiekty, będziesz musiał wiedzieć, której konkretnej klasy jest to instancja.
Takie coś utrudni Ci wprowadzanie jakichkolwiek zmian, lepiej opierać się na interfejsach niż na konkretnych klasach.