• Aucun résultat trouvé

Travaux Pratiques

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Pratiques"

Copied!
4
0
0

Texte intégral

(1)

Travaux Pratiques

Données et fonctions membres statiques-Passage par référence-Auto référence

TP2 Données et fonctions membres statiques-Ref-

this.doc

1ère année Page:1/4 http://robert.cireddu.free.fr/SNIR/

http://robert.cireddu.free.fr/SNIR/

Extrait du référentiel : BTS Systèmes Numériques option A (Informatique et Réseaux) Niveau(x) S4. Développement logiciel

S4.6. Programmation orientée objet (Support : C++)

S4.7. Langages de programmation

Du C au C++ : références, entrées/sorties (iostream, fstream),

polymorphisme, etc.

Définition de classes (encapsulation) et modèle canonique (dit de Coplien) C++

3 3 2 3

http://robert.cireddu.free.fr/SNIR/

Objectifs du TP :

- Membres statiques : - donnée membre - fonction membre - Transmission d’objet :

- passage par référence - auto-référence

Support d’activité :

- Logiciels : Visual Studio et suite bureautique - Fichier : Transmission d’objets.PDF

- Ce document au format PDF

Vous rédigerez un compte-rendu numérique.

Pensez aux captures d’écran pour imager votre compte-rendu.

Sauvegardez votre travail régulièrement !

Des modifications peuvent exister selon la version du logiciel utilisée.

(2)

Travaux Pratiques

Données et fonctions membres statiques-Passage par référence-Auto référence

TP2 Données et fonctions membres statiques-Ref-

this.doc

1ère année Page:2/4

Question 1

Lisez attentivement le document « Transmission d’objets.pdf » se trouvant dans le dossier

« Support » de l’activité.

MEMBRES STATIQUES

DONNÉE MEMBRE

Soit le code source ci-dessous :

#include <iostream>

using namespace std;

class CPoint {

private:

int x, y;

static int nbre_point; // membre donnée statique public:

CPoint(int, int);

~CPoint();

void affiche();

};

int CPoint::nbre_point = 0; // initialisation du membre donnée statique CPoint::CPoint(int abs, int ord)

{

cout << "Le constructeur de point" << endl;

x = abs;

y = ord;

++nbre_point;

}

CPoint::~CPoint() {

cout << "Le destructeur de point" << endl;

--nbre_point;

}

void CPoint::affiche() {

cout << " ++ Il y a maintenant " << nbre_point << " point(s)\n";

}

int main() {

CPoint a(3, 7);

a.affiche();

CPoint b(2, 8);

b.affiche();

return 0;

}

(3)

Travaux Pratiques

Données et fonctions membres statiques-Passage par référence-Auto référence

TP2 Données et fonctions membres statiques-Ref-

this.doc

1ère année Page:3/4

Question 2

Analysez le code source ci-dessus.

Saisissez le code ci-dessus sous Visual Studio en créant un projet (avec modularité) nommé « DonneeStatique.sln ».

Compilez puis exécutez le programme en mode débogage (pas à pas).

Ouvrez une fenêtre de suivi des variables locales.

Ouvrez une fenêtre « Espion1 » pour y placer l’adresse du membre donnée statique

« nbre_point ».

Si vous n’y arrivez pas, ajoutez à la fin de la définition du constructeur cette ligne de code : cout << &nbre_point << endl ;

Observez la sortie écran obtenue (la console).

Complétez le tableau ci-dessous :

Occupation mémoire (en octets) de l’objet

Adresse mémoire du membre donnée statique « nbre_point »

Commentaires

Objet « a » Objet « b »

Un membre « donnée » (attribut) déclaré avec le mot clé static est partagé par tous les objets de la même classe. Il existe même si aucun objet de cette classe n’a été créé. Un membre « donnée » (attribut) statique doit être initialisé explicitement, à l’extérieur de la classe (même s’il est privé), en utilisant l’opérateur de résolution de portée (::) pour spécifier sa classe.

