Tpn°08 C#
Tpn°08 C#
et orientée objet
TPN °8 :
L’héritage en langage C#
Objectif :
L’objectif de ce TP est de manipuler l’héritage et la redéfinition des méthodes el le
polymorphisme en C#.
Exercice 1 :
1- Ecrivez une classe Bâtiment avec les attributs suivants :
- adresse
La classe Bâtiment doit disposer des constructeurs suivants :
- Batiment()
- Batiment (adresse)
La classe Bâtiment doit contenir des accesseurs et mutateurs (ou propriétés) pour les
différents attributs. La classe Bâtiment doit contenir une méthode ToString () donnant une
représentation du Bâtiment.
2- Ecrivez une classe Maison héritant de Bâtiment avec les attributs suivants :
- NbPieces : Le nombre de pièces de la maison.
La classe Maison doit disposer des constructeurs suivants :
- Maison()
- Maison(adresse, nbPieces).
La classe Maison doit contenir des accesseurs et mutateurs (ou des propriétés) pour les
différents attributs. La classe Maison doit contenir une méthode ToString() donnant une
représentation de la Maison.
3- Ecrivez aussi un programme afin de tester ces deux classes.
Exercice 2 :
Soit les classes suivantes :
Une classe Personne qui comporte trois champs privés, nom, prénom et date de naissance.
Cette classe comporte un constructeur pour permettre d'initialiser les données. Elle comporte
également une méthode polymorphe Afficher pour afficher les données de chaque personne.
Une classe Employé qui dérive de la classe Personne, avec en plus un champ Salaire
accompagné de sa propriété, un constructeur et la redéfinition de la méthode Afficher.
Une classe Chef qui dérive de la classe Employé, avec en plus un champ Service accompagné
de sa propriété, un constructeur et la redéfinition de la méthode Afficher.
Une classe Directeur qui dérive de la classe Chef, avec en plus un champ Société accompagné
de sa propriété, un constructeur et la redéfinition de la méthode Afficher.
1- Ecrire les classe Personne, Employé, Chef et Directeur.
2- Créer un programme de test qui comporte tableau de huit personnes avec cinq
employés, deux chefs et un directeur (8 références de la classe Personne dans
lesquelles ranger 5 instances de la classe Employé, 2 de la classe Chef et 1 de la classe
Directeur).
- Affichez l'ensemble des éléments du tableau à l'aide de for.
- Affichez l'ensemble des éléments du tableau à l'aide de foreach.
Exercice 3 :
On souhaite réaliser une application de gestion des fournitures de bureau. Les articles pourront
être de types divers, représentés sous la forme d’objets dans l’application.
Les articles sont caractérisés par le schéma suivant : (+ : public, – : private, # : protected )
Exercice 4 :
1- Définir une classe Vecteurs2D caractérisée par l’abscisse X et l’ordonné Y, ainsi qu’un
attribut qui renseigne sur le nombre de vecteurs créés lors de l’exécution du
programme.
2- Définir les constructeurs (par défaut, d’initialisation et de recopie), et les accesseurs
aux différents attributs.
3- Définir les méthodes ToString et Equals, la première retourne une chaine de
caractères représentant l’abscisse et l’ordonné du vecteur comme suit : X = 1.5 - Y=2,
la deuxième retourne True lorsque l’abscisse et l’ordonné des deux vecteurs sont
égaux.
4- Définir une méthode Norme qui retourne la norme d’un vecteur, cette méthode peut
être redéfinie dans les classes dérivées.
5- Définir une classe Vecteurs3D dérivée de la classe Vecteur2D qui contient, en plus
des propriétés de la classe de base, la propriété Z symbolisant la troisième dimension.
6- Définir les constructeurs (par défaut, d’initialisation et de recopie) de cette classe, ainsi
que les accesseurs des propriétés.
7- Redéfinir les méthodes ToString et Equals pour intégrer la troisième propriété.
8- Redéfinir la méthode Norme pour qu’elle retourne la norme d’un vecteur dans l’espace.
La norme est :
Exercice 5 :
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.
1- Définir la classe Compte.
2- Définir la classe CompteEpargne.
3- Définir la classe ComptePayant.
4- 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.
Exercice 6 :
En vue de la gestion d’une librairie, on veut écrire une application orientée objet pour
organiser des livres. L’application sera basée sur 2 classes :
Une classe appelée Auteur contient :
- 3 variables d’instance privées : nom (de type string), email (de type string), et
sexe (de type char soit ‘m’ ou ‘f’) ;
- 1 constructeur qui initialise tous les arguments Auteur(string nom,string
email,char sexe);
- 2 accesseurs de lecture seule pour nom et sexe, et un accesseur de lecture et
modification pour email;
- 1 méthode bool Equals(Auteur auteur) qui teste l’égalité de 2 auteurs en se
basant sur leurs e-mails;
- 1 méthode ToString() qui retourne les informations sur chaque instance sous la
forme : "nom (sexe) à email ", comme indiqué dans cet exemple : " ALAOUI
Mohamed (m) à [email protected] ".
Une classe appelée Livre contient :
- 4 variables d’instance privées : titre (de type string), auteur (de type Auteur[] en
considérant un ou plusieurs auteurs par livre), prix (de type double), et
quantité_en_stock (de type int);
- 2 constructeurs : Livre(string titre, Auteur[] auteur, double prix) et
Livre(string titre, Auteur[] auteur, double prix, int quantité_en_stock);
- 2 accesseurs de lecture seule pour titre et auteur, et 2 accesseurs de lecture et
modification pour prix et quantité_en_stock;
- 1 méthode bool Equals(Livre livre) qui teste l’égalité de 2 livres en se basant sur
leurs titres et leurs auteurs;
- 1 méthode ToString() qui retourne les informations sur chaque instance sous la
forme : " titre de nomAuteur et …, coûte prix DH avec quantité_en_stock
exemplaires en stock. ", comme indiqué dans cet exemple : " Exercices en C# de
ALAOUI Mohamed et ALAMI Meryem, coûte 200.00 DH avec 64 exemplaires en
stock.".
1- Écrire les 2 classes Auteur et Livre.
2- Tester le programme en utilisant les informations de l’exemple cité dans l’énoncé de
l’activité.