Vous êtes sur la page 1sur 12

Université Sidi Mohammed Ben Abdellah

Faculté des Sciences et Technique – FES


Département de Génie Electrique

Filière Ingénieur
Systèmes Intelligents, Communicants et Mobiles
(SICoM)

Travaux pratiques
Programmation Orientée Objet C++

Auteur :
Pr. Hicham GHENNIOUI

A.U. 2019-2020
Page 2/12

A.U. 2019-2020
Page 3/12

SOMMAIRE

OBJET .......................................................................................................................... 4
NOUVELLES POSSIBILITES DU C++ .................................................................. 5

1.1 EXERCICE 1 - – NOUVELLE POSSIBILITES D’ENTREES/SORTIES ...........................................5


1.2 EXERCICE 2 - MACRO ET CONVERSION DE TYPE ..................................................................5
1.3 EXERCICE 3 - LES ARGUMENTS PAR DEFAUT.........................................................................5
1.4 EXERCICE 4 - LA SURCHARGE DES FONCTIONS .....................................................................5
1.5 EXERCICE 5 - LES OPERATEURS NEW ET DELETE .................................................................6
1.6 EXERCICE 6 – PASSAGE PAR VALEUR, PAR ADRESSE ET PAR REFERENCE ............................6
1.7 EXERCICE 7 – MANIPULATION DE MATRICES........................................................................6
1.8 EXERCICE 8 – EXERCICES SUR LES FICHIERS ........................................................................7

PROGRAMMATION ORIENTEE OBJET EN C++ ............................................. 9

1.9 EXERCICE 1 – CLASSE POINT .................................................................................................9


1.10 EXERCICE 2 – CONSTRUCTEUR/DESTRUCTEUR ..................................................................10
1.11 EXERCICE 3 – CONSTRUCTEUR PAR RECOPIE .....................................................................10
1.12 EXERCICE 4 – FONCTION INDEPENDANTE AMIE D’UNE CLASSE .........................................10
1.13 EXERCICE 5 – METHODE D’UNE CLASSE AMIE D’UNE AUTRE CLASSE ................................11
1.14 EXERCICE 6 – HERITAGE SIMPLE ........................................................................................11
1.15 EXERCICE 7 – HERITAGE MULTIPLE ...................................................................................11

A.U. 2019-2020
Page 4/12

OBJET

Ce document concerne les travaux pratiques du cours « Programmation Orientée


Objet C++ » de la filière ingénieur en Systèmes Intelligents, Communicants et Mobiles
(SICoM) au sein de la Faculté des Sciences et Techniques de Fès (FSTF).
Ces travaux pratiques traitent en particulier,
- Nouvelles possibilités du C++,
- Programmation Orientée Objet en C++,

Pour en tirer un bon profit de ces séances de travaux pratiques, il est conseillé de
préparer tous les travaux avant l’arrivé en salle de TP.

Tous les documents de Cours/TP sont disponibles sur le site:


https://www.easyclass.com/

A.U. 2019-2020
Page 5/12

NOUVELLES POSSIBILITES DU C++

1.1 EXERCICE 1 - – NOUVELLE POSSIBILITES D’ENTREES/SORTIES


Ecrire un programme qui permet de demander à l’utilisateur de saisir respectivement un entier, un
réel, un caractère, une chaine de caractères et d’afficher ensuite les résultats.
Exemple de résultat

1.2 EXERCICE 2 - MACRO ET CONVERSION DE TYPE


Ecrire une fonction double previouspuissance2(float x) qui renvoie la grande précédente puissance
de deux (le dernier p tel que 2p<|x|) . int main(){
double x;
Indications : int n;
- utiliser la fonction inline pour calculer la valeur cout<<"Saisir un
absolue d’un réel reel:"<<endl;cin>>x;
- utiliser la fonction log à base de 2 (log2) de la n=previouspuissance2( x);
bibliothèque < math.h > cout<<"Next puissance 2 est :
Exemple de résultat "<<n<<endl;
return 0;}

1.3 EXERCICE 3 - LES ARGUMENTS PAR DEFAUT


Reprendre l’exercice 2, la fonction doit par défaut renvoyer la puissance 8.

1.4 EXERCICE 4 - LA SURCHARGE DES FONCTIONS


