Vous avez peut-être déjà entendu le terme objet dans un contexte de programmation. Mais qu'est-ce que cela veut dire exactement ? Commençons par regarder des objets du monde réel, comme des stylos, des livres, des smartphones, des ordinateurs, etc.
Chaque objet est différent, mais vous pouvez les regrouper en catégories. C'est pour cela que vous pouvez par exemple reconnaître des chaises dans un magasin de meubles, même si elles sont très différentes les unes des autres.
Vous savez que ces différents objets font partie du même groupe ou type. Vous remarquez des points communs entre eux, recueillez des informations, et vous faites une représentation mentale de cette catégorie d'objets.
Un autre exemple : il existe différents types de livres, mais ils ont tous tendance à avoir un titre, un auteur, une couverture, des pages, etc. En d'autres termes, les objets « livre » ont tous des attributs similaires qui vous permettent de les classer dans votre esprit comme faisant partie de la catégorie livre.
Cette liste d'attributs que nous venons de décrire pour un livre se présente comme une sorte de plan pour l'objet « livre ». En programmation, cela s'appelle une classe. Lorsque vous créez une classe, vous pouvez lui donner n'importe quel nom. On parle ainsi de type nommé. Comme vous le verrez, les classes vous permettent également de regrouper de nombreux détails, c'est pourquoi on dit aussi qu'il s'agit de types complexes. A contrario, les types simples que vous connaissez déjà, comme int
ou double
, ont des noms qui sont prédéfinis par le langage de programmation, et ne peuvent pas être modifiés.
Comment définir des noms de classes ?
Comme pour les variables, les noms des classes doivent être descriptifs (évitez les abréviations !). La principale différence, c'est qu'au lieu d'utiliser un camel case standard, la première lettre devra également être en majuscule, par exemple, CreationMerveilleuse
et non creationMerveilleuse
.
Concevez des classes
Pour savoir comment concevoir une classe, continuons avec l'exemple du livre. Les termes ci-dessous peuvent être utilisés pour décrire n'importe quel livre :
Titre ;
Auteur ;
Nombre de pages ;
Éditeur.
Ce sont les attributs de tout livre dans la vie réelle. Dans le contexte des classes, ces attributs sont appelés champs en C#. Ces champs de classe ne sont ni plus ni moins que quelque chose que vous connaissez déjà : les variables !
Maintenant que vous avez compris la théorie, passons à la pratique !
Pour déclarer une classe en C#, utilisez le mot-clé class
suivi d'un nom personnalisé. Ensuite, encadrez l'ensemble du contenu avec des accolades ouvrante et fermante ( {}
). C'est dans ce bloc que se trouvent tous les champs de la classe :
class Livre
{
// Propriétés de la classe
}
Maintenant, ajoutons les champs définis précédemment :
class Livre
{
public string titre;
public string auteur;
public int nombreDePages;
public string editeur = "OC";
}
Avez-vous remarqué que les trois premiers champs n'ont pas de valeurs, mais que le dernier en a une ? Si vous êtes un éditeur et que vous voulez cataloguer vos livres, vous savez que la valeur « editeur » sera toujours la même, peu importe le livre. En revanche, les titres, auteurs et nombres de pages changeront en fonction du livre.
Si nous reprenons notre exemple de départ relatif à une librairie en ligne, la classe ressemblerait davantage à ceci :
class Livre
{
public string titre;
public string auteur;
public int nombreDePages;
public string editeur;
}
Comme vous aurez des livres de plusieurs éditeurs différents, vous ne pouvez pas attribuer un éditeur par défaut à chacun. Vous définissez donc ici le champ, et ajouterez une valeur personnalisée ultérieurement !
Utilisez des classes
Vous avez maintenant un tout nouveau type, Livre
📖 ! Que pouvez-vous en faire ? Après tout, les classes sont une notion abstraite et conceptuelle. Les champs de votre classe constituent un modèle de librairie en ligne : quel que soit le livre que vous recherchez, les mêmes informations apparaîtront (titre, auteur, nombre de pages, etc.).
Mais lorsque vous effectuez une recherche, vous ne tapez pas simplement « livre », n'est-ce pas ? Ça ne vous sera pas très utile ! Vous avez besoin d'une instance spécifique d'un livre, par exemple Alice au Pays des Merveilles. Vous cherchez un objet réel que vous pouvez feuilleter et lire. C'est la même chose en programmation informatique.
Pour utiliser une classe, vous devez créer un objet concret de cette classe. En d'autres termes, vous avez besoin d'un objet spécifique, comme un livre en particulier (Alice au Pays des Merveilles). Ce livre spécifique est une instance de classe ! Assez logiquement, la création de cette instance est appelée instanciation ou initialisation d'un objet. Elle consiste à déclarer une variable de la classe.
En C#, chaque champ de l'objet créé doit avoir une valeur. Ces valeurs peuvent être fournies de plusieurs façons. Vous l'avez vu avec l'exemple de l'éditeur : nous avions déclaré en dur la valeur de l'éditeur dans la définition de la classe.
Une autre manière de faire consiste à fournir une valeur dans l'instruction qui crée la classe. Voyons comment procéder. Voici un exemple de code permettant de créer un livre avec des valeurs fournies au moment de la création de l'objet :
Comme vous pouvez le constater, cette instruction comporte plusieurs éléments différents. Tout d'abord, vous déclarez simplement une variable, avec son nom monLivre
et son type Livre
. Vous vous souvenez ? Nous avons vu qu'une classe est un type complexe nommé. Eh bien, en voilà la preuve ! Au lieu de int
, double
ou string
, notre type est la classe que nous avons créée ! 💫
Voici à présent le plus intéressant. La variable est initialisée avec l'expression de création d'objet new Livre("L'art de la programmation","Paul Dupont",425);
. Cette expression est composée du mot-clé new
, suivi du nom de la classe ( Livre
), et de parenthèses ()
entourant des valeurs. Comme vous pouvez le voir, les parenthèses contiennent des valeurs pour chacun des champs d'origine ( titre
, auteur
et nombreDePages
). Ces valeurs sont séparées par des virgules. Enfin, l'expression se termine par un point-virgule ;
. Cette expression a créé une instance de la classe Livre
!
Utilisez les attributs (champs)
Eh bien ! Voilà beaucoup de concepts et de vocabulaire nouveaux à assimiler ! Avant de continuer, récapitulons avec un schéma rapide :
C'est mieux comme ça ? Souvenez-vous :
Utilisez une classe pour établir le plan de vos futurs objets. Dans une classe, définissez le nom et le type de certaines variables. En C#, ces variables sont appelées « attributs » de manière générale et « champs » lorsqu'ils font spécifiquement référence à une classe.
Pour utiliser le plan que vous avez élaboré, vous devez créer un objet en utilisant le processus d'instanciation. Cela signifie déclarer une variable dont le type est votre classe, puis utiliser l'expression de création d'objet que vous avez vue ci-dessus.
Lorsque vous instanciez un objet, vous créez des valeurs pour chacun des champs que vous avez déjà définis dans votre classe.
Un objet est une instance de classe.
Maintenant, vous avez tout ce dont vous avez besoin ! Vous avez votre objet « livre », mais imaginons que vous changiez d'avis sur la valeur de vos variables. Comment accéder aux champs associés à votre nouvel objet flambant neuf ?
Une façon courante d'accéder aux champs dans de nombreux langages de programmation consiste à utiliser la notation par points. Cela signifie que vous devez écrire le nom d'une instance ou d'un objet et le faire suivre du nom de l'attribut qui vous intéresse, en séparant ces deux éléments par un point : instanceNomVariable.nomAttribut
.
monLivre.titre = "L'art de la programmation";
monLivre.auteur = "Paul Dupont";
monLivre.nombreDePages = monLivre.nombreDePages + 10;
Vous pouvez maintenant modifier la valeur des champs de votre objet ! Imaginez que vous vouliez ajouter dix pages parce que vous avez oublié de prendre en compte l'index du livre. Vous pouvez soit taper le nouveau nombre de pages directement, soit ajouter dix pages à la valeur existante, comme dans la troisième ligne de notre exemple. C'est très pratique pour faire de petits changements. 🙂
Testez par vous-même !
Prêt à coder ? Pour accéder à l’exercice, suivez ce lien.
En résumé
Dans ce chapitre, nous vous avons donné les principes de base des objets :
Une classe est le plan d'un objet.
Une variable d'une classe est appelée une instance de classe ou un objet.
Une classe vous permet de créer des types complexes en regroupant ses attributs à l'aide de champs.
Pour créer un objet, vous devez déclarer une variable d'une classe et l'instancier.
La notation par points permet d'accéder aux champs.