Vous êtes sur la page 1sur 70

Programmation Orientée Objet 2 en C++

Filière : Ingénierie Informatique et Réseaux


ECOLE MAROCAINE DES SCIENCES DE L'INGÉNIEUR – EMSI
Honoris United Universities

Niveau : 3°IIR

Pr. NAZIH Marouane


Rappel POO 1

C++
Plan de cours

❏ Classe et Objet
➔ Pratique

❏ Héritage Simple
➔ Pratique
Partie 1

Classe et Objet
Notion de classe
Notion de classe
Notion de classe
Notion de classe
Notion de classe
Définition d’une classe
Définition d’une classe
Définition d’une classe
Portée des attributs
Portée des attributs
Définition externe des méthodes
Définition externe des méthodes
Actions et Prédicats
Actions et Prédicats
Déclaration d’objets
Utilisation des objets
Accès aux attributs
Appel aux méthodes
Appel aux méthodes
Accès aux attributs et méthodes
Encapsulation
Encapsulation et interface
Encapsulation et interface
Encapsulation et interface
Encapsulation et interface
Encapsulation et interface
Accesseurs et manipulateurs
Accesseurs et manipulateurs
Masquage/Shadowing
Masquage/Shadowing
Masquage et pointeur this
Pointeur sur l’objet courant : this
Fin de partie
POO
Pratique
Pratique
Celui qui pratique apprend vraiment.
Problème 1: Gestion des employés

Vous êtes chargé de développer un système de gestion des employés pour une entreprise. L'objectif est de concevoir
une classe pour représenter les employés, gérer leurs attributs et leurs actions.

Tâches à réaliser :
Définir une classe appelée Employee avec les attributs suivants :

