content: package com.iluwatar.model.view.controller;
  
  /**
   * 
   * Model-View-Controller is a pattern for implementing user interfaces. It divides the application
   * into three interconnected parts namely the model, the view and the controller.
   * 
   * The central component of MVC, the model, captures the behavior of the application in terms of its problem 
   * domain, independent of the user interface. The model directly manages the data, logic and rules of the 
   * application. A view can be any output representation of information, such as a chart or a diagram
   * The third part, the controller, accepts input and converts it to commands for the model or view.
   * 
   * In this example we have a giant (GiantModel) with statuses for health, fatigue and nourishment. GiantView
   * can display the giant with its current status. GiantController receives input affecting the model and
   * delegates redrawing the giant to the view.
   *
   */
  public class App {
  	
      public static void main( String[] args ) {
      	// create model, view and controller
      	GiantModel giant = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED);
      	GiantView view = new GiantView();
      	GiantController controller = new GiantController(giant, view);
      	// initial display
      	controller.updateView();
      	// controller receives some interactions that affect the giant
      	controller.setHealth(Health.WOUNDED);
      	controller.setNourishment(Nourishment.HUNGRY);
      	controller.setFatigue(Fatigue.TIRED);
      	// redisplay
      	controller.updateView();
      }
  }
  