42
pages
Français
Documents
Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres
42
pages
Français
Documents
Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres
Licence Sciences, Technologies, Santé Université de Perpignan Via Domitia
Semestre 5 (L3) - Mention Mathématiques, Informatique Année universitaire 2011/2012
Programmation Orientée Objet
Classes, constructeurs, destructeurs et gestion dynamique
de la mémoire
Guillaume Revy
guillaume.revy@univ-perp.fr
Université de Perpignan Via Domitia
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 1/28Récapitulatif de l’organisation du cours
Cours magistral : 9h de cours 6 séances de 1.5h, le mardi de 11h à 12h30
Travaux dirigés : 21h de TD 14 séances de 1.5h
,! MI le mardi de 15h30 à 17h et le jeudi de 14h à 15h30
,! SPI EEA le lundi de 14h à 15h30 et le mardi de 14h à 15h30
,! SPI Enermat le mardi de 15h30 à 17h et le jeudi de 11h à 12h30
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 2/28Plan du cours
1. Rappels sur le cours précédent
2. Les constructeurs
3. Les destructeurs
4. Compléments sur le langage C++
5. Gestion dynamique de la mémoire
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 3/28Rappels sur le cours précédent
Plan du cours
1. Rappels sur le cours précédent
2. Les constructeurs
3. Les destructeurs
4. Compléments sur le langage C++
5. Gestion dynamique de la mémoire
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 4/28Rappels sur le cours précédent
Comment déclarer une classe ?
// Classe.hpp
#ifndef __CLASSE_HPP__ // <-- directives de precompilation
#define __CLASSE_HPP__ //
class Classe : <private|protected|public> ClasseMere
{
private:
// declaration des attributs et methodes prives
protected:
// declaration des attributs et methodes proteges
public:
// declaration des attributs et methodes publics
};
#endif // __CLASSE_HPP__
Grâce aux directives de précompilation, la classe n’est incluse qu’une seule fois
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 5/28Rappels sur le cours précédent
Retour à la déclaration de la classe Point2D
// Point2D.hpp
#ifndef __POINT2D_HPP__
#define __POINT2D_HPP__
class Point2D
{
private:
float x, y;
public:
void init2d(float, float);
void translate2d(float, float);
void print(void);
Pour respecter le principe
float getX(void);
d’encapsulation attributs privés, float getY(void);
voire protégés
void setX(float);
void setY(float);,! 1 des 3 grands principes de la POO
}; // <---- A NE PAS OUBLIER !!,! prévoir des méthodesget etset
#endif // __POINT2D_HPP__
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 6/28Rappels sur le cours précédent
Comment définir les méthodes d’une classe ?
On peut définir une méthode directement dans la définition de la classe
// Point2D.hpp
#ifndef __POINT2D_HPP__
#define __POINT2D_HPP__
class Point2D
{
// ...
float getX(void){ return x; }
// ...
};
#endif // __POINT2D_HPP__
On parle de fonction inline
son utilisation améliore le temps d’exécution des programmes (en réduisant la
lourdeur de l’appel aux fonctions)
son utilisation peut entraîner une augmentation de la taille du code de l’application
,! à n’utiliser que pour des fonctions de petite taille
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 7/28Reprenons par exemple la méthodetranslate2d de la classe Point2D :
// Point2D.cpp
void Point2D::translate2d(float _x, float _y){
x += _x;
y += _y;
}
Rappels sur le cours précédent
Comment définir les méthodes d’une classe ?
Ou bien de manière séparée :
// Classe.cpp
typeDeRetour Classe::nomDeLaMethode( <liste des parametres> ){
// definition de la methode
}
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 7/28Rappels sur le cours précédent
Comment définir les méthodes d’une classe ?
Ou bien de manière séparée :
// Classe.cpp
typeDeRetour Classe::nomDeLaMethode( <liste des parametres> ){
// definition de la methode
}
Reprenons par exemple la méthodetranslate2d de la classe Point2D :
// Point2D.cpp
void Point2D::translate2d(float _x, float _y){
x += _x;
y += _y;
}
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 7/28Rappels sur le cours précédent
Schéma de compilation séparée
.cpp
.hpp
Dev· eloppeur Utilisateur
Guillaume Revy (Univ. de Perpignan Via Domitia) Classes, constructeurs, destructeurs et gestion dynamique de la mémoire 8/28