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

ExempleRé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

ExempleAutomobile

En plus des variables, l'objet informatique Voiture a également des méthodes pour accélérer, freiner et changer de vitesse :

Exemple : classe "Voiture"

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éfinitionClasse

  • 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éfinitionObjet

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

ExempleComparaison 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 :

1
struct Led{ pinLed; //Numéro de port};

En programmation objet, on utilisera une déclaration de classe qui ressemblera à ceci :

1
class Led{
2
private:
3
  int pinLed; //Numéro de port
4
public:
5
  void swon(); //Allumer la LED
6
  void swoff(); //Eteindre la LED
7
};
  • class : en remplacement du struct 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 que private signifie le contraire,

  • méthodes ou comportements (fonctions faisant partie d'une classe) swon et swoff : elles permettent d'allumer ou d'éteindre la diode

  • attribut 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

RemarqueCommande 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.

AttentionSimplification avec Arduino

Arduino simplifie considérablement l'initialisation des objets : seule la déclaration est nécessaire (de la forme Classe nom_objet)