Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

TQ – Agrégation – Héritage

Thèmes des Questions – C# (C Sharp)



Le programme de gauche comporte deux classes Compte et CompteRemunere. Dans la classe CompteRemunere on insère un objet unCompte de classe Compte, ondit aussi que l’on a agrégé un Compte dans la classe CompteRemunere.

Ce programme construit sur l’agrégation, fonctionne parfaitement : exécutez-le et observez les résultats.

Toutefois du point de vue de la réutilisation l’agrégation ou relation “a-un“, n’est pas ici une bonne solution. En effet nous remarquons que dans la classe CompteRemunere, les méthodes ajouter, retirer et avoirActuel sont redéfinies à l’aide des méthodes de même nom de la classe mère Compte. Le choix de l’agrégation n’est pas judicieux, car l’analyse dans le monde réel d’un CompteRemunere, montre que c’est une variété particulière de Compte, nous sommes en face d’une relation est-un, dans ce cas le choix de l’hériatge est plus performant.

Corrigez ce programme en remplaçant la classe CompteRemunere contenant un Compte par la  classe CompteRemunere  héritant de Compte et exécutez la même méthode Main.

using System;
 class Compte
 {
 private double etat=0;
 public Compte(double somme)
 {
 etat =somme;
 }
 public void ajouter(double somme)
 {
 etat +=somme;
 }
 public void retirer(double somme)
 {
 etat -=somme;
 }
 public double avoirActuel( )
 {
 return etat;
 }
 }
 class CompteRemunere
 {
 private Compte  unCompte;
 public CompteRemunere(double somme)
 {
 unCompte =  new Compte (somme);
 }
 public void ajouter(double somme)
 {
 unCompte.ajouter(somme1.01); } public void retirer(double somme) { unCompte.retirer(somme1.02);
 }
 public double avoirActuel( )
 {
 return unCompte.avoirActuel( );
 }
 }
 class Exercice
 {
 public static void Main( ) 
 {
 CompteRemunere cptBank = new CompteRemunere (100);
 Console.WriteLine("Ouverture d'un compte rémunéré =  "+cptBank.avoirActuel( )+" $");
 cptBank.ajouter(50);
 Console.WriteLine("compte rémunéré après ajout de 50 $=  "+cptBank.avoirActuel( )+" $");
 cptBank.retirer(50);
 Console.WriteLine("compte rémunéré après retrait de 50 $=  "+cptBank.avoirActuel( )+" $");
 Console.ReadLine();
 }
 }

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More