Reprendre la fonction de l’exercice 2 et rajouter une fonction de même nom avec la particularité de
passer comme argument un zéro.
Exemple de résultat

A.U. 2019-2020
Page 6/12

1.5 EXERCICE 5 - LES OPERATEURS NEW ET DELETE


Déclarer un tableau de cinq réels. Calculer et afficher leur maximum, leur minimum et leur moyenne.

1.6 EXERCICE 6 – PASSAGE PAR VALEUR, PAR ADRESSE ET PAR REFERENCE


1. Ecrire trois fonctions permettant d’échanger les valeurs de deux entiers : le passage
d’argument des fonctions se fait respectivement par valeur, par adresse et par référence.
echange(int a,int b), echange(int *a,int *b), echange(int &a,int &b).
2. Que peut-on déduire ?

1.7 EXERCICE 7 – MANIPULATION DE MATRICES


1. Ecrire un programme qui permet de lire une matrice au clavier, d’afficher la matrice, le min,
le max, la moyenne, la puissance de la matrice et sa transposée.
Exemple de résultat

2. Reprendre la question précédente tout en utilisant la structure suivante,


#include <iostream>
#include <math.h>
#include <limits>
using namespace std;
void LireDimMat(int *L, int Lmax, int *C, int Cmax){

A.U. 2019-2020
Page 7/12

do{
……………………………….. }
while(*L<0 || *L>Lmax);
……………………………….. }
void lirematrice(double *A, int L, int C, int Cmax){
for(int ii=0;ii<L;ii++)
for (int jj=0;jj<C;jj++)
{
……………………………….. } }
void ecrirematrice(double *A, int L, int C, int Cmax){
………………………………..}
void matricetransposee(double *At, double *A, int L, int C, int Lmax, int Cmax){
………………………………..}
void minmatrice(double *Min, double *A, int L, int C,int Cmax){
………………………………..}
void maxmatrice(double *Max, double *A, int L, int C,int Cmax){
………………………………..}
double moymatrice( double *A, int L, int C,int Cmax){
………………………………..}
int main(){
double *A, *At, *Min, *Max, Moy; A=new double (10000);At=new double(10000);Min=new double (3);
Max=new double (3); int L, C;
LireDimMat(&L, 100, &C, 100);
………………………………..
lirematrice( (double*)A, L, C,100);
………………………………..
ecrirematrice( (double*)A, L, C,100);
………………………………..
matricetransposee((double*)At,(double*)A, L, C, 100,100);
ecrirematrice( (double*)At, L, C,100);
minmatrice((double*)Min, (double*)A, L, C,100);
………………………………..
maxmatrice((double*)Max, (double*)A, L, C,100);
………………………………..
Moy=moymatrice( (double*)A, L, C,100);
………………………………..
delete(At); delete(Min); delete(Max); delete(A); return 0 ;}
Exemple de résultats

1.8 EXERCICE 8 – EXERCICES SUR LES FICHIERS

A.U. 2019-2020
Page 8/12

1. Ecrire un programme C++ qui permet de saisir et de mémoriser dans un fichier nommé
répertoire, le nom et le numéro de téléphone de 5 personnes.
2. Ecrire un programme C++ qui permet d’afficher à l’écran le contenu du fichier répertoire, en
sautant une ligne entre chaque personne.
3. Ecrire un programme C++ qui permet de saisir et de mémoriser dans un fichier binaire nommé
rep_binary, le nom et le numéro de téléphone de 5 personnes.
4. Ecrire un programme C++ qui permet d’afficher à l’écran le contenu du fichier binaire
rep_binary, en sautant une ligne entre chaque personne

A.U. 2019-2020
Page 9/12

PROGRAMMATION ORIENTEE OBJET EN C++

1.9 EXERCICE 1 – CLASSE POINT


Un point du plan est considéré comme un doublet de deux réels : abscisse x et ordonnée y. Les deux
actions qu’on puisse faire sur un point (pour cet exercice) sont les suivantes : un point peut être
déplacé de (δx, δy) et afficher le point sous la forme (x, y).

1. Ecrire une classe Point contenant les attributs et les méthodes définis dans le tableau suivant,

Attributs Abscisse x, ordonnée y, déplacement suivant l’abscisse dx et suivant l’ordonnée dy : entiers,


privés

