Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% ont trouvé ce document utile (0 vote)
55 vues26 pages

Touht

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 26

Les comptes rendus du Tps :

Programmation orienté objet

Réaliser par : Filière : G2E


2023/2024
AOUIFIA ABDELADIM
CHAKIRI MOHAMMED
ALJAHID SOUFIANE

Encadré par :
Pr. Mme : Samira Touhtouh

1
TP1 : LES ENTREES_SORTIES ET LES INSTRUCTION DE CONTROLE

Introduction :
Un peu d’histoire
• Le langage C++ est créé au début des années 1980 par Bjarne Stroustrup.
• Le C++ est une amélioration du langage C en lui ajoutant la notion de classe.
• C++11 est un véritable renouveau de C++, suivi de C++14 et C++17, ajoutant de nombreuses
fonctionnalités au langage.
Pourquoi le langage C++ ?
• Le C++ est très rapide.
• Langage compilé et proche de la machine.
• Le C++ est très répondu dans le calcul numérique à haute performance (p.ex résoudre des
problèmes physiques et de l’analyse numérique) Intégration numériques.
• Résolution numérique des équations différentielles ordinaires.
• Résolution numérique de systèmes d’équations algébriques ou différentielles.
• Le C++ est un langage multiparadigmes. Programmer de différentes façons : la programmation
procédurale, orientée objet ou générique.

• EXERCIXE 1 : somme et produit

2
EXERICICE 2
Soit le programme suivant :

Le role de chaque instruction du programme au-dessus :


• #include bibliothèque standard.
• Une seul fonction main () qui sera exécutée après la compilation. La fonction principale main()
est obligatoire dans tous programme C++.
• Using namespace std : c’est une région déclarative qui fournit une portée aux identificateurs
(cout, cin, endl….) à l'intérieur.
• cout : affiche ce qui suit à l'écran, soit des chaînes de caractères de façon littérale.
• cin : permet de lire des caractères à partir du clavier.
• endl : fait aller à la ligne suivante.
• << : indiquer que c’est une sortie.
• >> : Indiquer que c’est entrée.
A chercher
• setprecision : fixer le nombre des chiffres significatifs pour float et double après la virgule .
• Une instruction se termine toujours par un " ;" pour qu’elle soit exécutable.
• setw(i) : i est la largeur minimale de la prochaine donnée à afficher.
• setfill : Fixe le caractère de remplissage.
• hex : afficher le nombre en base hexadécima

Comparaison entre le langage c et le langage c++ :


➢ le programme qui calcule la somme et le produit entre deux nombres dans langage c est :

3
#include <stdio.h>

int main()
{
int n,m,p,s;
printf("saisair les deux nombres \n:");
scanf("%d%d,&n,&m");
s=n+m;
p=n*m;
printf("la somme est %d\n",s);
printf("la Produit est %d\n",p);
return 0;
}

EXERCICE 3 :
Écrire un programme qui calcule les racines carrées de nombres fournis en donnée. Il
s’arrêtera lorsqu’on lui fournira la valeur 0. Il refusera les valeurs négatives. Son exécution se
présentera ainsi:
donnez un nombre positif : 2
sa racine carrée est : 1.414214e+00
donnez un nombre positif : -1
svp positif
donnez un nombre positif : 5
sa racine carrée est : 2.236068e+00
donnez un nombre positif : 0
le execution de programme est :

4
Comparaison entre langage c++ et langage c :
➢ Dans c il ya printf et scanf au lieu de cin et cout dans c++
➢ Il n’ya pa alternative direct dans c
➢ setfill dans c++ peut être remplacer par surprintf dans c
➢ Le langage c pour la programmation procédurale et le langage c++ pour ma programation oriente
objet

5
TP3 : Classes et objets

Exercice 1 :
Création de programme

P est majuscule :

6
Explication de la message d’erreur :
Si on ne fait pas " public :" avant la déclaration de la méthode on ne peut pas faire l'appel à
ces méthodes en dehors de la classe point et il nous affiche l'erreur "private", puisque on ne
pas utiliser les méthodes d’une classe en dehors de la classe, ils sont privés à la classe, et aussi
il existe le problème de ne pas respecter la même notation pour < point> il un écrit en
majusculer et l’autre écrit en minuscule

Proposition de solution :
Afin d’utiliser les méthodes d’une classe en dehors de cette classe en ajoute l’instruction «
public : » avant la définition de la méthode pour que les méthodes soient publics
Avec public et p est minuscule

Modification sur le programme :

Les commentaires sur la modification du programme :


On peut faire l'affectation des objets tels que l'objet point1 va prendre les données de l'objet point2.

7
int main()

point point1,point2;

point1.initialise(3,4); //initialise l'objet point1 par (3,4)

