Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Principes de la POO : Abstraction | Poo
Java POO
course content

Contenu du cours

Java POO

Java POO

1. Comment Travailler Avec un IDE ?
2. Poo
3. Interface

book
Principes de la POO : Abstraction

Abstraction

Nous arrivons au dernier, mais très important principe de la POO : l'abstraction. Le mot « abstraction » semble assez abstrait, et en résumé, ce principe nous indique que nous devons dépendre de l'abstraction plutôt que d'une implémentation spécifique. Cependant, cela peut sembler complexe pour l’instant. Commençons par examiner la définition :

Par exemple, nous avons une classe appelée Person,, et de nombreuses classes différentes en dérivent. Person possède divers champs et méthodes communs à toutes les classes. Cependant, lorsqu'il s'agit d'une classe appelée BasketballPlayer,, la caractéristique height devient cruciale, tandis que pour une classe comme Driver, height est hors de propos et sans importance. C'est là que l'abstraction intervient. En héritant d'une abstraction, nous pouvons rendre le paramètre height optionnel, afin de ne pas avoir à l'utiliser là où il n'est pas nécessaire.

Cela peut sembler complexe, alors passons à un exemple :

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

La classe Car ne représente rien de spécifique. Il n'existe pas simplement de Car ; il y a des berlines, des camions, des tracteurs. Ainsi, nous dépendrons de l'abstraction appelée Car. Pour simplifier davantage : Car est un modèle sur lequel nous créons des classes de voitures spécifiques.

Faites attention à la syntaxe :

Ceci est la syntaxe pour déclarer une classe abstraite. Notez également la syntaxe pour déclarer une méthode abstraite :

Une méthode abstraite n'a pas de corps ; c'est sa caractéristique principale. Les sous-classes d'une classe abstraite vont redéfinir cette méthode abstraite pour définir leur propre implémentation, en utilisant le polymorphisme.

Examinons de plus près ce qu'est une classe abstraite :

Notez que nous ne pouvons pas créer un objet à partir d'une classe abstraite ; cela entraînera une erreur :

Les classes abstraites nous libèrent de la gestion de simples « objets » ; elles nous fournissent un état de base et un comportement. Prenons l'exemple des voitures : chaque voiture devrait avoir un modèle, une année de production, une vitesse maximale et une couleur. Elles devraient également pouvoir se déplacer et s'arrêter. C'est tout ; à partir de là, vous concevrez vos classes spécifiques en vous basant sur ce modèle abstrait.

Règles pour créer une classe abstraite

  1. Une classe abstraite est une classe qui contient au moins une méthode abstraite. Vous pouvez créer une classe abstraite sans aucune méthode abstraite, mais cela n'aurait alors aucun intérêt. Vous ne pourrez pas instancier d'objets à partir d'une classe abstraite ;

  2. Les méthodes abstraites ne peuvent exister qu'à l'intérieur d'une classe abstraite ; vous ne pouvez pas créer de méthodes abstraites en dehors d'une classe abstraite ;

  3. Les méthodes dans une classe abstraite peuvent être soit des méthodes abstraites, soit des méthodes avec implémentation ;

  4. Une classe qui hérite d'une classe abstraite doit redéfinir toutes les méthodes abstraites ;

  5. Vous pouvez hériter d'au maximum une seule classe (abstraite ou non abstraite) ;

  6. Une classe abstraite doit représenter les propriétés et comportements communs de ses classes dérivées. Nous aborderons cela plus en détail lorsque nous étudierons les principes SOLID.

Prenons un exemple pour comprendre comment les sous-classes doivent redéfinir les méthodes abstraites en héritant d'une classe abstraite, en utilisant l'exemple de la classe enfant Truck :

Voici le code de la capture d'écran, réécrit pour une meilleure lisibilité et clarté :

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Examinons plus en détail ce qui est écrit ci-dessus :

  • Première diapositive : Création d'une sous-classe Truck qui hérite de la classe abstraiteCar. L'EDI indique qu'il est nécessaire d'implémenter les méthodes requises ;

  • Deuxième diapositive : Redéfinition des méthodes nécessaires. Par exemple, il est indiqué que le Truck commence à se déplacer puis s'arrête ;

  • Troisième diapositive : Création d'un objet dans la méthode main. Attention à la syntaxe utilisée : Car name = new Truck();. L'objet est créé via l'abstraction et se termine par une implémentation spécifique. Ceci est appelé composition. Ensuite, affectation des valeurs aux champs selon les besoins et appel des méthodes redéfinies.

Voilà ! Si tout est compris, l'utilisation d'une classe abstraite est acquise !

Résumé

L'abstraction est probablement le principe le plus difficile de la POO à comprendre, et il est fort probable que vous n'ayez pas tout assimilé pour le moment. Mais ne pensez pas être seul dans ce cas. L'abstraction est un concept qui s'avère difficile à saisir pour la plupart des développeurs au début. Avec le temps, vous comprendrez mieux comment travailler efficacement avec l'abstraction et les classes abstraites. L'abstraction est un principe fondamental car elle permet de rendre nos programmes extensibles et très flexibles.

1. Qu'est-ce que l'abstraction en Programmation Orientée Objet ?

2. Lesquelles des affirmations suivantes sont vraies concernant l'abstraction ?

3. Quel est le but d'une classe abstraite en Java ?

4. Comment l'abstraction contribue-t-elle à la maintenabilité du code ?

question mark

Qu'est-ce que l'abstraction en Programmation Orientée Objet ?

Select the correct answer

question mark

Lesquelles des affirmations suivantes sont vraies concernant l'abstraction ?

Select the correct answer

question mark

Quel est le but d'une classe abstraite en Java ?

Select the correct answer

question mark

