24 Fév2016
L'héritage entre classes - La classe Compte
Objectif :
- Créer une classe dérivée.
- Ajouter des méthodes à une classe dérivée.
- Redéfinir des méthodes dans une classe dérivée.
Énonce:
- Un compte bancaire possède à tout moment une donnée : son solde. Ce solde peut être positif (compte créditeur) ou négatif (compte débiteur).
- Chaque compte est caractérisé par un code incrémenté automatiquement.
- le code et le solde d'un compte sont accessibles en lecture seulement.
- A sa création, un compte bancaire a un solde nul et un code incrémenté.
- Il est aussi possible de créer un compte en précisant son solde initial.
- Utiliser son compte consiste à pouvoir y faire des dépôts et des retraits. Pour ces deux opérations, il faut connaître le montant de l'opération.
- L'utilisateur peut aussi consulter le solde de son compte par la méthode ToString().
- Un compte Epargne est un compte bancaire qui possède en plus un champ « Taux Intérêt=6 » et une méthode calculIntérêt() qui permet de mettre à jour le solde en tenant compte des intérêts.
- Un ComptePayant est un compte bancaire pour lequel chaque opération de retrait et de versement est payante et vaut 5 DH.
Questions :
- Définir la classe Compte.
- Définir la classe CompteEpargne.
- Définir la classe ComptePayant.
- Créer un programme permettant de tester ces classes avec les actions suivantes:
- Créer une instance de la classe Compte , une autre de la classe CompteEpargne et une instance de la classe ComptePayant
- Faire appel à la méthode déposer() de chaque instance pour déposer une somme quelconque dans ces comptes.
- Faire appel à la méthode retirer() de chaque instance pour retirer une somme quelconque de ces comptes.
- Faire appel à la méthode calculInterêt() du compte Epargne.
- Afficher le solde des 3 comptes.
La classe Compte:
//Auteur :CHAOULID //Copyright: Exelib.net class Compte { private int code; private double solde; private static int nb_comptes=0; public int Code { get { return code; } } public double Solde { get { return solde; } } public static int Nb_Comptes { get { return nb_comptes; } } public Compte() { nb_comptes++; code = nb_comptes; } public Compte(double solde) { nb_comptes++; code = nb_comptes; this.solde = solde; } public virtual void deposer(double somme) //méthode virtuelle qui peut être redéfinie dans une classe dérivée { solde += somme; } public virtual void retirer(double sommme) ////méthode virtuelle qui peut être redéfinie dans une classe dérivée { solde -= sommme; } public override string ToString() { return "Code: " + code + " Solde: " + solde; } }
La classe Compte Epargne:
class CompteEpargne : Compte { private double tauxinteret=6; public double Tauxinteret { get { return tauxinteret; } } public CompteEpargne() : base() { } //constructeur par défaut public CompteEpargne(double solde) : base(solde) { } //constructeur d'initialisation public void CalculerInteret() //une nouvelle méthode qui utilise une méthode héritée { deposer((Solde * tauxinteret)/ 100); } public override string ToString() //redéfinition de la méthode ToString() { return "Compte Epargne: "+ base.ToString() +" Taux interêt: "+tauxinteret ; } }
La classe Compte Payant:
class ComptePayant : Compte { public ComptePayant() : base() { } //Constructeur par défaut public ComptePayant(double solde) : base(solde) { } //Constructeur d'initialisation public override string ToString() //ToString redéfinie { return "Compte Payant: "+ base.ToString(); } public override void deposer(double somme) //La méthode "deposer" redéfinie { base.deposer(somme); base.retirer(5); } public override void retirer(double somme) //La méthode "retier" reféfinie { base.retirer(somme); base.retirer(5); } }
Le programme de test:
class Program { static void Main(string[] args) { Compte C1 = new Compte(); CompteEpargne C2 = new CompteEpargne(); ComptePayant C3 = new ComptePayant(); C1.deposer(10000); C2.deposer(2000); C3.deposer(3000); C1.retirer(2000); C2.retirer(500); C3.retirer(400); C2.CalculerInteret(); Console.Out.WriteLine(C1); Console.Out.WriteLine(C2); Console.Out.WriteLine(C3); Console.ReadKey(); } }