Les classes
Introduction

L'approche objet vise à modéliser au plus près le comportement d'objets réels. Un objet réel peut être décrit par des attributs : une couleur, un état ou une propriété physique (comme chaud, froid, liquide, solide, ...), une vitesse, etc. mais également par des comportements : se mouvoir, accélérer ou freiner, chauffer ou refroidir, s'agrandir ou rétrécir, etc. D'une manière générale dans les langages objets, les attributs seront représentés par des variables alors que les comportements correspondront à des fonctions.
Exemples
Exemple : Répertoire téléphonique

un répertoire téléphonique contient des fiches, les objets, correspondant à des personnes,
chaque fiche possède des caractéristiques ou attributs (nom, prénom, ...) et des comportements (affichage des caractéristiques, création ou destruction de fiches,...),
l'ensemble des fiches du répertoire respecte un modèle appelé « classe »,
On appelle « comportement » les actions ou opérations applicables à un objet de la classe
Exemple : Automobile
En plus des variables, l'objet informatique Voiture
a également des méthodes pour accélérer, freiner et changer de vitesse :

Caractérisation d'un objet
Les attributs
Il s'agit de données caractérisant l'objet.
Ce sont des variables stockant des informations d'état de l'objet
Les méthodes ou fonctions membres
Ce sont les fonctions qui caractérisent le comportement de l'objet,
Ensemble des actions ou opérations que l'objet est capable de réaliser.
Ces opérations sont étroitement liées aux attributs, car leurs actions peuvent dépendre des valeurs des attributs, ou bien les modifier
L'identité
Permet de distinguer un objet des autres objets, indépendamment de son état.
Construite généralement grâce à un identifiant
Classe
Définition : Classe
Classe = structure d'un objet.
Il s'agit de la déclaration de l'ensemble des entités qui composeront un objet.
d'une manière générale, on peut considérer qu'une classe est une généralisation du concept de type : on regroupe des variables, ayant un lien entre elles sous une même entité, et on y associe des comportements, appelées méthodes.
Définition : Objet
Objet = Instanciation d'une classe. On parle indifféremment d'objet, d'instance ou éventuellement d'occurrence.
Une classe est composée de deux parties :
Les attributs ou données membres : il s'agit des données représentant l'état de l'objet
Les méthodes ou fonctions membres : il s'agit des opérations applicables aux objets
Exemple : Comparaison entre langage structuré classique (langage C) et langage objet
En langage C, on peut, pour désigner une diode électroluminescente (LED[1]) connectée à une broche de port, utiliser la syntaxe suivante :
struct Led{ pinLed; //Numéro de port};
En programmation objet, on utilisera une déclaration de classe qui ressemblera à ceci :
class Led{
private:
int pinLed; //Numéro de port
public:
void swon(); //Allumer la LED
void swoff(); //Eteindre la LED
};
class
: en remplacement dustruct
du langage C,Le terme
public
signifie que tous les membres qui suivent (données comme méthodes) sont accessibles de l'extérieur de la classe, alors queprivate
signifie le contraire,méthodes ou comportements (fonctions faisant partie d'une classe)
swon
etswoff
: elles permettent d'allumer ou d'éteindre la diodeattribut
pinLed
: permet de fixer le numéro de port
En C++, on aura la possibilité d'associer à une structure de données (c'est-à-dire une ou plusieurs variables rassemblées au sein d'une structure), des fonctions, ce qui n'est pas possible en C classique. On obtient ainsi une entité complète qui contient tout ce qui décrit l'objet comme par exemple :
le numéro de broche sur lequel elle est connectée,
les commandes d'allumage et d'extinction,
Bien sûr, on pourra ajouter d'autres attributs (variables) ou comportements (fonctions) comme la couleur de la LED si il s'agit d'un paramètre réglable, l'intensité lumineuse, etc.
Ces éléments supplémentaires pourront :
soit être ajoutés à une classe existante, ce qui n'est pas obligatoirement pertinent (la couleur d'une LED n'est pas toujours réglable, de même pour l'intensité lumineuse),
soit en dérivant la classe existante en une nouvelle classe fille : c'est le principe de l'héritage.
Enfin, parmi les attributs ou les comportements, tous n'ont pas besoin d'être connus par les autres parties d'un programmes : par exemple, le numéro de port ne sert à rien en dehors de l'utilisation de la LED via ses fonctions d'allumage et d'extinction. On pourra donc rendre privée la variable qui contient le numéro de port pour la rendre invisible à l'extérieur de l'objet alors que les fonctions d'allumage et d'extinction seront publiques puisque ce sont elles qui permettront au programmeur de piloter la diode : c'est le principe d'encapsulation
Création d'un objet
Principe général
Pour créer un objet, il faut passer par 2 étapes : la déclaration et l'instanciation
Classe nom_objet = new Classe();
ou :
Classe nom_objet ;
//Déclaration
nom_objet = new Classe();
//instanciation
Remarque : Commande new
La commande new
est semblable à la fonction malloc()
du C. Elle permet de demander au système la réservation de mémoire nécessaire à la création de l'objet : il s'agit donc d'une création dynamique de l'objet, c'est-à-dire en cours d'exécution du programme.