Les trois méthodes suivantes sont publiques,

Méthodes - void initialiser(int, int) : initialiser un point

- void deplacer(int, int) : déplacer un point

- void afficher() : afficher l’emplacement du point au niveau de l’écran

Indications - Utiliser system("pause"); et system("cls");

- La fonction gotoxy() n’est pas connu par Dev C++, il faut la redéfinir de la façon suivante
(ajouter #include <windows.h>),
void gotoxy(int x,int y){
HANDLE hcon; hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos; dwPos.X = x; dwPos.Y= y;
SetConsoleCursorPosition(hcon,dwPos); }

2. Créer un objet a de type Point, initialiser le point et afficher son emplacement, ensuite déplacer
le point et le réafficher (Indication : pour afficher le déplacement, utiliser un autre objet b et
affecter b=a ;)

3. Créer un objet dynamiquement par new.

Exemple de résultat

Etape 1 Etape 3

Etape 2

A.U. 2019-2020
Page 10/12

1.10 EXERCICE 2 – CONSTRUCTEUR/DESTRUCTEUR


Reprendre l’exercice 1 et remplacer la méthode initialiser par un constructeur avec arguments.

- Utiliser un destructeur (cf. exemple de


résultat) .

- Essayer d’utiliser la méthode Sleep() pour


temporiser le passage de la ligne « Je suis en 1
4 » à la ligne « Je suis en 3 7 » .

1.11 EXERCICE 3 – CONSTRUCTEUR PAR RECOPIE


1. Ecrire une classe Point contenant deux attributs (abscisse x et ordonnée y), un constructeur avec
arguments et un destructeur.

1.1 créer un objet a et afficher son


adresse.

1.2 Créer un second objet b et


affecter b=a. Conclure ?

2. Créer un constructeur par recopie et réafficher l’adresse des deux objets a et b.

1.12 EXERCICE 4 – FONCTION INDEPENDANTE AMIE D’UNE CLASSE


Ecrire une fonction indépendante amie de la classe Point et qui permet de tester si un point coïncide
avec un autre point.

Exemple de résultat

A.U. 2019-2020
Page 11/12

1.13 EXERCICE 5 – METHODE D’UNE CLASSE AMIE D’UNE AUTRE CLASSE


Ecrire un programme qui calcule le produit d’une matrice 3x3 et un vecteur 3x1 (Utiliser une fonction
« prod » membre de la classe Matrice, amie de la classe Vecteur).

1.14 EXERCICE 6 – HERITAGE SIMPLE


1. Ecrire une classe Point contenant deux Exemple de résultat
attributs (abscisse x et ordonnée y), constructeur,
destructeur et deux méthodes (deplacer(int dx,int dy)
et void afficher()).

2. Ecrire une classe fille PointCol de la classe de base


Point, contenant un entier court représentant la
couleur, un constructeur, un destructeur et deux
méthodes (void couleur(short cl) et void afficher()).

3. Créer un objet de la classe fille, afficher leur


coordonnée, le déplacer et réafficher leur coordonnée.

1.15 EXERCICE 7 – HERITAGE MULTIPLE


Ecrire un programme contenant deux classes Point Exemple de résultat
et Couleur et leur sous-classe PointCol. Les
caractéristiques des ces classes sont décrites au
niveau du tableau ci-dessous.

Point Couleur PointCol

Attributs Abscisse x et ordonnées y : Couleur c : entier court, privé Cote z: entier, privé
entiers, protégés

Les trois méthodes suivantes Les trois méthodes suivantes Les trois méthodes suivantes sont
sont publiques, sont publiques, publiques,

A.U. 2019-2020
Page 12/12

- Constructeur avec - Constructeur avec - Constructeur avec arguments


arguments abscisse et argument couleur de valeur abscisse, ordonnée, cote et
ordonnée de valeurs par par défaut 100 couleur de valeur par défaut
défaut 10 et 15 10, 20, 150 et 2
Méthodes - Destructeur respectivement,
- Destructeur
- Afficher : afficher la - Destructeur
- Afficher : afficher x et y, couleur, ne retourne rien,
retourne rien, pas pas d’arguments - Afficher : afficher les
d’arguments coordonnées et la couleur, ne
retourne rien, pas d’arguments

A.U. 2019-2020

Vous aimerez peut-être aussi