• 15 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 19/05/2021

Définissez les objets et leurs attributs avec des classes

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans la partie précédente, vous avez appris les bases de la programmation avec le langage Java. Dans cette partie, nous allons voir les bases de la programmation orientée objet (dite POO) avec Java.

Découvrez la programmation orientée objet

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.

Un bureau avec de nombreux objets : ordinateurs, lampe, casque, cahiers de toutes tailles, lunettes, une plante, des crayons, etc.
Toutes sortes d'objets !

Chaque objet se présente sous différentes formes, mais vous pouvez ranger chaque version différente du même objet dans une catégorie ou un groupe. C'est la raison pour laquelle vous pouvez vous rendre dans un magasin de meubles et identifier différents articles comme des « chaises » même si ces articles sont très différents les uns des autres.

Vous reconnaissez ces différents objets comme faisant partie du même groupe ou type. Vous remarquez des points communs entre eux, recueillez les informations et créez une représentation mentale de cette catégorie d'objets donnée.

Par 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 livres individuels ont tous des attributs similaires qui vous permettent de les classer dans votre esprit comme faisant partie de la catégorie « livre ».

Une étagère de livres de différentes tailles, couleurs et longueurs
Livres de différentes tailles, couleurs et longueurs

Cette liste mentale d'attributs que nous venons de décrire pour un livre agit comme une sorte de plan directeur pour l'objet "livre". En programmation, cela s'appelle une classe. De la même manière que vous donnez un nom à vos variables, lors de la création d'une classe, vous pouvez donner le nom que vous voulez à l'objet obtenu.

Comme vous le verrez, les classes vous permettent également de regrouper un grand nombre de détails, ce qui explique aussi pourquoi on peut les appeler des types complexes. Par contre, les types simples que vous connaissez déjà, comme  int  ou  double, ont des noms prédéfinis par le langage de programmation et ne peuvent être modifiés.

Comment définir des noms de classe ?

Comme pour les variables de nommage, les noms de classes doivent être descriptifs. La principale différence, c'est qu'au lieu d'utiliser un camelCase standard, la première lettre devrait également être en majuscule ; par exemple, CréationMerveilleuse et non créationMerveilleuse.

Concevez des classes

Pour voir comment concevoir une classe, continuons avec l'exemple du livre. Ci-dessous, nous avons identifié un échantillon d'informations qui pourraient décrire un livre donné :

  • 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 attributs de classe en langage Java. Les champs d'une classe sont simplement un nom un peu plus pompeux pour quelque chose que vous connaissez déjà : les variables !

Maintenant que vous avez compris la théorie, passons à la pratique et mettons cela par écrit !

Pour déclarer une classe en Java, utilisez un mot-clé classe suivi d'un nom personnalisé. Ensuite, terminez avec des accolades ouvrante et fermante ({}) pour l'ensemble du contenu. Ceci inclut la liste complète des propriétés :

class Book {
// propriétés d'une classe
}

Maintenant, ajoutons les champs définis précédemment :

class Book {
String title;
String author;
int numberOfPages;
String publisher="OC";
}

Avez-vous remarqué que les trois premiers n'ont pas de valeurs, mais que le dernier en a une ?

L'exemple précédent peut s'appliquer si vous êtes un éditeur et que vous voulez cataloguer vos livres. Comme ce sont vos propres stocks, vous savez que la valeur de l'éditeur sera toujours la même, peu importe le livre. Les titres des livres, les auteurs et les numéros de page, cependant, changeront en fonction du livre en question.

Cependant, si vous revenez à l'exemple original d'une librairie en ligne, la classe ressemblerait davantage à ceci :

class Book {
String title;
String author;
int numberOfPages;
String publisher;
}

Comme vous aurez des livres de plusieurs éditeurs différents, vous ne pouvez pas mettre pour chacun d'entre eux une valeur par défaut. Vous définissez donc ici le champ et vous ajouterez une valeur ultérieurement !

Utilisez des classes

Vous avez un tout nouveau type –  Book  📖 – mis en œuvre !

Que pouvez-vous en faire ?

Les classes sont plus abstraites ou conceptuelles. Les champs de classe sont comme un modèle sur une librairie en ligne : peu importe 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 seulement « livre », n'est-ce pas ? Ce n'est pas vraiment 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 s'appelle une instance de classe ! Comme son nom l'indique, le processus est appelé instanciation ou initialisation d'un objet. Pour cela, vous créez un objet de la classe.

En Java, 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é la valeur  OC  dans la définition de la classe.

Une autre manière de procéder consiste à fournir une valeur dans l'affectation qui crée la classe.

Prenons un exemple. Voici le code pour créer un livre avec les valeurs fournies au moment de la création de l'objet :

Instanciez un objet
Instanciez un objet

Comme vous pouvez le voir, il y a quelques éléments différents. Tout d'abord, nous faisons une déclaration classique d'une variable, avec son nom  myBook  et son type  Book.

Vous vous souvenez, quand on disait qu'une classe est un type complexe avec un nom ? Eh bien, en voilà la preuve ! Au lieu de  int,  double  ou  vous créez des valeurs String, le type ici est la classe que nous avons créée ! 💫

Maintenant, voici le plus cool. Cette variable est déclarée et initialisée avec l'expression de création de l'objet  new Book("Coding is art","Becky James",425);. Cette expression est composée du mot clé  new, suivi à nouveau du nom de la classe (Book), et de valeurs à l'intérieur des parenthèses. Comme vous pouvez le voir, les parenthèses contiennent une valeur spécifiée pour chacun des champs originaux :  title,  author  et  numberOfPages. Nous avons fait en sorte de les séparer par une virgule. Enfin, nous terminons par un point-virgule.

Avec cela, vous avez créé une instance de la classe Book ! 📔

Travaillez avec des attributs (champs)

Eh bien, voilà beaucoup de concepts et de vocabulaire nouveaux à assimiler ! Avant de continuer, récapitulons avec un schéma rapide :

De la classe à l’objet !
De la classe à l’objet !

C'est mieux comme ça ? Souvenez-vous :

  • utilisez une classe comme modèle pour vos futurs objets. Dans une classe, définissez le nom et le type de certaines variables. Dans Java, ceux-ci sont généralement appelés attributs et champs, en particulier ;

  • pour utiliser le plan vraiment cool que vous avez créé, vous devez créer un objet en utilisant le processus d'instanciation. Cela signifie déclarer une variable avec votre classe comme type, puis utiliser l'expression de création d'objet que vous avez vue ci-dessus ;

  • un objet s'appelle 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 le point(.). Cela signifie que vous devez écrire le nom d'une instance ou d'un objet suivi d'un nom d'attribut d'intérêt, séparés par un point :  instanceVariableName.attributeName.

myBook.title = "Coding is Art"
myBook.author = "Becky James";
myBook.numberOfPages = myBook.numberOfPages + 10;

Vous pouvez maintenant modifier la valeur des champs à l'intérieur 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 numéro directement, soit ajouter dix pages à la valeur existante comme dans la troisième ligne. C'est très pratique pour faire de petits changements. 🙂

En résumé

Dans ce chapitre, vous avez appris les principes de base des objets :

  • une classe est le plan d'un objet ;

  • Une classe vous permet de créer des types complexes en regroupant ses attributs, en définissant des champs ;

  • Pour créer un objet, vous devez déclarer une variable d'une classe et l'instancier.

Utiliser le point (.) donne accès aux champs.

Passons au chapitre suivant pour aborder deux notions très puissantes en programmation orientée objet : l'héritage et le polymorphisme.

Exemple de certificat de réussite
Exemple de certificat de réussite