Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJolene Leduc Modifié depuis plus de 10 années
2
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté
3
notion dobjet Classe / instance Interface / implantation Classification des méthodes Constructeur(s), destructeur Méthodes implicites pointeur this
4
Une CLASSE est un MODELE saisir afficher périmètre Méthode La classe rectangle fournit des méthodes Une application Utilise une (ou plusieurs) classe(s) #include... Par activation des méthodes fournies par la classe R. saisir ()
5
Classe et instance de classe Une classe est un modèle Méthodes class rectangle {... Une application Rectangle R Crée une instance appelée R Une instance est un représentant du modèle # include "rectangle.h" void main (void) {rectangle R; Une classe est définie à la compilation de lapplication Une instance est créée à l exécution de lapplication
6
ACTIVATION D UNE METHODE # include "rectangle.h" void main (void) {rectangle R; R.saisir ( );... Toute méthode est déclenchée par une instance SYNTAXE : identificateur instance. Appel méthode
7
CONFIDENTIALITE # include "rectangle.h" void main (void) {rectangle R; R.saisir ( );... Application Seule partie accessible La seule partie accessible pour une application utilisatrice d une classe est la section public de cette classe. class rectangle {public : rectangle ( void); //constructeur par défaut void saisir (void);... }; Implantation classe rectangle
8
PRINCIPE de confidentialité Principe : Seules les informations déclarées publiques dans une classe sont accessibles à lutilisateur de cette classe. pour garantir le fonctionnement correct dun objet # include "rectangle.h" void main (void) {rectangle R; R.saisir ( ); R.lo = 4;... Instruction illicite TOUT LE RESTE EST DU DOMAINE PRIVE (NON ACCESSIBLE DE l EXTERIEUR).
9
REGLES D ACCESSIBILITE ApplicationClasse Les membres d une classe ont accès à tous les autres membres de cette classe Seuls les membres de la section public de (des) classe(s) utilisées(s) sont accessibles.
10
DISTINCTION entre: les fonctionnalités d un objet : INTERFACE et le codage de celles-ci : IMPLANTATION INTERFACE /IMPLANTATION INTERFACE d une classe est une partie conceptuelle qui est distincte et qui précède l IMPLANTATION de celle-ci. Interface = mode d emploi = protocole d utilisation = partie descriptive Implantation = représentation physique de l objet = code des méthodes
11
CONCEVOIR UNE CLASSE Etape 1 : spécifier une méthode Exemple : saisie du rectangle class rectangle {public : //IC est construite void saisir (void); // longueur et largeur de IC sont saisies
12
CODER UNE CLASSE Etape 2 : implanter cette méthode Exemple : méthode de saisie du rectangle class rectangle {public :... private : double lo; double la; }; void rectangle::saisir(void) {cin >> lo; cin >> la; } # include
13
Organisation d'une INTERFACE L interface d une classe est la partie visible depuis l extérieur, par l utilisateur de la classe. Elle décline les méthodes fournies par la classe. Facteur de qualité : Une classification des méthodes permettraclassification des méthodes à l utilisateur de la classe de trouver facilement les méthodes dont il a besoin.
14
CONSTRUCTEUR(S) Un constructeur est une méthode qui permet de créer une instance et qui peut aussi initialiser létat de l'instance créée SYNTAXE : prototype d un constructeur nom de la classe (paramètres(s) éventuel(s)) Exemple : rectangle(void); Toute classe comprend au moins un constructeur
15
CONSTRUCTEUR(S) Il existe trois types de constructeur : constructeur par défaut constructeur par initialisation constructeur par copie
16
Constructeur par défaut SYNTAXE : prototype du constructeur par défaut nom de la classe (void); # include "rectangle.h" void main (void) {rectangle R;... Appel du constructeur par défaut R.lo Mémoire statique R.la ??? rectangle (void); // IC est construite vide
17
Constructeur par initialisation SYNTAXE : prototype du constructeur par initialisation nom de la classe (paramètres d initialisation); Exemple : # include "rectangle.h" void main (void) {rectangle R (10,6);... Appel du constructeur par initialisation R.lo Mémoire statique R.la 10 6 rectangle (double x, double y); //IC est construite et lo=x, la =y
18
Constructeur par copie SYNTAXE : prototype du constructeur par copie nom_classe(const nom_classe&); Exemple : Le constructeur par copie peut jouer un des rôles suivants : Création d une instance par recopie d une autre instance Transmission d'argument par valeur Retour d'une valeur par une fonction rectangle (const rectangle& B); //IC est construite IC=B
19
Constructeur par copie # include "rectangle.h" void main (void) {rectangle R (10,6); rectangle R2 (R); rectangle R3 =R;... Appel du constructeur par copie R.lo Mémoire statique R.la 10 6 R2.lo10R3.lo10 R2.la6 R3.la6
20
Constructeur par copie On surchargera (redéfinira) le constructeur par copie lorsque la copie des valeurs des attributs ne réalisera pas une « vraie » copie ( ex:gestion par pointeurs ). Dans ce cas il sera impératif de redéfinir le constructeur par copie, car l'opération implicite de copie est déclenchée automatiquement dans de nombreux contextes. IMPLANTATION Cette méthode existe par défaut dans toute classe. Le compilateur fait par défaut une copie des valeurs des attributs de l'instance. Cette copie est satisfaisante pour dupliquer la longueur et la largeur d'un rectangle.
21
DESTRUCTEUR SYNTAXE : prototype du destructeur ~ nom_classe (void); Exemple : Le destructeur joue le rôle suivant : Une instance a une durée de vie correspondant au bloc dans lequel elle est déclarée. En fin de bloc l'instance est détruite par un appel automatique du destructeur. L exécution du destructeur génère une remise en l état des ressources (espace mémoire) utilisée à la création de l instance. ~ rectangle (void); //destructeur
22
DESTRUCTEUR : APPEL # include "rectangle.h" void main (void) {rectangle R; R.saisir ( );... } Appel du destructeur sur l instance R
23
DESTRUCTEUR : implantation Autre cas : gestion dynamique de la mémoire Lorsque le constructeur induit une allocation de mémoire ( new en C++) alors le destructeur comprend des instructions ( delete en C++) permettant de libérer la mémoire précédemment allouée. Action vide pour la classe rectangle car il n'y a pas de ressources mémoire particulières à gérer. rectangle :: ~ rectangle (void) { }
24
METHODES IMPLICITES Les méthodes suivantes sont prédéfinies pour chaque classe: constructeur par défaut constructeur par copie destructeur affectation tests d égalité # include "rectangle.h" void main (void) {rectangle R,R2; R.saisir ( ); R2=R; //affectation } Les méthodes implicites peuvent être redéfinies. Il est parfois impératif de le faire (gestion dynamique de la mémoire).
25
Le pointeur this class rectangle {public : //IC void afficher (void); //longueur et largeur de IC sont affichées Remarque : il nest pas nécessaire d expliciter un paramètre représentant l instance courante (IC). Mécanisme : chaque méthode a un premier paramètre implicite pour représenter l instance courante. Ce paramètre a pour identificateur (en C++) : this this désigne un pointeur sur IC
26
Le paramètre this void rectangle::afficher (void) {cout << lo; cout << la; } //cout lo; //cout la; ILLUSTRATION : implantation de la méthode afficher
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.