@startuml

class Planta{
 esviva: boolean
 altura: int
 --
 getChar(nivell: int): char
 creix(): Planta
 escampaLlavor(): int
 getAltura(): int
 esViva(): boolean
}

class Llavor{
 planta: Planta
 temps: int
 --
 creix(): Planta
 getChar(nivell: int): char
}

class Altibus{
 --
 creix(): Llavor
 getChar(nivell: int): char
}

class Declinus{
 --
 creix(): Llavor
 getChar(nivell: int): char
}

class Jardi{
 Jardi[]: Planta
 --
 temps(): void
 toString(): String
 plantaLlavor(novaPlanta: Planta, pos: int): boolean
}

Altibus --|> Planta
Declinus -|> Planta
Jardi " 1   "*-- " *   " Planta
Llavor --|> Planta
Jardi ..> Llavor
@enduml
