Aller au contenu

Les classes

Qu’est-ce qu’une classe ?

Une classe est une représentation abstraite d’objets qui peuvent exister ou non dans le monde réel. D’un point de vue fonctionnel, elle constitue un moule, un modèle ou encore un gabarit à partir duquel nous créerons des objets (aussi appelés instances) lors de l’exécution de l’application. D’un point de vue technique, les classes sont des « types de données » qui permettent de créer des objets. Un objet est une instance d’une classe et on instancie une classe pour créer un objet.

Les objets auront des caractéristiques communes provenant de la classe mais dont les valeurs seront propres à chaque objet (excepté pour les propriétés statiques). Ils proposent aussi les mêmes services, aussi implémentés dans la classe ayant permis de les créer.

Dans l’exemple ci-dessous, un moule à donut représente une classe, à partir duquel nous obtenons des donuts qui représentent les objets :

Classe et instances

Anatomie d’une classe

D’un point de vue technique, une classe est un type qui définit la structure et le comportement des objets créés à partir de celle-ci. La création d’un objet à partir d’une classe est appelée instanciation : l’objet obtenu est alors une instance de cette classe. D’un point de vue conceptuel, une classe peut être considérée comme un modèle, un gabarit ou encore un moule, décrivant les caractéristiques communes aux objets d’un même type. Ces deux définitions sont complémentaires : la première décrit le mécanisme proposé par le langage C#, et la seconde permet de comprendre le rôle d’une classe dans la modélisation d’une application.

Une classe contient un ensemble de membres qui définissent notamment l’état et le comportement des objets créés à partir de celle-ci : l’état et le comportement. Pour simplifier leur présentation ci-dessous, je fais volontairement abstraction membres statiques.

L’état

L’état correspond aux données qui caractérisent un objet. En C#, celles-ci sont principalement représentées par des champs (fields) et des propriétés (properties). Les termes attributs et accesseurs sont employés dans la littérature consacrée à la programmation orientée objet, pour respectivement désigner une donnée et un service associés à un objet. Le champ est un membre qui contient une donnée alors que la propriété permet d’y accéder en lecture et/ou en écriture.

Le comportement

Le comportement correspond aux services qu’un objet peut exécuter. Il est constitué de méthodes qui se distinguent entre les procédures et les fonctions. Une procédure exécute un traitement sans retourner de résultat et une fonction exécutera un traitement en retournant toujours un résultat. Des évènements complètent le comportement et représentent des services de communication. D’autres objets abonnés à un évènement seront automatiquement notifiés lorsqu’un évènement sera levé, par exemple parce que la valeur d’un champ a été modifié ou qu’un service a été exécuté.

Les constructeurs et le finaliseur

Une classe peut également posséder des constructeurs, principalement chargés d’initialiser l’état des instances lors de leur création, ainsi qu’un finaliseur, utilisé dans certains cas particuliers lors de la libération des ressources utilisés par les objets.