@startuml
package com.iluwatar.model.view.controller {
  class App {
    + App()
    + main(args : String[]) {static}
  }
  enum Fatigue {
    + ALERT {static}
    + SLEEPING {static}
    + TIRED {static}
    - title : String
    + toString() : String
    + valueOf(name : String) : Fatigue {static}
    + values() : Fatigue[] {static}
  }
  class GiantController {
    - giant : GiantModel
    - view : GiantView
    + GiantController(giant : GiantModel, view : GiantView)
    + getFatigue() : Fatigue
    + getHealth() : Health
    + getNourishment() : Nourishment
    + setFatigue(fatigue : Fatigue)
    + setHealth(health : Health)
    + setNourishment(nourishment : Nourishment)
    + updateView()
  }
  class GiantModel {
    - fatigue : Fatigue
    - health : Health
    - nourishment : Nourishment
    ~ GiantModel(health : Health, fatigue : Fatigue, nourishment : Nourishment)
    + getFatigue() : Fatigue
    + getHealth() : Health
    + getNourishment() : Nourishment
    + setFatigue(fatigue : Fatigue)
    + setHealth(health : Health)
    + setNourishment(nourishment : Nourishment)
    + toString() : String
  }
  class GiantView {
    - LOGGER : Logger {static}
    + GiantView()
    + displayGiant(giant : GiantModel)
  }
  enum Health {
    + DEAD {static}
    + HEALTHY {static}
    + WOUNDED {static}
    - title : String
    + toString() : String
    + valueOf(name : String) : Health {static}
    + values() : Health[] {static}
  }
  enum Nourishment {
    + HUNGRY {static}
    + SATURATED {static}
    + STARVING {static}
    - title : String
    + toString() : String
    + valueOf(name : String) : Nourishment {static}
    + values() : Nourishment[] {static}
  }
}
GiantModel -->  "-nourishment" Nourishment
GiantController -->  "-giant" GiantModel
GiantModel -->  "-fatigue" Fatigue
GiantModel -->  "-health" Health
GiantController -->  "-view" GiantView
@enduml