Créer un objet

Vocabulaire

Classe (Class) :

Une classe est une sorte de Moule d'objet. La classe décrit les attributs (propriétés) et les méthodes (fonctions, void).

Lorsque la classe est crée, on pourra, dans le programme, ajouter autant d'objets que l'on souhaite. Ils auront les propriétés et les comportements de la CLASS.

Le mot clé CLASS décrit la classe. Par convention, le premier caractère est en majuscule.

class Piece

{


}

Généralement pour chaque class on créé un fichier header (.h) et un fichier cpp (.cpp)

composantes public, private

Toutes les composantes d'une classe ne sont pas accessibles à tous (aux autres classes)... On parle de droit d'accès.

Une classe possède deux droits d'accès.

La zone public comporte des variables, fonctions accessibles à tous.

La zone private est inaccessible de l'extérieur de la class.

class Piece

{

public:

.....

private:

.....

}


Dans public et private on placera à présent, comme cela se fait habituellement les variables et les void.

Constructeur

Le constructeur est une méthode un peu particulière qui :


class Piece

{

public:

Piece(); //voila le constructeur par defaut

.....

Le rôle du constructeur est d'initialiser les variables qui ne sont pas des objets.

Le constructeur par défaut n'a aucun paramètre.  Il est néanmoins indispensable même s'il ne fait rien.


/* piece.cpp */

#include "piece.h"

Piece::Piece()

{

   //on place ici les variables à initialiser ou pas

}

Si des paramètres sont nécessaires, on peut surcharger le constructeur par défaut avec d'autres qui portent le même nom mais sont associés à des paramètres.

...

   Piece(int k, int o);//constructeur qui défini la forme de la pièce et son orientation

   Piece(const piece &p);//le constructeur de la pièce

Destructeur

Le destructeur est une méthode appelée lorsque l'on supprime l'objet de la mémoire. Il permet de libérer la mémoire réservée pour l'objet.

Si aucune allocation dynamique n'est faite (utilisation d'un new) le destructeur est inutile.

dans le header

public:

~Piece();

....

dans le cpp

Piece::~Piece()

{

......

}


Exemple d'un tetris

Exemple repris de l'excellent site de tfeysal.

On se limitera à l'objet Piece qui correspond à la piece du tetris

Dans l'entete (piece.h)

/* piece.h */

#ifndef PIECE_H

#define PIECE_H

#include "shapes.h" //shape.h contient un tableau de constante qui décrit la forme de la pièce

enum { CYAN = 1, BLUE, ORANGE, YELLOW, GREEN, PURPLE, RED, GHOST }; // Les couleurs

/* Les coordonnées du point de pivot de la pièce */

const int PIVOT_X = 1;

const int PIVOT_Y = 2;

class Piece  //le nom de la classe

{

private:

   int kind; // Le type de la pièce

   int orientation; // Son orientation (sa rotation courante)

   int color; // Sa couleur

   int posX; // Son ordonnée dans l'aire de jeu

   int posY; // Son abscisse dans l'aire de jeu

public:

   Piece(); //Voila le constructeur

   Piece(int k, int o);//constructeur qui défini la forme de la pièce et son orientation

   Piece(const Piece &p);//le constructeur de la pièce

   void setKind(int k);//pour fixer le type de pièce

   void setOrientation(int o);//définir l'orientation

   int getKind();//rend la valeur du type de pièce

   int getOrientation();//rend la valeur de l'orientation de la pièce

   void setColor(int c); //couleur de pièce

   int getColor();

   void setPosX(int x); //position X de la pièce

   int getPosX();

   void setPosY(int y); //position Y

   int getPosY();

};

Dans le code :

/* piece.cpp */

#include "piece.h"

Piece::Piece()

{

   // Rien à faire

}

Piece::Piece(int k, int o)

{

   kind = k;

   orientation = o;

}

Piece::Piece(const Piece &p)

{

   kind = p.kind;

   orientation = p.orientation;

   color = p.color;

   posX = p.posX;

   posY = p.posY;

}

void Piece::setKind(int k)

{

   kind = k;

}

void Piece::setOrientation(int o)

{

   orientation = o;

}

int Piece::getKind()

{

   return kind;

}

int Piece::getOrientation()

{

   return orientation;

}

void Piece::setColor(int c)

{

   color = c;

}

int Piece::getColor()

{

   return color;

}

void Piece::setPosX(int x)

{

   posX = x;

}

int Piece::getPosX()

{

   return posX;

}

void Piece::setPosY(int y)

{

   posY = y;

}

int Piece::getPosY()

{

   return posY;

}