1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

Examen de passage C# POO année 2014 - Examen programmation orienté objet corrigé c# POO

abdelouafiMay 16, 2017

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      181
      Likes Received:
      9
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      Examen de passage POO C# OFPPT pour l'année 2013/2014
      Soit une caisse de supermarché, on souhaite développer une application informatique permettant la gestion automatique de ce système. Chaque produit commandé est caractérisé par son identificateur (ou la référence), une description, le prix et la catégorie.
      Il existe deux types de catégories: soit Software ou Hardware.

      a. Donnez le code source de la classe Produit ?

      b. Spécifier les accesseurs pour le champ Attribut ?

      c. Ajouter le constructeur par défaut et d’initialisation ?

      d. Ajouter une fonction nommée GetTarif() qui permet d’afficher le prix du produit ?

      e. Ajouter la fonction SetTarif() permettant de modifier le prix du produit ?

      f. Ajouter la fonction Tostring() qui permet d’afficher toutes les propriétés ?

      g. On souhaite comparer deux produits, deux produits sont égaux s’ils ont les mêmes propriété. Donc ajouter la fonction Equals() permettant de faire cette comparaison ?

      h. Prévoir une exception CatégorieInvalideException() qui s’exécute si la catégorie est invalide ?



      Un Produit en solde est caractérisé aussi par l’attribut « Remise » qui est le pourcentage de réduction sur le prix d'origine

      2. Développez la classe ArticleEnSolde(1pt)

      a. Ajouter les Attributs(1pt)

      b. Ajouter les Constructeurs par défaut et d’initialisation (3pts)

      c. Redéfinir la fonction getPrix(), permettant de tenir en compte le solde. (3pts)

      Ce supermarché réalise des factures datées et numérotées automatiquement (en partant de 1).

      Chaque facture est caractérisée par :

      · Id de la facture (automatiquement incrémenté)

      · Date de la facture (prend par défaut la date du système)

      · Collection d’achats

      Soit la classe nommée Achat caractérisée par l’article acheté et la quantité demandée (les attributs) (Ce n’est pas obligatoire d’écrire la classe Achat)

      Code:
      public class Achat
      
        {
      
      privateintnuméro_achat;
      
      private Article article_acheté;
      
      privateint quantité;
      
        }
      3. Donnez le code source de la classe Facture (0,5 pt)

      a. Ajouter les attributs (3pts)

      b. Ajouter les Constructeurs par défaut et d’initialisation (3pts)

      c. Développez la fonction void Ajouter (Achat a): permettant d’ajouter un achat à la collectionachats, la méthode doit afficher un message d’erreur si un achat existe déjà dans la collection.(3pts)

      d. Développez la fonction Double Montant_facture(): pour afficher le montant total de la facture(3pts)

      e. Développez la fonction Enregistrer_Achats(string nom_fichier): permettant la liste des achats triée par désignation dans un fichier binaire(3pts)

      f. Développez la fonction Tostring() qui affiche le numéro et la date de facture avec la liste des articles achetées de la façon suivante :(4pts)
      examen de passage tsge 2014.png

      Exercice intéressant en POO:
       
      Last edited: Jun 18, 2017
      Loading...
      La classe Produit:
      Code:
          class Article
              {
                  protected int id;
                  protected string description;
                  protected double tarif;
                  protected string categorie;
        
                  public string Description
                  {
                      get { return description; }
                      set { description = value; }
                  }
                  public double Tarif
                  {
                      get { return tarif; }
                      set { tarif = value; }
                  }
                  public string Categorie
                  {
                      get { return categorie; }
                      set
                      {
                          if (value.ToLower() == "software" || value.ToLower() == "Hardware")
                              categorie = value;
                          else
                              throw new CategorieInvalideException();
                      }
                  }
        
                  public Article() { }
        
                  public Article(int c, string d, double p, string cat)
                  {
                      id = c;
                      description = d;
                      tarif = p;
                      Categorie = cat;                     //Utiliser la propriété au lieu de l'attribut
                  }
        
                  public virtual double GetTarif()
                  {
                      return tarif;
                  }
        
                  public void SetTarif(double p)
                  {
                      if (p > 0)
                          tarif = p;
                      else
                          throw new Exception("Tarif Invalide");
                  }
        
                  public override string ToString()
                  {
                      return "Id: " + id + "Désignation" + description + "Tarif: " + tarif + "Catégorie: " + Categorie;
                  }
        
                  public override bool Equals(object obj)
                  {
                      if (obj == null)
                          return false;
                      else if (obj == this)
                          return true;
                      else if (obj.GetType() != this.GetType())
                          return false;
                      else
                      {
                          Article A=(Article)obj;
                          if (A.id == this.id && A.description == this.description && A.tarif == this.tarif && A.Categorie == this.Categorie)
                              return true;
                          else
                              return false;
                      }
                  }
              }
      
      La classe Produit en stock:

      Code:
          class ArticleEnSolde:Article
              {
                  private double remise;
                  public double Remise
                  {
                      get { return remise; }
                      set { remise = value; }
                  }
         
                  public ArticleEnSolde() : base() { }
         
                  public ArticleEnSolde(int c, string d, double p, string cat, double r)
                      : base(c, d, p, cat)
                  {
                      if (r >= 0)
                          remise = r;
                      else
                          throw new Exception("Valeur remise invalide");
                  }
         
                  public override double GetTarif()
                  {
                      return Tarif*(1-remise/100);
                  }
              }
      

      La classe Achat:

      Code:
      Serializable] class Achat : IComparable
              {
                  private int numeroachat;
                  private Article article_achete;
                  private int quantite;
          
                  public int Numeroachat
                  {
                      get { return numeroachat; }
                      set { numeroachat = value; }
                  }
          
                  public Article Article_achete
                  {
                      get { return article_achete; }
                      set { article_achete = value; }
                  }
          
                  public int Quantite
                  {
                      get { return quantite; }
                      set { quantite = value; }
                  }
          
                  public Achat(int num, Article art, int q)
                  {
                      numeroachat = num;
                      article_achete = art;
                      quantite = q;
                  }
          
                  public int CompareTo(Object o)
                  {
                      Achat a = (Achat)o;
                      return article_achete.Description.CompareTo(a.article_achete.Description);
                  }
              }
      
      La classe Facture:

      Code:
          class Facture
              {
                  private static int compteur = 0;
                  private int id;
                  private DateTime date;
                  private List<Achat> A;
           
                  public int Id
                  {
                      get { return id; }
                  }
           
                  public Facture()
                  {
                      compteur++;
                      id = compteur;
                      date = DateTime.Today;
                      A = new List<Achat>();
                  }
           
                  public Facture(List<Achat> L)
                  {
                      compteur++;
                      id = compteur;
                      date = DateTime.Today;
                      A = new List<Achat>();
                      A.AddRange(L);
                  }
           
                  public void Ajouter(Achat a)
                  {
                      bool b = true;
                      for (int i = 0; i < A.Count; i++)
                      {
                          if (A[i].Numeroachat == a.Numeroachat)
                          {
                              b = false;
                              break;
                          }
                      }
                      if (b == true)
                      {
                          A.Add(a);
                          Console.Out.WriteLine("L'achat a été bien ajouté");
                      }
                      else
                          Console.Out.WriteLine("Achat existe déjà");
                  }
           
                  public double Montant_Facture()
                  {
                      double s = 0;
                      for (int i = 0; i < A.Count; i++)
                      {
                          s += A[i].Article_achete.GetTarif() * A[i].Quantite;
                      }
                      return s;
                  }
           
                  public void Enregistrer(string nom_fichier)
                  {
           
                      List<Achat> temp = new List<Achat>();
                      temp.AddRange(A);
                      temp.Sort();  //Trier les achats par désignation (Implémenter dans la classe Achat la méthode CompareTo de l'interface IComparable)
           
           
                      BinaryFormatter b = new BinaryFormatter();
                      Stream f = File.OpenWrite(nom_fichier);
                      b.Serialize(f, temp);
                      f.Close();
                      Console.Out.WriteLine("Enregistrement terminé");
                  }
                  public override string ToString()
                  {
                      string s1 = "", s2 = "", s3 = "";
           
                      s1 = "Numéro facture: " + Id + " Date Facture: " + date.ToShortDateString() + "\r\n";
                      s2 = "Liste d'achats:\r\nDésignation\tRemise\tTarif(en DH)\tQuantité\tTarif total\r\n";
                      if (A.Count == 0)
                          s3 = "-----------------------------\n";
                      else
                      {
                          for (int i = 0; i < A.Count; i++)
                          {
                              s3 = s3 + A[i].Article_achete.Description + "\t";
                              if (A[i].Article_achete.GetType() == typeof(Article))
                                  s3 = s3 + "0\t";
                              else
                              {
                                  ArticleEnSolde at = (ArticleEnSolde)A[i].Article_achete;
                                  s3 += at.Remise + "\t";
                              }
                                  s3 += A[i].Article_achete.Tarif + "\t\t";
                                  s3 += A[i].Quantite + "\t\t";
                                  s3 += A[i].Quantite * A[i].Article_achete.GetTarif() + "\r\n";     
                           }
                      }
                      s3 = s3 + "Montant de la facture: " + Montant_Facture();
                      return s1 + s2 + s3;
                  }
              }
      

Share This Page

Share