/* Definition d'un type agrege de stockage         */
/* des caracteristiques d'un vehicule              */
/* de type blinde pour un jeu de simulation        */
/* de la seconde guerre mondiale                   */

public class TypeAgregeBlindeEnConsole {

/////////////////////////////////////////////////////

/* Type agrege de stockage d'un blinde             */

  static class Blinde {
    String nom = "";
    String type = "";
    String pays = "";
    Date date = new Date();
    double poids = 0.0;
    double hauteur = 0.0;
    double largeur = 0.0;
    double longueurCaisse = 0.0;
    double longueurTotale = 0.0;
    int equipage;
    Armement armement = new Armement();
    Blindage blindage = new Blindage();
    Motorisation motorisation = new Motorisation();
    Deplacement deplacement = new Deplacement(); };

/* Type agrege de stockage d'une date              */

  static class Date {
    int jour = 1;
    int mois = 1;
    int annee = 1901; };

/* Type agrege de stockage d'un armement de blinde */

  static class Armement {
    Arme armePrincipale = new Arme();
    Arme armeSecondaire1 = new Arme();
    Arme armeSecondaire2 = new Arme(); };

/* Type agrege de stockage d'une arme              */

  static class Arme {
    boolean present = false;
    String nom = "";
    int nombreCoups = 0;
    int cadenceTir = 0;
    double letaliteSurFantassins = 0.0;
    double letaliteSurBlindes = 0.0; };

/* Type agrege de stockage d'un blindage de blinde */

  static class Blindage {
    BlindageElement blindageCaisse = new BlindageElement();
    BlindageElement blindageTourelle = new BlindageElement(); };

/* Type agrege de stockage des caracteristiques    */
/* du blindage d'un element de structure de blinde */

  static class BlindageElement {
    double avant = 0.0;
    double lateral = 0.0;
    double arriere = 0.0;
    double toit = 0.0; };

/* Type agrege de stockage d'une motorisation      */

  static class Motorisation {
    String nom = "";
    String type = "";
    double cylindree = 0.0;
    double puissance = 0.0; };

/* Type agrege de stockage de caracteristiques     */
/* de deplacement                                  */

  static class Deplacement {
    double vitesseMaxSurRoute = 0.0;
    Franchissement franchissement = new Franchissement();
    double vitesseMaxToutTerrain = 0.0;
    double autonomieSurRoute = 0.0;
    double autonomieToutTerrain = 0.0; };

/* Type agrege de stockage de caracteristiques     */
/* de franchissement                               */

  static class Franchissement {
    double penteMax = 0.0;
    double trancheeMax = 0.0;
    double gueMax = 0.0;
    double pressionAuSol = 0.0; };

/////////////////////////////////////////////////////

/* Programme principal                             */

  public static void main(String [] args) {
    Console.setTitle("TypeAgregeBlinde");
    Blinde blinde = new Blinde();
    Console.afficher("Declaration Ok");
  }
}