@startuml

abstract class Computer {
  + String mainBoard, cpu, ram, screen, storage
  + String vMainBoard, vCpu, vRam, vScreen, vStorage

  + {abstract} String build()
  + {abstract} int value()
}


abstract class ComputerDecorator {
  + String name
  + int price
}

class ComputerBasic
class UpgradeCPU
class UpgradeRAM
class UpgradeScreen
class UpgradeStorage

Computer <|-- ComputerBasic
Computer <|-- ComputerDecorator
ComputerDecorator --> Computer:computer
ComputerDecorator <|-- UpgradeCPU
ComputerDecorator <|-- UpgradeRAM
ComputerDecorator <|-- UpgradeScreen
ComputerDecorator <|-- UpgradeStorage

@enduml
