Pytanie zawarte w tym artykule pojawiło się podczas szkolenia Analiza i modelowanie systemów informatycznych z wykorzystaniem notacji UML2 realizowanego w dniach 25-28.10.2016r.
"Zapewne da się w kodzie utworzyć z wiersza tabeli bazodanowej obiekt klasy Klient lub Dostawca, ale jest to łamanie zasad obiektowości. Zgodnie z zasadami obiektowości, obiekt jest zawsze obiektem jednej klasy (nie dwóch na raz). Co więcej, obiekt nie może zmienić tożsamości. Jeśli raz utworzymy obiekt klasy Klient, to nie może on stać się obiektem klasy Dostawca. < / br> < / br> Zatem jeśli wymagamy, aby kontrahent mógł występować jednocześnie w roli klienta i dostawcy, to model, w którym Klient i Dostawca są podklasami Kontrahenta, nie jest właściwy. Role klienta i dostawcy najlepiej jest zamodelować jako związki klasy Kontrahent np. z klasami Towar (kupowany przez klienta) i Surowiec (dostarczany przez dostawcę)."