@startuml class Assemble { +work() } class Car { +__construct(Workshop $workShop1, Workshop $workShop2) +manufacture() } class Motorcycle { +__construct(Workshop $workShop1, Workshop $workShop2) +manufacture() } class Produce { +work() } abstract class Vehicle { #workShop1 #workShop2 #__construct() +manufacture() } interface Workshop { +work() } Workshop <|.. Assemble Workshop <|.. Produce Vehicle <|.. Motorcycle Vehicle <|.. Car @enduml