point1.affiche(); //affiche point1

point2.initialise(1,2); //initialise l'objet point2 par (1,2)

point1=point2; //affecte les coordonnées de point2 au coordonnées du point1

point1.affiche(); //affiche le nouveau point1

Exercice 2 :

8
TP 4 : constructeur et destructeur

Structure d’un programme en C++ :


Nos programmes seront généralement composés d’un nombre impair de fichiers :
– pour chaque classe :
Un fichier .h contenant sa d´déclaration,
Un fichier .cpp contenant sa d´définition,
– un fichier .cpp contenant le traitement principal.
Ce dernier fichier contient la fonction main, et c’est par cette fonction que commence
l’exécution du programme.
Constructeur :
Un constructeur est une fonction-membre d´déclarée du même nom que la classe, et sans type
:
Nom classe(<paramètres >);
Fonctionnement : `à l’exécution, l’appel au constructeur produit un nouvel objet de la classe,
dont onpeut prévoir l’initialisation des données-membres dans le d´définition du constructeur.
Dans une classe, il peut y avoir plusieurs constructeurs `a condition qu’ils diffèrent par le
nombre ou le type des paramètres. Un constructeur sans paramètre s’appelle constructeur par
défaut.
Destructeurs :
Un destructeur est une fonction-membre d´déclarée du même nom que la classe mais précédée
d’un tilda (~) et sans type ni paramètre :
~Nom classe ();
Fonctionnement : `a l’issue de l’exécution d’un bloc, le destructeur est automatiquement
appelé pour chaque objet de la classe Nom classe d´déclaré dans ce bloc. Cela permet par
exemple de programmer la restitution d’un environnement, en libérant un espace-mémoire
alloué par l’objet. Nous n’en ferons pas souvent usage

Exercice 1 :

9
Dans cet exercice, on a créé une CLASS qui porte le nom de « point », après on a eu la création de 2
nouveaux fichiers.
 Fichier.h
 Fichier.cpp

 Le premier fichier contient la classe portant le nom -point- dans lequel on peut définir le
programme de notre classe et trouver un destructeur et constructeur par défaut.
 Le deuxième fichier porte les corps du constructeur et destructeur.
 Point () : est une méthode particulière appelées Le constructeur, porte le nom de
classe qui ne renvoie rien (même pas void) dont son rôle est initialisé les attributs
de la classe.
 ~Point () : c’est une méthode qui est appelée automatiquement lorsqu’un objet
est détruit, porte le nom de la classe avec le symbole ~, appelées Le destructeur.

10
11
Exercice 2 :

Ecrire une fonction de prototype point test () qui retourne un point . ce point sera initialisé et
affiché dans test puis déplacé et à niveau affiché dans main.

12
Utiliser la class <<point>>de l’exercice 1-1.
Pour écrire une fonction de prototype void test() dans la quelle on déclare un point u ,on
l’initialise, on l’affiche, on déplace et on l’affiche à nouveau

13
14
Il existe ou moins deux méthodes Pour initialiser et déplacer et afficher un point,
Tell la première en créant une fonction qui regroupes les membres de la classe et la déclarer
en main, et la deuxième en déclarant le point directement dans la main.

Constructeur de copie :

Programme A :

15
Programme B :

Interprétation : constructeur de copie

Programme A : Après l’allocation dynamique d’une case mémoire à l’objet a on a créé une
copie de ce dernier et la nommer b, on remarque dans le programme que la modification du
contenu de a changé aussi le contenu de b ; la copie du pointeur *s ne duplique pas la chaine
pointée : les deux objets La plupart du temps ce partage n'est pas souhaitable, car difficile à
gérer et dangereux : toute modification de l'étiquette d'un des deux points se répercutera
immédiatement sur l'autre(comme dans notre cas).

Programme B : dans ce programme on a utilisé le constructeur de copie afin d’éviter ce


problème tel qu’on remarque la modification de l’origine n’affecte pas la copie ; la
duplication effective de la chaine de caractère pointé.

Fonction amies :
Exercice 1 :

16
ROLE DE LA FONCTION AMIES
Après le test du programme on a remarqué qu’on a pu accéder aux attributs privés de la classe
testée. La méthode amie ( friend int coincide (point, point)) qu’on a déclarée nous a permet
d’utilisés les attributs privés de la classe où elle est déclaré à l’extérieur de cette dernière.

Exercice 2 :
Créer un programme qui additionne deux objets appartenant a deux classes A et B .
Utiliser une fonction ami qui additionne

Commentaire :
la fonction membre de la classe ‘B’ peut accéder aux membres privées de n’importe quel
objet de la classe ‘A’.
Pour compiler correctement la déclaration de la classe ‘A’, contenant une déclaration d’une
fonction amie, il faut : - Définir ‘B’ avant ‘A’. - Déclarer ‘A’ avant ‘B’.

17
TP5 : les fonctions

Généralités :
Pour en faciliter et en améliorer la gestion, les programmes complexes sont décomposés en
sous-programmes plus élémentaires et plus simples appelés fonctions.
En programmation, l’utilisation des fonctions a pour but de :
➢ Simplifier la réalisation et la maintenance des programmes.
➢ Éviter les répétitions.
➢ Favoriser la réutilisabilité des codes.
Le découpage d’un programme en fonctions (modules) est appelée programmation
modulaire.

Fonction :
Définition :
➢ Une fonction est un sous programme du C++ permet de regrouper des instructions et
de lancer leur exécution grâce à un nom.
➢ Une fonction est un sous-programme qui agit sur des données (paramètres) et retourne
une valeur. Déclaration d’une fonction
Déclaration d’une fonction :
➢ La déclaration d’une fonction (prototypage) est désignée sous le nom de prototype de
la fonction.
➢ Un prototype (en-tête de la fonction) donne le nom, le nombre et le type d’arguments
d’entrée ainsi que le type de la valeur retournée par la fonction.
Syntaxe de déclaration : type_retourné nom_fonction ( type1 arg1, type2 arg2, ... ) ;
➢ Toute fonction utilisée dans le programme principal doit être déclarée avant main
Programme 1 :

18
Conclusion :
Lors de l’appel de la fonction, c’est seulement une copie des valeurs des paramètres effectifs
qui est affectées aux paramètres formels c’est le Passage par valeur .

Programme 2 :

Conclusion :

Ici, c’est l’adresse des emplacements mémoire des paramètres réels qui est copiée dans les
paramètres formels c’est le Passage par adresse (Pointeur).

19
Programme 3 :

Conclusion :
Dans ce cas, le paramètre formel est un alias (synonyme) de l’emplacement mémoire du
paramètre réel c’est le Passage par référence.

20
TP 7 : La surcharge des opérateurs

Surcharge d’opérateur

• C++ permet de sur définir les opérateurs tels que +, =, +=, ++, <<, new…
• Fondamentalement, l’appel à un opérateur est identique à l’appel d’une fonction →possibilité de sur
définir
• Le but est de définir ces “fonctions” pour des classes dépourvues de ces opérateurs

Exercice 1 :
Exécution de programme :

1)-La méthode utilisée pour surcharger l’opérateur+ :

La méthode utilisée pour surcharger l’opérateur + est surcharge des opérateurs internes parce qu'il est déclarés à
l'intérieur de la classe.

2)- Utilisons une fonction amie pour surcharger le même opérateur :

21
3- Surcharge de l’opérateur –

Exercice 2 :

1)- La méthode utilisée pour surcharger l’opérateur == :

La méthode utilisée pour surcharger l’opérateur est surcharge externe puisque la définition de l'opérateur ne se
fait plus dans la classe qui l'utilise, mais en dehors de celle-ci.

1-exicution du programme :

22
Si les deux valeurs sont différent :

2-Autres méthode :

3- Surcharge de l’opérateur != :

23
TP 8 : L’ héritagé
L'héritage (en anglais inheritance) est un principe propre à la programmation orientée objet, permettant de créer une
nouvelle classe à partir d'une classe existante. Le nom d'"héritage" (pouvant parfois être appelé dérivation de classe)
provient du fait que la classe dérivée (la classe nouvellement créée) contient les attributs et les méthodes de sa
superclasse (la classe dont elle dérive). L'intérêt majeur de l'héritage est de pouvoir définir de nouveaux attributs et de
nouvelles méthodes pour la classe dérivée, qui viennent s'ajouter à ceux et celles héritées.
Par ce moyen on crée une hiérarchie de classes de plus en plus spécialisées. Cela a comme avantage majeur de ne pas
avoir à repartir de zéro lorsque l'on veut spécialiser une classe existante. De cette manière il est possible d'acheter dans
le commerce des librairies de classes, qui constituent une base, pouvant être spécialisées à loisir (on comprend encore
un peu mieux l'intérêt pour l'entreprise qui vend les classes de protéger les données membres grâce à l'encapsulation...).

EXERCICE 1 :

1-le teste de programme :

2) on ajoute la méthode affiche dans pointcol :

24
4-teste de programme :

Exercice 2 :

Créer une class personne et une objet pa pour afficher le nom, prénom et l’âge d’une personne .créer ensuite une classe
étudiante qui permet d’afficher en plus du nom ;prénom et l’age ,la note de cet étudiante .

25
26

Vous aimerez peut-être aussi