name (nom de l'employé)


id (identifiant de l'employé)
salary (salaire de l'employé)

Implémenter les méthodes suivantes pour la classe Employee :

Un constructeur qui prend en paramètre le nom, l'identifiant et le salaire de l'employé.


Des accesseurs et des manipulateurs pour tous les attributs.
Une méthode printInfo() pour afficher les informations de l'employé.
Ajouter une méthode raiseSalary(double amount) pour augmenter le salaire de l'employé.

Dans le programme principal, créer plusieurs objets Employee avec différentes informations et afficher leurs détails.
Problème 1: Gestion des employés
Vous avez pour mission de créer un système de gestion des employés pour une entreprise. L'objectif est de
concevoir une classe qui représente les employés et qui permet de gérer leurs informations et leurs actions.

Dans ce cadre, vous devez créer une classe nommée Employee qui contiendra les détails essentiels de
chaque employé. Il s'agit notamment du nom de l'employé, de son identifiant unique au sein de l'entreprise et
de son salaire.

Votre travail consiste à implémenter différentes fonctionnalités pour cette classe Employee. Cela inclut la
mise en place de méthodes pour initialiser les informations de chaque employé, pour récupérer et modifier
ces informations, ainsi que pour afficher ces détails.

De plus, vous devrez ajouter une fonctionnalité permettant d'augmenter le salaire d'un employé.

Enfin, dans le programme principal, vous devrez créer plusieurs instances de la classe Employee, en leur
attribuant des informations spécifiques, puis afficher les détails de chaque employé.

Ce système permettra à l'entreprise de gérer efficacement les informations de ses employés et de leur
attribuer les augmentations de salaire nécessaires.
Partie 2

Héritage Simple
Généralités

L'héritage est le troisième des paradigmes de la


programmation orientée objet.

Il est basé sur le principe de réutilisation:


➔ Créer une nouvelle classe à partir d’une classe existante.
➔ Ajouter des fonctionnalités à partir d’une classe
existante.
Généralités

● L'héritage peut être simple ou multiple.

● L'héritage est mis en œuvre par


la construction de classes dérivées.
Généralités

A est la classe de base ou classe mère ou super-classe.

B est la nouvelle classe qui hérite de la classe existante A.


[Classe fille ou classe dérivée ou sous-classe].
Généralités

L'héritage représente la relation EST-UN:

➔ Un chat est un animal.


➔ Une moto est un véhicule.
➔ Un cercle est une forme.
Généralités

➔ La classe animal est la classe de base (classe supérieure).

➔ Les classes chat, chien et oiseau sont des classes dérivées


(sous-classes).
Héritage Définition
Une Classe Dérivée
Une Classe Dérivée
Syntaxe de l’héritage
Les droits d’accès en C++
Syntaxe de l’héritage (exemple)
Mode de derivation
Mode de derivation
Types d'Héritage en C++

Héritage Public (public):

➔ Les membres publics de la classe de base restent publics


dans la classe dérivée.

➔ Les membres protégés de la classe de base deviennent


des membres protégés dans la classe dérivée.
Types d'Héritage en C++
Types d'Héritage en C++

Héritage Protégé (protected):

➔ Les membres publics et protégés de la classe de base


deviennent protégés dans la classe dérivée.
Types d'Héritage en C++
Types d'Héritage en C++

Héritage Privé (private):

➔ Les membres publics et protégés de la classe de base


deviennent privés dans la classe dérivée.
Types d'Héritage en C++
Mode de derivation Résumé
Problème 2: Simulation d'un Système de Paiement

1- Créez une classe de base Paiement avec des attributs tels que montant
et destinataire.
2- Dérivez deux classes, PaiementCarteDeCredit et PaiementPayPal, à
partir de la classe Paiement.
3- Ajoutez des attributs spécifiques à chaque classe dérivée (par exemple,
numeroCarte pour PaiementCarteDeCredit et adresseEmail pour
PaiementPayPal).
4- Implémentez une fonction membre dans chaque classe pour effectuer le
paiement.
5- Créez des objets de chaque classe et appelez les fonctions pour simuler
des paiements.
Problème 3: extrait de l’examen 2023/2024

Imaginez que vous travaillez sur un système de gestion des employés d'une entreprise. Vous devez créer une hiérarchie de
classes pour représenter différents types d'employés, chacun avec des attributs spécifiques. Voici les spécifications de
base :

La classe de base s'appelle "Employee" et contient les attributs communs à tous les employés : nom et numéro
d'identification.
Les employés sont de deux types principaux : les employés permanents et les employés temporaires.

Les employés permanents ont un salaire mensuel fixe, tandis que les employés temporaires sont payés à l'heure.

Les employés permanents doivent avoir une méthode pour calculer le salaire mensuel, tandis que les employés
temporaires doivent avoir une méthode pour calculer le salaire basé sur le nombre d'heures travaillées.
Les employés permanents doivent également avoir une méthode pour afficher leurs informations, tout comme les
employés temporaires.

Votre tâche est de définir les classes nécessaires pour représenter ce système, en utilisant les concepts de la POO .
Problème 4: extrait de l’examen 2023/2024

Créez une classe 'Etudiant' comprenant trois attributs : [5pt]


● matricule (int),
● nom (string),
● moyenne (double).

Définissez les éléments suivants :


1. Un constructeur initialisant les données membres. (0.5pt)
2. Un constructeur de recopie. (0.5pt)
3. Une fonction affiche_etudiant() qui affiche les informations sur l'étudiant. (0.5pt)
4. La surcharge de l’opérateur de flux de sortie (<<). (1pt)
5. La surcharge de l’opérateur (==) (qui compare les matricules des étudiants). (0.5pt)
6. Une fonction est_admissible() : Retourne un booléen indiquant si l'étudiant est admissible (moyenne supérieure à 10.0). (1pt)
7. Une méthode de classe comparer_moyennes( Etudiant& etudiant1, Etudiant& etudiant2) : (qui compare les moyennes de deux
étudiants et retourne le nom de celui avec la moyenne la plus élevée et si ils ont la même moyenne affiche un message pour ca).(1pt)
Problème 4: extrait de l’examen 2023/2024

Créez une classe 'EtudiantBoursier' dérivant publiquement de la classe 'Etudiant' [3pt]


et ayant deux attributs :
● montant_bourse (double),
● type_bourse (string).

Définissez les éléments suivants :


1. Un constructeur initialisant les données membres.(1pt)
2. Une fonction affiche_etudiant_boursier() qui affiche les informations sur l'étudiant boursier (en tant qu'étudiant et étudiant
boursier). (1pt)
3. La surcharge de l’opérateur de flux d’entrée (>>). (0.5pt)
4. La surcharge de l’opérateur (==) (qui compare le matricule et le type de la bourse des étudiants). (0.5pt)
Problème 4: extrait de l’examen 2023/2024

Partie 1: (2.5pt)

Création d'un objet de la classe 'Etudiant'


a) Créez un objet de la classe 'Etudiant' nommé 'etudiant1' en lui attribuant les valeurs suivantes :
● Matricule : 123
● Nom : Fatima
● Moyenne : 12.
b) Affichez les informations de 'etudiant1'.
c) Utilisez la fonction est_admissible() pour déterminer si l'étudiant est admissible. Affichez le résultat.
d) Comparaison de moyennes:
d1) Créez un deuxième objet de la classe 'Etudiant' nommé 'etudiant2' avec les attributs :
● Matricule : 456
● Nom : Karim
● Moyenne : 14.2
d2) Comparez les moyennes de 'etudiant1' et 'etudiant2', puis affichez le résultat de la comparaison.
Problème 4: extrait de l’examen 2023/2024

Partie 2: (1.5pt)
Création d'un objet de la classe 'EtudiantBoursier'
a) Créer un objet dynamiquement de la classe 'EtudiantBoursier' nommés 'etudiantBoursier1' avec les attributs suivants :
● Matricule : 123,
● Nom : Salma,
● Moyenne : 18,
● Montant de bourse : 8000.0,
● Type de bourse : EmsiBourse.

b) Affichez les informations de 'etudiantBoursier1'.


Chaque fin est le début de quelque chose de nouveau.

Vous aimerez peut-être aussi