0% ont trouvé ce document utile (0 vote)
45 vues4 pages

TD Héritagevf

Le document présente des exercices de programmation orientée objet, incluant la création de classes pour des vecteurs en 2D et 3D, des comptes bancaires, des employés, et des événements. Chaque exercice détaille les attributs, méthodes, et comportements attendus pour les classes, ainsi que des programmes de test pour valider leur fonctionnement. L'héritage est utilisé dans plusieurs contextes, avec des spécifications sur le type d'héritage (public ou protégé) à appliquer.

Transféré par

No Identity
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
45 vues4 pages

TD Héritagevf

Le document présente des exercices de programmation orientée objet, incluant la création de classes pour des vecteurs en 2D et 3D, des comptes bancaires, des employés, et des événements. Chaque exercice détaille les attributs, méthodes, et comportements attendus pour les classes, ainsi que des programmes de test pour valider leur fonctionnement. L'héritage est utilisé dans plusieurs contextes, avec des spécifications sur le type d'héritage (public ou protégé) à appliquer.

Transféré par

No Identity
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TD2 : Héritage

Exercice 1 :
Créer 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.
1. Définir les constructeurs (par défaut, d’initialisation et de recopie), et les accesseurs
aux différents attributs.
2. 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.
3. 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.
Créer 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.
1. Définir les constructeurs (par défaut, d’initialisation et de recopie) de cette classe, ainsi
que les accesseurs des propriétés.
2. Redéfinir les méthodes ToString et Equals pour intégrer la troisième propriété.
3. Redéfinir la méthode Norme pour qu’elle retourne la norme d’un vecteur dans l’espace.
Créer un programme de test permettant de créer deux objets de type Vecteurs2D et
deux autres de type Vecteurs3D.
1. Afficher les informations de tous les objets, et tester les méthodes Equals et Norme.
2. Afficher le nombre d’objet créés.
Pour cet exercice vous devez créer deux fichiers pour chacune des classes (« .h » et « .cpp »)
Le type d’héritage entre les classes est publique.
Exercice 2 :
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.
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 5DT.
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 :

1
• 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.
Notez que le type d’héritage utilisé est l’héritage protégé.
Exercice 3 :
Soit la classe abstraite Employé caractérisée par attributs suivants :
• Matricule
• Nom
• Prénom
• Date de naissance
La classe Employé doit disposer des méthodes suivantes :
• un constructeur d’initialisation
• des propriétés pour les différents attributs
• la méthode Tostring
• une méthode abstraite GetSalaire.
Un ouvrier est un employé qui se caractérise par sa date d’entrée à la société.
• Tous les ouvriers ont une valeur commune appelée SMIG=2500 D
• L’ouvrier a un salaire mensuel qui est : Salaire = SMIG + (Ancienneté en année)*100.
• De plus, le salaire ne doit pas dépasser SMIG*2.
Un cadre est un employé qui se caractérise par un indice.
• Le cadre a un salaire qui dépend de son indice :
o 1 : salaire mensuel 13000 DT
o 2 : salaire mensuel 15000 DT
o 3 : salaire mensuel 17000 DT
o 4 : salaire mensuel 20000 DT
Un patron est un employé qui se caractérise par un chiffre d’affaires et un pourcentage.
• Le chiffre d’affaires est commun entre les patrons.
• Le patron a un salaire annuel qui est égal à x% du chiffre d’affaires : Salaire =
CA*pourcentage/100
Le type d’héritage entre les classes est publique.
Exercice 4 :
On souhaite développer une application de gestion de l’agenda d’une entreprise d’organisation
des évènements.

2
Tout évènements organisé par cette entreprise est caractérisé par un nom, une date, un lieu,
un demandeur, un prix, un descriptif prédéfini par l’entreprise déterminant la nature de
l’évènement (réception, pause-café, diner,…) et une catégorie (1, 2 et 3) déterminant la qualité
de produit et de la décoration demandée.
L’entreprise gère deux types d’évènements : les évènements ponctuels et les évènements
répétitifs.
• Pour les évènements ponctuels (mariages, réception…). Il est nécessaire de spécifier
l’heure de début et l’heure de fin.
• Pour les évènements répétitifs gérés par l’entreprise (pause-café matin, pause-café
après-midi, déjeuner…) l’heure est généralement connue donc il n’est pas nécessaire
d’indiquer l’heure de début et de fin. Mais, il est nécessaire de spécifier le nombre de
jours et la périodicité en jours : 1 (un jour), 7( une semaine),…
• Le calcul du prix d’un évènement se fait en utilisant la fonction cost(string descriptif,
int catégorie) supposé prédéfinie dans ce problème et permettant de retourner le cout
en fonction du descriptif (nature de l’évènement) et de la catégorie de l’évènement.
Le prix des événement sera par exemple :
o Descriptif : réception, catégorie : 1 : Prix : 300DT
o Descriptif : réception, catégorie : 2: Prix : 450DT
o Descriptif : réception, catégorie : 3 : Prix : 700DT
o Descriptif : pause-café, catégorie : 1 : Prix : 200DT
o Descriptif : pause-café, catégorie : 2: Prix : 350DT
o Descriptif : pause-café, catégorie : 3 : Prix : 500DT
o Descriptif : diner, catégorie : 1 : Prix : 500DT
o Descriptif : diner, catégorie : 2: Prix : 700DT
o Descriptif : diner, catégorie : 3 : Prix : 1000DT
• Pour un évènement répétitif, le prix est obtenu en appliquant une remise sur la valeur
retourner par la fonction cost. Cette remise est de 5% si le nombre de jours est <=7 et
de 10% sinon.
• La fonction afficher doit permettre d’afficher le type de l’évènement en plus de tous
les détails qui le concerne.

Travail demandé :
Implémenter les classes Evenement, EvtPonctuel et EvtRepetitif. Notez que le type d’héritage
utilisé est l’héritage publique.
1. Définir les constructeurs (par défaut, d’initialisation et de recopie)
2. Définir les Getters et Setters pour chacune des attributs des 3 classes.
3. Définir la méthode Cost(string descriptif, int catégorie)
4. Définir la méthode Afficher().
On souhaite maintenant représenter l’agenda des évènements pour une journée particulière
par la classe AgendaJour. Cette classe doit offrir les méthodes suivantes :
Cette classe possède comme attribut VectEvenements : vecteur de pointeur sur Evènement
1. AjouterEvt(Evenement* evt) : qui ajoute un évènement a la fin de la collection des
évènements à condition qu’il n’existe pas déjà un évènement avec le même nom.
2. ChercherEvt(String nom) : qui cherche un évènement donné par son nom.
3. SupprimerEvt(String nom) : supprime l’évènement donné.

3
4. AfficherEvet() : qui affiche tous les détails des évènements.
Afin de mieux satisfaire ses clients désire prendre en charge les événements très importants
dans lesquels l’heure de début et l’heure de fin doivent être indiquées. Le prix de ces
évènements est calculé en suivants la formule correspondante aux évènements répétitifs.
On opte pour un héritage multiple pour représenter la classe EvtImportant.
1. Définir les constructeurs (par défaut, d’initialisation et de recopie)
2. Définir la méthode Cost qui calcule le prix de l’évènement.
3. Définir la méthode Afficher() qui permet d’afficher le type de l’évènement en plus de
tous les détails qui le concerne.

Vous aimerez peut-être aussi