• 10 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 8/6/24

Définissez les objets et leurs attributs avec des classes

Dans la partie précédente, vous avez appris les bases de la programmation avec le langage Java. Dans cette partie, nous allons plus loin avec 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.

Chaque type d’objet se présente sous différentes formes, mais vous pouvez les ranger dans des catégories. Si vous voulez acheter une chaise, vous vous rendez dans un magasin de meubles, au rayon correspondant, et vous avez le choix entre plusieurs modèles. Elles seront parfois très différentes les unes des autres, mais elles n’en seront pas moins des chaises.

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.

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 livres 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 agit comme une sorte de plan pour l'objet "livre". En programmation, cela s'appelle une classe. Pour créer un livre, vous vous basez sur le plan correspondant. Bien sûr, le livre créé a un titre… Cela ne vous rappellerait pas les variables ? Après tout, en développement, tout doit avoir un nom pour pouvoir être utilisé.

Comment définir des noms de classes ?

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 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. Nous avons déjà identifié un échantillon d'informations qui peuvent 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. Il s’agit simplement d’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 le mot-clé class suivi d'un nom personnalisé. Ensuite, terminez avec des accolades ouvrante et fermante ({}) pour l'ensemble du contenu. Ceci inclut la liste complète de ses attributs :

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 personnalisée ultérieurement !

Utilisez des classes

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

Que pouvez-vous en faire ?

Les classes représentent le concept, ou type, de nos objets, ici Book.

Mais lorsque vous effectuez une recherche, pour un livre par exemple, 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 est 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 du type de la classe.

Créez des instances de 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, c’est le constructeur. Il permet à la fois de créer une instance de la classe et de spécifier la valeur des attributs de notre nouvel objet, pratique, non ?

Ajoutons maintenant un constructeur à notre classe Book :

class Book {
      String title;
      String author;
      int numberOfPages;
      String publisher;
      //Constructeur de la classe Book
      Book(String title, String author, int numberOfPages, String publisher) {
            //Initialise l’attribut title avec la valeur de l’argument title
            this.title = title;
            this.author = author;
            this.numberOfPages = numberOfPages;
            this.publisher = publisher;
      }
}

En Java, le constructeur est une fonction spéciale du même nom que la classe avec les arguments passés en paramètres. À l’intérieur de la fonction, nous utilisons les paramètres pour initialiser les attributs de notre objet avec le mot clé this.

Il est également possible de déclarer plusieurs constructeurs différents pour la même classe. Ceux-ci peuvent même s’appeler entre eux ! Voyons cela ensemble avec notre classe Book :

class Book {
    
      String title;
    
      String author;
    
      int numberOfPages;
    
      String publisher;
    
      //Constructeur secondaire de la classe Book
      Book(String title, String author, int numberOfPages) {
            
            //Utilise le constructeur principal avec des valeur prédéfinies
            this(title, author, numberOfPages, "OC");
      }        
      
      //Constructeur principal de la classe Book
      Book(String title, String author, int numberOfPages, String publisher) {
            
            this.title = title;
            
            this.author = author;
            
            this.numberOfPages = numberOfPages;
            
            this.publisher = publisher;
      }
}

Maintenant que notre classe Book possède au moins un constructeur, voici un exemple de code pour créer un livre :

Cette variable est déclarée et initialisée avec l'expression de création de l'objet   new Book(
Déclaration et initialisation de la variable avec l'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  . En d’autres termes, nous disons à notre programme de créer un objet appelé myBook qui est de 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  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 du constructeur (  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  . 

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

Les attributs (aussi appelés champs) en Java sont les variables que vous définissez quand vous créez une classe. Pour instancier un objet, vous déclarez une variable de cette classe. Quand vous instanciez un objet de cette classe, vous définissez ég
Schéma récapitulatif

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. En Java, ceux-ci sont généralement appelés attributs et champs ;

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

Exemple : Je cible l’attribut titre de cet objet book :

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é

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

Example of certificate of achievement
Example of certificate of achievement