FONCTION MEMBRE

Question 3

Saisissez le code se trouvant dans le fichier de préparation du TP (page 4 sur 7) sous Visual Studio en créant un projet (avec modularité) nommé « FonctionStatique.sln ».

Compilez puis testez l’application.

Que constatez-vous ?

Lorsqu’une fonction membre a une action indépendante d’un quelconque objet de sa classe, on peut la déclarer avec le mot clé static. Dans ce cas, une telle fonction peut être appelée, sans mentionner d’objet particulier, en préfixant simplement son nom du nom de la classe concernée, suivi de l’opérateur de résolution de portée (::).

Les fonctions membres statiques (méthodes) ont les particularités suivantes :

- elles ne peuvent pas accéder aux attributs de la classe car il est possible qu’aucun objet de cette classe n’ait été créé.

- elles peuvent accéder aux membres données statiques car ceux-ci existent même lorsque aucun objet de cette classe n’a été créé.

(4)

Travaux Pratiques

Données et fonctions membres statiques-Passage par référence-Auto référence

TP2 Données et fonctions membres statiques-Ref-

this.doc

1ère année Page:4/4

TRANSMISSION D’OBJETS

PASSAGE PAR RÉFÉRENCE

Question 4

Saisissez le code (du passage par référence uniquement) fournit dans le fichier de

préparation du TP (page 6 sur 7) en créant un projet nommé « Reference.sln » sous Visual Studio.

Compilez puis corrigez l’erreur attendue.

Une fois la compilation réussie, exécutez le programme en mode débogage (pas à pas).

Ouvrez une fenêtre « Espion1 » pour y placer l’adresse des variables n, p, a et b. Relevez les adresses des variables.

Que constatez-vous ?

AUTO-RÉFÉRENCE

Vous allez reprendre le programme source déjà exploité dans le TP1 C++ précédent.

Question 5

Récupérez et faîtes une copie du projet « Bateau.sln »

Enregistrez votre nouveau projet sous « AutoReference.sln »

Modifiez le code afin de faire apparaître à l’aide du mot clé « this » l’adresse des objets construits puis détruits.

Compilez puis exécutez votre programme sans débogage.

Faites une copie d’écran de la sortie console.

Que constatez-vous ?

L’objectif étant de déterminer quel objet sera construit ou détruit en premier ou en second.

Références

Documents relatifs

Matériel : bécher plastique de 250 mL ; béchers de verre de 50 mL ; éprouvette graduée de 10 mL ; plaque chauffante et agitante ; thermomètre ; papier pH ; baguette de verre

Nous cherchons à créer le fichier exécutable Programme, la première dépendance (main.o) est la cible d'une des régles de notre Makefile, nous évaluons donc cette règle.. Comme

Et comme je suis gentil, vous pouvez télécharger mon script qui est à dézipper puis à placer dans le dossier de scripts (mais comme c'est ma version et que j'ai Qt4, j'ai remplacé

La pièce dont le dessin est ci-joint est une plaque de fixation. Le fabricant envisage un contrôle final sur MMT lors de chaque changement de campagne et à raison de

Exemple : La pièce sera posée en appui plan sur le marbre, régler le comparateur à 0 en un point de la surface contrôlée, balayer toute la surface ; l’amplitude des écarts

Précisez les fonctions utilisées pour effectuer les constructions géométriques ( ∩ pour l'intersection , ∪ pour la connexion , MIL pour la fonction Milieu et PROJ

Les 2 tensions caractérisant un transistor sont la tension Base- Emetteur (V BE ) et la tension Collecteur-Emetteur (V CE ) Le transistor se comporte comme un interrupteur, ouvert

On admet que tout le travail électrique W res reçu par la résistance est intégralement transformé en énergie thermique Q res : que vaut alors la variation d’énergie interne de