Po pierwsze w UML jeżeli jakaś klasa dziedziczy z innej klasy to nie pisze się jeszcze raz tych samych atrybutów i metod, pisze się tylko te, które rozszerzają klasę bazową. I wydaje mi się, że atrybuty klasy powinny być prywatne ew. chronione :)
W tym przykładzie wydaje mi się, że dobrą opcją będzie wykorzystanie polimorfizmu :)
Pozdrawiam!