@startuml interface Boisson{ +getCost(): double +getIngredients(): String } abstract class BoissonEtPlus{ -aDecorer: Boisson +BoissonEtPlus(b: Boisson) } class Expresso{ } class AvecLait{ +AvecLait(b: Boisson) } class Double{ +Double(b: Boisson) } class Thé{ +Thé(b: Boisson) } class CorrigerBoisson{ +ajoutGoutte() } Boisson <|- BoissonEtPlus Expresso --|> Boisson Thé --|> Boisson AvecLait --|> BoissonEtPlus Double --|> BoissonEtPlus CorrigerBoisson -|> Boisson @enduml