Comment l'abstraction contribue-t-elle à la maintenabilité du code ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 7

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Java POO

Java POO

1. Comment Travailler Avec un IDE ?
2. Poo
3. Interface

book
Principes de la POO : Abstraction

Abstraction

Nous arrivons au dernier, mais très important principe de la POO : l'abstraction. Le mot « abstraction » semble assez abstrait, et en résumé, ce principe nous indique que nous devons dépendre de l'abstraction plutôt que d'une implémentation spécifique. Cependant, cela peut sembler complexe pour l’instant. Commençons par examiner la définition :

Par exemple, nous avons une classe appelée Person,, et de nombreuses classes différentes en dérivent. Person possède divers champs et méthodes communs à toutes les classes. Cependant, lorsqu'il s'agit d'une classe appelée BasketballPlayer,, la caractéristique height devient cruciale, tandis que pour une classe comme Driver, height est hors de propos et sans importance. C'est là que l'abstraction intervient. En héritant d'une abstraction, nous pouvons rendre le paramètre height optionnel, afin de ne pas avoir à l'utiliser là où il n'est pas nécessaire.

Cela peut sembler complexe, alors passons à un exemple :

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

La classe Car ne représente rien de spécifique. Il n'existe pas simplement de Car ; il y a des berlines, des camions, des tracteurs. Ainsi, nous dépendrons de l'abstraction appelée Car. Pour simplifier davantage : Car est un modèle sur lequel nous créons des classes de voitures spécifiques.

Faites attention à la syntaxe :

Ceci est la syntaxe pour déclarer une classe abstraite. Notez également la syntaxe pour déclarer une méthode abstraite :

Une méthode abstraite n'a pas de corps ; c'est sa caractéristique principale. Les sous-classes d'une classe abstraite vont redéfinir cette méthode abstraite pour définir leur propre implémentation, en utilisant le polymorphisme.

Examinons de plus près ce qu'est une classe abstraite :

Notez que nous ne pouvons pas créer un objet à partir d'une classe abstraite ; cela entraînera une erreur :

Les classes abstraites nous libèrent de la gestion de simples « objets » ; elles nous fournissent un état de base et un comportement. Prenons l'exemple des voitures : chaque voiture devrait avoir un modèle, une année de production, une vitesse maximale et une couleur. Elles devraient également pouvoir se déplacer et s'arrêter. C'est tout ; à partir de là, vous concevrez vos classes spécifiques en vous basant sur ce modèle abstrait.

Règles pour créer une classe abstraite

  1. Une classe abstraite est une classe qui contient au moins une méthode abstraite. Vous pouvez créer une classe abstraite sans aucune méthode abstraite, mais cela n'aurait alors aucun intérêt. Vous ne pourrez pas instancier d'objets à partir d'une classe abstraite ;

  2. Les méthodes abstraites ne peuvent exister qu'à l'intérieur d'une classe abstraite ; vous ne pouvez pas créer de méthodes abstraites en dehors d'une classe abstraite ;

  3. Les méthodes dans une classe abstraite peuvent être soit des méthodes abstraites, soit des méthodes avec implémentation ;

  4. Une classe qui hérite d'une classe abstraite doit redéfinir toutes les méthodes abstraites ;

  5. Vous pouvez hériter d'au maximum une seule classe (abstraite ou non abstraite) ;

  6. Une classe abstraite doit représenter les propriétés et comportements communs de ses classes dérivées. Nous aborderons cela plus en détail lorsque nous étudierons les principes SOLID.

Prenons un exemple pour comprendre comment les sous-classes doivent redéfinir les méthodes abstraites en héritant d'une classe abstraite, en utilisant l'exemple de la classe enfant Truck :

Voici le code de la capture d'écran, réécrit pour une meilleure lisibilité et clarté :

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Examinons plus en détail ce qui est écrit ci-dessus :

  • Première diapositive : Création d'une sous-classe Truck qui hérite de la classe abstraiteCar. L'EDI indique qu'il est nécessaire d'implémenter les méthodes requises ;

  • Deuxième diapositive : Redéfinition des méthodes nécessaires. Par exemple, il est indiqué que le Truck commence à se déplacer puis s'arrête ;

  • Troisième diapositive : Création d'un objet dans la méthode main. Attention à la syntaxe utilisée : Car name = new Truck();. L'objet est créé via l'abstraction et se termine par une implémentation spécifique. Ceci est appelé composition. Ensuite, affectation des valeurs aux champs selon les besoins et appel des méthodes redéfinies.

Voilà ! Si tout est compris, l'utilisation d'une classe abstraite est acquise !

Résumé

L'abstraction est probablement le principe le plus difficile de la POO à comprendre, et il est fort probable que vous n'ayez pas tout assimilé pour le moment. Mais ne pensez pas être seul dans ce cas. L'abstraction est un concept qui s'avère difficile à saisir pour la plupart des développeurs au début. Avec le temps, vous comprendrez mieux comment travailler efficacement avec l'abstraction et les classes abstraites. L'abstraction est un principe fondamental car elle permet de rendre nos programmes extensibles et très flexibles.

1. Qu'est-ce que l'abstraction en Programmation Orientée Objet ?

2. Lesquelles des affirmations suivantes sont vraies concernant l'abstraction ?

3. Quel est le but d'une classe abstraite en Java ?

4. Comment l'abstraction contribue-t-elle à la maintenabilité du code ?

question mark

Qu'est-ce que l'abstraction en Programmation Orientée Objet ?

Select the correct answer

question mark

Lesquelles des affirmations suivantes sont vraies concernant l'abstraction ?

Select the correct answer

question mark

Quel est le but d'une classe abstraite en Java ?

Select the correct answer

question mark

Comment l'abstraction contribue-t-elle à la maintenabilité du code ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 7
some-alt