SlideShare uma empresa Scribd logo
1 de 5
Baixar para ler offline
[TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 1
Prof : Mariem ZAOUALI – Niveau : GL2
1. Objectif de la séance
Le but de la séance est de manipuler les notions suivantes :
 Les constructeurs, mutateurs et accesseurs
 La création des objets dynamiques
 Les pointeurs, références et tableaux
 Passage de paramètres
2. Notions du pointeur, référence et tableau
Question 1 : Donnez les valeurs de A,B,C, P1 et P2 suite à ce main
int A =1, B=2, C=3 ;
int *P1, *P2 ;
P1=&A
P2=&C
*P1=(*P2)++
P1=P2
P2=&B
*P1-=*P2
++*P2
*P1*=*P2
A=++*P2**P1
P1=&A
*P2=*P1/=*P2
Question 2 : Un pointeur et une référence
 Déclarez un tableau d'entiers A de dimension 10
 Développez deux méthodes, remplitA et afficherA, permettant de remplir et d’afficher le tableau.
 Déclarez une référence vers l'élément 5 du tableau et incrémenter sa valeur
 Déclarez un pointeur vers l'élément 7, incrémenter le pointeur et la valeur pointée
Question 3 : Passage de paramètre par valeur vs Passage de paramètre par référence vs Passage de paramètre
par pointeur
Voici trois implémentations de la méthode square :
[TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 2
int square(int n) {
cout << "In square(): " << &n << endl; // 0x22ff00
n *= n;
return n;
}
void square(int * pNumber) {
cout << "In square(): " << pNumber << endl; // 0x22ff1c
*pNumber *= *pNumber;
}
void square(int & rNumber) { )
cout << "In square(): " << &rNumber << endl; // 0x22ff1c
rNumber *= rNumber
}
Implémentez la méthode main, où vous appelez la méthode square. Appelez la méthode cout pour afficher la
valeur du l’entier passé en paramètre. Quand est-ce que la valeur du nombre passé en paramètre change ?
3. Gestion des données des étudiants
On veut développer une application qui permet de saisir les données des étudiants et de calculer leurs
moyennes. On va commencer tout d’abord par la création d’ :
 Une classe intitulée Matiere avec :
o Attributs : intitule de type tableau de char, coefficient de type double, note de type double
o Méthodes :
 Les accesseurs (getters & setters) (voir l’annexe pour comprendre c’est quoi)
 Un constructeur
 Un destructeur
 Une classe intitulée Etudiant avec :
o Attributs : Num_carte de type int, Téléphone de type int, Moyenne de type double, matieres est
un Tableau de type Matiere
o Méthodes :
 Les accesseurs (getters & setters)
 Méthode void afficher() : permet d’afficher les données d’un étudiant
 Méthode double calcul_moyenne(Tableau de taille 2 de type Matiere) : permet de
calculer la moyenne de l’étudiant – utilisez la bibliothèque <cmath>
[TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 3
 Méthode boolean reussi() : permet de déduire si l’étudiant en question a réussi ou pas
s’ il aura une moyenne supérieure à 10
 Un constructeur
 Un destructeur
 Une classe intitulée Filiere avec :
o Attributs : id_filiere de type int, Etudiants de type Tableau d’Etudiant
o Méthodes :
 Les accesseurs (getters & setters)
 Méthode void afficher() : permet d’afficher les données de tous les étudiants de la
filières
 Un constructeur
 Un destructeur
Les attributs seront privés et les méthodes publiques.
Travail demandé :
1. Ecrivez le code des classes demandées.
Rendez-vous à votre EDI. Créez un nouveau projet. Nommez le TP2_Gestion_Etudiant.
Figure 1 Créer un nouveau projet
Une fois que votre projet est créé, ajoutez un nouveau « C++ Main File » comme montre la figure 2.
Commencez à écrire vos classes.
[TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 4
Figure 2 Créer une nouvelle classe C++
2. Ecrivez une méthode main pour tester le scénario suivant :
a. Vous pouvez choisir entre demander la saisie des données ou de créer les objets demandés sans
passer par la saisie du clavier
b. Tester avec 4 étudiants, 3 matières et 2 filières
3. Surchargez un des constructeurs. Utilisez la liste d’initialisation
4. On veut ajouter une méthode intitulée boolean appartenance( parametre) à la classe appropriée
(argumentez votre choix) pour vérifier si un Etudiant, passé en paramètre, appartient à une filière
donnée.
On va rajouter 3 variantes de cette méthode. Insérez-les dans votre main. C’est quoi la différence ?
Expliquez.
boolean appartenance( Etudiant e)
boolean appartenance( Etudiant *e)
boolean appartenance( Etudiant &e)
Annexe
C’est quoi un accesseur ou getter?
Un accesseur est une fonction membre permettant de récupérer le contenu d'une donnée membre protégée. Un
accesseur, pour accomplir sa fonction1
:
 doit avoir comme type de retour le type de la variable à renvoyer
 ne doit pas nécessairement posséder d'arguments
Une convention de nommage veut que l'on fasse commencer de façon préferrentielle le nom de l'accesseur par
le préfixe Get, afin de faire ressortir sa fonction première.
1
http://www.commentcamarche.net/contents/183-les-accesseurs-et-les-mutateurs-en-langage-c
[TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++
INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 5
class Personne{
private :
int age;
public :
int GetAge();
};
int Personne::GetAge(){
return age;
}
C’est quoi un mutateur ou setter?
Un mutateur est une fonction membre permettant de modifier le contenu d'une donnée membre protégée. Un
mutateur, pour accomplir sa fonction1
:
 doit avoir comme paramètre la valeur à assigner à la donnée membre. Le paramètre doit donc être du
type de la donnée membre
 ne doit pas nécessairement renvoyer de valeur (il possède dans sa plus simple expression le type void)
Une convention de nommage veut que l'on fasse commencer de façon préférentielle le nom du mutateur par le
préfixe Set.
class Personne{
private :
int _age;
public :
void SetAge(int);
};
void Personne::SetAge(int age){
_age = age;
}

Mais conteúdo relacionado

Mais procurados

Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
Daoua Lotfi
 
Langage C
Langage  CLangage  C
Langage C
jwilili
 

Mais procurados (20)

Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à python
 
C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Formation C# - Cours 4
Formation C# - Cours 4Formation C# - Cours 4
Formation C# - Cours 4
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simples
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
Csharp2014
Csharp2014Csharp2014
Csharp2014
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
System c eniso_jan_fev_07
System c eniso_jan_fev_07System c eniso_jan_fev_07
System c eniso_jan_fev_07
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Langage C
Langage  CLangage  C
Langage C
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 

Semelhante a TP2 Atelier C++/ GL2 INSAT / Tunisie

Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...
abdelghani04
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
Gregory Renard
 

Semelhante a TP2 Atelier C++/ GL2 INSAT / Tunisie (20)

Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1
 
Deuxième partie.pptx
Deuxième partie.pptxDeuxième partie.pptx
Deuxième partie.pptx
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptx
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
1 tdi synthese_principale_v2_2015.docx
1 tdi synthese_principale_v2_2015.docx1 tdi synthese_principale_v2_2015.docx
1 tdi synthese_principale_v2_2015.docx
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
Serie
SerieSerie
Serie
 
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-1-o...
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-1-o...Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-1-o...
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-1-o...
 
passage tdi 2015 v1
passage tdi 2015 v1passage tdi 2015 v1
passage tdi 2015 v1
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
 
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...
Examen de-passage-developpement-informatiques-tsdi-2015-synthese-variante-2-o...
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 
Linq Tech Days08 Lux
Linq Tech Days08 LuxLinq Tech Days08 Lux
Linq Tech Days08 Lux
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
Examen de passage TDI - Synthèse V1 - 2015
Examen de passage TDI - Synthèse V1 - 2015Examen de passage TDI - Synthèse V1 - 2015
Examen de passage TDI - Synthèse V1 - 2015
 
langage C++
langage C++langage C++
langage C++
 
4sci ap(2)
4sci ap(2)4sci ap(2)
4sci ap(2)
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 

Mais de Mariem ZAOUALI

Chap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonChap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en python
Mariem ZAOUALI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jms
Mariem ZAOUALI
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia
Mariem ZAOUALI
 

Mais de Mariem ZAOUALI (13)

Chap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en pythonChap5 La manipulation des iterables en python
Chap5 La manipulation des iterables en python
 
Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers
 
Chap7 simulation numérique
Chap7 simulation numériqueChap7 simulation numérique
Chap7 simulation numérique
 
Chap4 Récursivité en python
Chap4 Récursivité en pythonChap4 Récursivité en python
Chap4 Récursivité en python
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Chap2 Les conteneurs en python
Chap2 Les conteneurs en pythonChap2 Les conteneurs en python
Chap2 Les conteneurs en python
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jms
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corba
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de base
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
Comment retrouver la forme récursive
Comment retrouver la forme récursiveComment retrouver la forme récursive
Comment retrouver la forme récursive
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia
 

Último

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 

Último (20)

Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 

TP2 Atelier C++/ GL2 INSAT / Tunisie

  • 1. [TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 1 Prof : Mariem ZAOUALI – Niveau : GL2 1. Objectif de la séance Le but de la séance est de manipuler les notions suivantes :  Les constructeurs, mutateurs et accesseurs  La création des objets dynamiques  Les pointeurs, références et tableaux  Passage de paramètres 2. Notions du pointeur, référence et tableau Question 1 : Donnez les valeurs de A,B,C, P1 et P2 suite à ce main int A =1, B=2, C=3 ; int *P1, *P2 ; P1=&A P2=&C *P1=(*P2)++ P1=P2 P2=&B *P1-=*P2 ++*P2 *P1*=*P2 A=++*P2**P1 P1=&A *P2=*P1/=*P2 Question 2 : Un pointeur et une référence  Déclarez un tableau d'entiers A de dimension 10  Développez deux méthodes, remplitA et afficherA, permettant de remplir et d’afficher le tableau.  Déclarez une référence vers l'élément 5 du tableau et incrémenter sa valeur  Déclarez un pointeur vers l'élément 7, incrémenter le pointeur et la valeur pointée Question 3 : Passage de paramètre par valeur vs Passage de paramètre par référence vs Passage de paramètre par pointeur Voici trois implémentations de la méthode square :
  • 2. [TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 2 int square(int n) { cout << "In square(): " << &n << endl; // 0x22ff00 n *= n; return n; } void square(int * pNumber) { cout << "In square(): " << pNumber << endl; // 0x22ff1c *pNumber *= *pNumber; } void square(int & rNumber) { ) cout << "In square(): " << &rNumber << endl; // 0x22ff1c rNumber *= rNumber } Implémentez la méthode main, où vous appelez la méthode square. Appelez la méthode cout pour afficher la valeur du l’entier passé en paramètre. Quand est-ce que la valeur du nombre passé en paramètre change ? 3. Gestion des données des étudiants On veut développer une application qui permet de saisir les données des étudiants et de calculer leurs moyennes. On va commencer tout d’abord par la création d’ :  Une classe intitulée Matiere avec : o Attributs : intitule de type tableau de char, coefficient de type double, note de type double o Méthodes :  Les accesseurs (getters & setters) (voir l’annexe pour comprendre c’est quoi)  Un constructeur  Un destructeur  Une classe intitulée Etudiant avec : o Attributs : Num_carte de type int, Téléphone de type int, Moyenne de type double, matieres est un Tableau de type Matiere o Méthodes :  Les accesseurs (getters & setters)  Méthode void afficher() : permet d’afficher les données d’un étudiant  Méthode double calcul_moyenne(Tableau de taille 2 de type Matiere) : permet de calculer la moyenne de l’étudiant – utilisez la bibliothèque <cmath>
  • 3. [TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 3  Méthode boolean reussi() : permet de déduire si l’étudiant en question a réussi ou pas s’ il aura une moyenne supérieure à 10  Un constructeur  Un destructeur  Une classe intitulée Filiere avec : o Attributs : id_filiere de type int, Etudiants de type Tableau d’Etudiant o Méthodes :  Les accesseurs (getters & setters)  Méthode void afficher() : permet d’afficher les données de tous les étudiants de la filières  Un constructeur  Un destructeur Les attributs seront privés et les méthodes publiques. Travail demandé : 1. Ecrivez le code des classes demandées. Rendez-vous à votre EDI. Créez un nouveau projet. Nommez le TP2_Gestion_Etudiant. Figure 1 Créer un nouveau projet Une fois que votre projet est créé, ajoutez un nouveau « C++ Main File » comme montre la figure 2. Commencez à écrire vos classes.
  • 4. [TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 4 Figure 2 Créer une nouvelle classe C++ 2. Ecrivez une méthode main pour tester le scénario suivant : a. Vous pouvez choisir entre demander la saisie des données ou de créer les objets demandés sans passer par la saisie du clavier b. Tester avec 4 étudiants, 3 matières et 2 filières 3. Surchargez un des constructeurs. Utilisez la liste d’initialisation 4. On veut ajouter une méthode intitulée boolean appartenance( parametre) à la classe appropriée (argumentez votre choix) pour vérifier si un Etudiant, passé en paramètre, appartient à une filière donnée. On va rajouter 3 variantes de cette méthode. Insérez-les dans votre main. C’est quoi la différence ? Expliquez. boolean appartenance( Etudiant e) boolean appartenance( Etudiant *e) boolean appartenance( Etudiant &e) Annexe C’est quoi un accesseur ou getter? Un accesseur est une fonction membre permettant de récupérer le contenu d'une donnée membre protégée. Un accesseur, pour accomplir sa fonction1 :  doit avoir comme type de retour le type de la variable à renvoyer  ne doit pas nécessairement posséder d'arguments Une convention de nommage veut que l'on fasse commencer de façon préferrentielle le nom de l'accesseur par le préfixe Get, afin de faire ressortir sa fonction première. 1 http://www.commentcamarche.net/contents/183-les-accesseurs-et-les-mutateurs-en-langage-c
  • 5. [TP N°2 : INITIATION AU MONDE DE LA PROGRAMMATION C++] Atelier C++ INSTITUT NATIONAL DES SCIENCES APPLIQUEES ET DE TECHNOLOGIE - TUNISIE 5 class Personne{ private : int age; public : int GetAge(); }; int Personne::GetAge(){ return age; } C’est quoi un mutateur ou setter? Un mutateur est une fonction membre permettant de modifier le contenu d'une donnée membre protégée. Un mutateur, pour accomplir sa fonction1 :  doit avoir comme paramètre la valeur à assigner à la donnée membre. Le paramètre doit donc être du type de la donnée membre  ne doit pas nécessairement renvoyer de valeur (il possède dans sa plus simple expression le type void) Une convention de nommage veut que l'on fasse commencer de façon préférentielle le nom du mutateur par le préfixe Set. class Personne{ private : int _age; public : void SetAge(int); }; void Personne::SetAge(int age){ _age = age; }