Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.57 KB | None | 0 0
  1. // Bus.cs
  2. using System;
  3. using System.Collections.Generic;
  4. using MyObj;
  5.  
  6. public class Bus
  7. {
  8.     // Attributs
  9.     private string strCompagnie;
  10.     private int iLigne;
  11.     private Remorque _attelage;
  12.     private Personne _chauffeur;
  13.     private List<Personne> _passagers = new List<Personne>();
  14.     private List<Rond> _roues = new List<Rond>(); // immuable.
  15.  
  16.  
  17.     // Constructeur
  18.     public Bus(string compagnie, int ligne)
  19.     {
  20.         strCompagnie = compagnie;
  21.         iLigne = ligne;
  22.         getRoues().Add(new Rond(80));
  23.         getRoues().Add(new Rond(80));
  24.         getRoues().Add(new Rond(80));
  25.         getRoues().Add(new Rond(80));
  26.  
  27.     }
  28.  
  29.     // Méthodes
  30.     public List<Rond> getRoues()
  31.     {
  32.         return _roues;
  33.     }
  34.  
  35.     public List<Personne> getPassagers()
  36.     {
  37.         return _passagers;
  38.     }
  39.     public string Lister()
  40.     {
  41.         string strText = "";
  42.         int iCpt = 0;
  43.         foreach (Personne passagers in _passagers)
  44.         {
  45.             iCpt++;
  46.             strText += $"Passagers {iCpt} :  {passagers}\r\n";
  47.            
  48.         }
  49.         return strText;
  50.     }
  51.  
  52.     public string getCompagnie()
  53.     {
  54.         return strCompagnie;
  55.     }
  56.  
  57.     public int getLigne()
  58.     {
  59.         return iLigne;
  60.     }
  61.  
  62.     public Personne getChauffeur()
  63.     {
  64.         return _chauffeur;
  65.     }
  66.  
  67.     public void setChauffeur(Personne chauffeur)
  68.     {
  69.         this._chauffeur = chauffeur;
  70.     }
  71.  
  72.     public Remorque getAttelage()
  73.     {
  74.         return _attelage;
  75.     }
  76.  
  77.     public string BusInfo()
  78.     {
  79.         return "";
  80.     }
  81.  
  82.     public override string ToString()
  83.     {
  84.         if (_attelage == null) return "Bus " + strCompagnie + " de la ligne n°" + iLigne + " sans remorque";
  85.         return "Bus " + strCompagnie + " de la ligne n°" + iLigne + " avec remorque de " + _attelage.getChargeUtileKg() + "kg";
  86.     }
  87.  
  88.     public bool Accoupler(Remorque attelage)
  89.     {
  90.         if (this._attelage == null)
  91.         {
  92.             this._attelage = attelage;
  93.             return true;
  94.         }
  95.         return false;
  96.     }
  97.  
  98.     public bool Detacher()
  99.     {
  100.         if (this._attelage == null) return false;
  101.         _attelage = null;
  102.         return true;
  103.     }
  104. }
  105.  
  106. // Remorque.cs
  107. using System;
  108.  
  109. public class Remorque
  110. {
  111.     // Attributs
  112.     private int iChargeUtileKg;
  113.     private int iChargeActuelleKg=0;
  114.    
  115.     // Méthodes de lecture
  116.     public int getChargeUtileKg()
  117.     {
  118.         return iChargeUtileKg;
  119.     }
  120.    
  121.     public int getChargeActuelleKg()
  122.     {
  123.         return iChargeActuelleKg;
  124.     }
  125.    
  126.     public override string ToString()
  127.     {
  128.         return "Remorque de " + iChargeUtileKg + "kg de capacité";
  129.     }
  130.    
  131.     // Méthodes de modification de la charge en kg
  132.     public bool Charger(int kg)
  133.     {
  134.         if (kg + iChargeActuelleKg > iChargeUtileKg) return false;
  135.         iChargeActuelleKg += kg;
  136.         return true;
  137.     }
  138.    
  139.     public void Vider()
  140.     {
  141.         iChargeActuelleKg = 0;
  142.     }
  143.  
  144.     // Constructeur
  145.     public Remorque(int chargeUtileKg)
  146.     {
  147.         iChargeUtileKg = chargeUtileKg;
  148.     }
  149. }
  150.  
  151. // Rond.cs
  152. using System;
  153.  
  154.  
  155. namespace MyObj
  156. {
  157.     public class Rond
  158.     {
  159.         private double dblRayon;
  160.  
  161.  
  162.         // Constructeur par défaut 04-20 1
  163.         //public Rond ()
  164.         //{
  165.         //    dblRayon = 5.5;  
  166.         //}
  167.  
  168.         // Constructeur par défaut 04-40 1
  169.         public Rond()
  170.         {
  171.             dblRayon = 0.0;
  172.         }
  173.  
  174.         // Constructeur spécifique 04-40 2
  175.         public Rond(double rayon)
  176.         {
  177.             dblRayon = rayon;
  178.         }
  179.  
  180.         public double Surface ()
  181.         {
  182.             return dblRayon * dblRayon * Math.PI;
  183.         }
  184.  
  185.         public double Perimetre()
  186.         {
  187.             return 2 * dblRayon * Math.PI;
  188.         }
  189.     }
  190. }
  191.  
  192. // Personnes.cs
  193. namespace MyObj
  194. {
  195.     /// <summary>
  196.     /// Classe Personne, contient le nom, prénom, genre et année de naissance d'une personne
  197.     /// </summary>
  198.     public class Personne
  199.     {
  200.         private string strNom;
  201.         private string strPrenom;
  202.         private int iAnneeNaissance;
  203.         private bool bEstMasculin;
  204.  
  205.         /// <summary>
  206.         /// Constructeur de Personne
  207.         /// </summary>
  208.         /// <param name="nom">Nom de famille</param>
  209.         /// <param name="prenom">Prénom</param>
  210.         /// <param name="anneeDeNaissance">Année de naissance</param>
  211.         /// <param name="estMasculin">true si c'est un homme, false si c'est une femme</param>
  212.         public Personne(string nom, string prenom, int anneeDeNaissance, bool estMasculin)
  213.         {
  214.             strNom = nom;
  215.             strPrenom = prenom;
  216.             iAnneeNaissance = anneeDeNaissance;
  217.             bEstMasculin = estMasculin;
  218.         }
  219.  
  220.         public string getNom()
  221.         {
  222.             return strNom;
  223.         }
  224.  
  225.         public string getPrenom()
  226.         {
  227.             return strPrenom;
  228.         }
  229.  
  230.         public int getAge()
  231.         {
  232.             return System.DateTime.Now.Year - iAnneeNaissance;
  233.         }
  234.  
  235.         public string getTitre()
  236.         {
  237.             return bEstMasculin ? "M." : "Mme.";
  238.         }
  239.  
  240.         /// <summary>
  241.         /// Retourne les informations de la personne
  242.         /// </summary>
  243.         /// <returns>Un texte du style "M. Jean Rit (20 ans)" ou "Mme Eva Nouie (30 ans)"</returns>
  244.         public override string ToString()
  245.         {
  246.             return getTitre() + " " + strPrenom + " " + strNom + " (" + getAge() + " ans)";
  247.         }
  248.     }
  249. }
  250.  
  251. // Form1.cs
  252. using System;
  253. using System.Collections.Generic;
  254. using System.ComponentModel;
  255. using System.Data;
  256. using System.Drawing;
  257. using System.Linq;
  258. using System.Text;
  259. using System.Threading.Tasks;
  260. using System.Windows.Forms;
  261. using MyObj;
  262.  
  263. namespace Bus_Passagers
  264. {
  265.     public partial class Form1 : Form
  266.     {
  267.         public Form1()
  268.         {
  269.             InitializeComponent();
  270.         }
  271.  
  272.         Bus bus100;
  273.         Bus bus110;
  274.         Bus bus120;
  275.  
  276.         Remorque remorque;
  277.  
  278.         private void Form1_Load(object sender, EventArgs e)
  279.         {
  280.             // Créer (instancier) les 3 bus au démarrage
  281.             bus100 = new Bus("ET", 100);
  282.             bus110 = new Bus("ET", 110);
  283.             bus120 = new Bus("ET", 120);
  284.  
  285.             // Créer la remorque au démarrage
  286.             remorque = new Remorque(500);
  287.         }
  288.  
  289.         private Bus RecupererBusSelonRadioBouton()
  290.         {
  291.             // Récupérer le bus courant en fonction du radiobouton et le retourner
  292.             Bus bus = null;
  293.             if (rbtnBus100.Checked) bus = bus100;
  294.             if (rbtnBus110.Checked) bus = bus110;
  295.             if (rbtnBus120.Checked) bus = bus120;
  296.             return bus;
  297.         }
  298.  
  299.         private void rbtnBus_CheckedChanged(object sender, EventArgs e)
  300.         {
  301.             Bus bus = RecupererBusSelonRadioBouton();
  302.             if (bus != null)
  303.             {
  304.                 // Si le radiobouton a permis de sélectionner un bus instancié
  305.                 if (bus.getChauffeur() == null)
  306.                 {
  307.                     // Si le bus courant n'a pas de chauffeur, réinitialiser le groupe chauffeur
  308.                     tbxNom.Clear();
  309.                     tbxPrenom.Clear();
  310.                     numNeEn.Value = 1975;
  311.                     cbxEstUnHomme.Checked = true;
  312.                 }
  313.                 else
  314.                 {
  315.                     // Si le bus courant a déjà un chauffeur, afficher ses informations
  316.                     tbxNom.Text = bus.getChauffeur().getNom();
  317.                     tbxPrenom.Text = bus.getChauffeur().getPrenom();
  318.                     numNeEn.Value = DateTime.Now.Year - bus.getChauffeur().getAge();
  319.                     cbxEstUnHomme.Checked = (bus.getChauffeur().getTitre() == "M.");
  320.                 }
  321.  
  322.                 if (bus.getAttelage() == null)
  323.                 {
  324.                     // Si la remorque est désaccouplée, décocher la case
  325.                     cbxRemorque.Checked = false;
  326.                 }
  327.                 else
  328.                 {
  329.                     // Si la remorque est déjà accouplée au bus cocher la case
  330.                     cbxRemorque.Checked = true;
  331.                 }
  332.  
  333.  
  334.                 // affichage des infos
  335.                 if (bus.getAttelage() == null)
  336.                 {
  337.                     // pas de remorque.
  338.                     tbxBus.Text = $"Bus TransN de la ligne n°{bus.getLigne()} sans remorque.{Environment.NewLine}";
  339.                 }
  340.                 else
  341.                 {
  342.                     // remorque.
  343.                     tbxBus.Text = $"Bus TransN de la ligne n°{bus.getLigne()} avec une remorque de {bus.getAttelage()}.{Environment.NewLine}";
  344.                 }
  345.  
  346.                 if (bus.getChauffeur() != null)
  347.                     tbxBus.Text += $"Conduit par {bus.getChauffeur()}{Environment.NewLine}";
  348.                 else
  349.                     tbxBus.Text += $"Sans chauffeur. {Environment.NewLine}";
  350.  
  351.                 if (bus.getPassagers().Count > 0)
  352.                 {
  353.                     tbxBus.Text += $"{bus.Lister()}{Environment.NewLine}";
  354.                 }
  355.                 else
  356.                     tbxBus.Text += $"\nSans passagers.{Environment.NewLine}";
  357.  
  358.                 tbxBus.Text += $"Avec {bus.getRoues().Count} roues.";
  359.              
  360.  
  361.             }
  362.         }
  363.  
  364.         private void btnLiaison_Click(object sender, EventArgs e)
  365.         {
  366.             Bus bus = RecupererBusSelonRadioBouton();
  367.             if (bus != null)
  368.             {
  369.                 // Si le radiobouton a permis de sélectionner un bus instancié
  370.                 if (bus.getChauffeur() == null)
  371.                 {
  372.                     // Si le bus courant n'a pas encore de chauffeur, créer un chauffeur et l'associer)
  373.                     bus.setChauffeur(new Personne(tbxNom.Text, tbxPrenom.Text, (int)numNeEn.Value, cbxEstUnHomme.Checked));
  374.                    
  375.                 }
  376.                 else
  377.                 {
  378.                     // Si le bus courant a déjà un chauffeur, le libérer
  379.                     bus.setChauffeur(null);
  380.                 }
  381.                 tbxNom.Clear();
  382.                 tbxPrenom.Clear();
  383.                 numNeEn.Value = 1975;
  384.                 cbxEstUnHomme.Checked = true;
  385.             }
  386.         }
  387.  
  388.         private void cbxRemorque_Click(object sender, EventArgs e)
  389.         {
  390.             Bus bus = RecupererBusSelonRadioBouton();
  391.             if (bus != null)
  392.             {
  393.                 // Si le radiobouton a permis de sélectionner un bus instancié
  394.                 if (cbxRemorque.Checked)
  395.                 {
  396.                    // Tenter d'attacher la remorque
  397.                     bool bOK = bus.Accoupler(remorque);
  398.  
  399.                     if (!bOK)
  400.                     {
  401.                         MessageBox.Show("L'un des deux véhicules n'est pas prêt", "Impossible d'attacher la remorque");
  402.                         cbxRemorque.Checked = false;
  403.                     }
  404.                 }
  405.                 else
  406.                 {
  407.                     // Tenter de détacher la remorque
  408.                     bool bOk = bus.Detacher();
  409.  
  410.                     if (!bOk)
  411.                     {
  412.                         MessageBox.Show("La remorque n'est pas détachable", "Impossible de détacher la remorque");
  413.                         cbxRemorque.Checked = true;
  414.                     }
  415.                 }
  416.             }
  417.         }
  418.  
  419.         // Ex 7
  420.  
  421.         // En cas de frappe dans l'un des TextBox...
  422.         private void tbxNomPassager_TextChanged(object sender, EventArgs e)
  423.         {
  424.             tbxNomPassager.Text = tbxNomPassager.Text.Trim();
  425.             tbxPrenomPassager.Text = tbxPrenomPassager.Text.Trim();
  426.             // ...activer le bouton si ils ont tous 2 un texte
  427.             btnAjout.Enabled = (tbxNomPassager.TextLength > 0 && tbxPrenomPassager.TextLength > 0);
  428.         }
  429.  
  430.         private void btnAjout_Click(object sender, EventArgs e)
  431.         {
  432.             Bus bus = RecupererBusSelonRadioBouton();
  433.  
  434.             if (bus != null)
  435.             {
  436.                 bus.getPassagers().Add(new Personne(tbxNomPassager.Text, tbxPrenomPassager.Text, (int)numNeEnPassager.Value, cbxEstUnHommePassager.Checked));
  437.             }
  438.  
  439.             tbxNomPassager.Clear();
  440.             tbxPrenomPassager.Clear();
  441.             numNeEnPassager.Value = 1975;
  442.             cbxEstUnHommePassager.Checked = true;
  443.  
  444.         }
  445.  
  446.         private void btnLister_Click(object sender, EventArgs e)
  447.         {
  448.             Bus bus = RecupererBusSelonRadioBouton();
  449.             MessageBox.Show(bus.Lister());
  450.         }
  451.         // Fin ex 7
  452.  
  453.     }
  454. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement