Techniques de programmation OO

Constructeur

Le constructeur est une méthode non typée destinée à être exécutée lors de l'instanciation de la classe.

   #include <string>
   class tache
   {
     public:
       int no;
       double duree;
       string nom;

       tache(int n,double d, string nm)
       {
	 no=n;
	 duree=d;
	 nom=nm;
       };

       void affiche(){...};
   };

   void main(void)
   {
     tache uneTache= tache(1,2,"test") ;
     uneTache.affiche();
   }

Le constructeur participe à l'encapsulation.

Allocation dynamique des instances

Bien souvent, on utilise des pointeurs sur instance. Exemple:

   tache * ptrUneTache=new tache;

L'instruction "new" va réserver un emplacement dans la mémoire vive pour y stocker la nouvelle instance. "PtrUneTache" contiendra alors l'adresse de cet emplacement mémoire.

Appel du constructeur lors de l'instanciation

   tache * ptrUneTache=new tache(1, 45,"maquettage");

Accès aux propriétés et méthodes de l'instance

Si "ptrUneTache" est un pointeur sur "tache" alors "*ptrUneTache" représente la tâche en elle-même.

On peut donc grâce à l'instruction suivante :

   * ptrUneTache.no=6;

Mettre 6 dans la propriété "no" de la tâche qui est en mémoire vive à l'adresse contenue dans "ptrUneTache".

Cette notation étant un peu lourde, on a décidé d'utiliser un autre formalisme :

Si "ptrUneTache" est un pointeur sur "tache" alors l'instruction suivante :

   ptrUneTache->no=6;

mettra 6 dans la propriété no de la tâche qui est en mémoire vive à l'adresse contenue dans ptrUneTache.

Autrement dit :

   ptrUneTache->no

est équivalent à

   *ptrUneTache.no

Opérateur free

Alors que la réservation de la mémoire se fait par "new" c'est l'opérateur "free" qui la libère. Toute zone mémoire réservée par un "new" doit être libérée par un "free."

   free ptrUneTache;