🔸3🔸Exemples¶
Avertissement
Les exemples ci-dessous sont des illustrations simplifiées de concepts de programmation orientée objet. Ils ne
représentent pas des implémentations complètes de jeux vidéo et nécessitent des adaptations pour être utilisés
dans un contexte réel. Par exemple, les méthodes ne contiendraient pas seulement des println
mais des logiques
plus complexes.
Exemple avec une Hiérarchie de Véhicules¶
Classe Abstraite - Nature Fondamentale¶
public abstract class Vehicule {
protected String marque;
protected int vitesseMax;
public Vehicule(String marque, int vitesseMax) {
this.marque = marque;
this.vitesseMax = vitesseMax;
}
public abstract void demarrer();
// Méthode concrète commune à tous les véhicules
public void klaxonner() {
System.out.println("Beep beep!");
}
}
public class Voiture extends Vehicule {
public Voiture(String marque, int vitesseMax) {
super(marque, vitesseMax);
}
@Override
public void demarrer() {
System.out.println("La voiture démarre avec la clé");
}
}
Interfaces - Capacités¶
public interface Rechargeable {
void recharger();
}
public interface Volant {
void decoller();
void atterrir();
}
public class VoitureElectrique extends Voiture implements Rechargeable {
public VoitureElectrique(String marque, int vitesseMax) {
super(marque, vitesseMax);
}
@Override
public void recharger() {
System.out.println("La voiture se recharge sur une borne");
}
}
public class VoitureVolante extends Voiture implements Volant {
@Override
public void decoller() {
System.out.println("La voiture s'élève dans les airs");
}
@Override
public void atterrir() {
System.out.println("La voiture revient au sol");
}
}
Exemple avec des Animaux¶
Classe Abstraite - Structure de Base¶
public abstract class Animal {
protected String nom;
protected int age;
public abstract void respirer();
public void dormir() {
System.out.println("L'animal dort");
}
}
Interfaces - Comportements¶
public interface Nageable {
void nager();
}
public interface Volant {
void voler();
}
public class Dauphin extends Animal implements Nageable {
@Override
public void respirer() {
System.out.println("Le dauphin remonte à la surface");
}
@Override
public void nager() {
System.out.println("Le dauphin nage rapidement");
}
}
public class Chauve_Souris extends Animal implements Volant {
@Override
public void respirer() {
System.out.println("La chauve-souris respire");
}
@Override
public void voler() {
System.out.println("La chauve-souris vole silencieusement");
}
}
Ces exemples illustrent comment :
- Les classes abstraites définissent la structure de base et les comportements communs
- Les interfaces permettent d’ajouter des capacités de manière flexible
- Une classe peut hériter d’une seule classe abstraite mais implémenter plusieurs interfaces
- Les interfaces favorisent la réutilisation de code à travers des hiérarchies non liées
Citations¶
- [1] https://www.studysmarter.fr/resumes/informatique/programmation-informatique/interfaces-java/
- [2] https://members.loria.fr/ABelaid/Enseignement/FC/Cours7-Classes-abstraites.pdf
- [3] https://codegym.cc/fr/groups/posts/fr.1008.interface-en-java
- [4] https://www.studysmarter.fr/resumes/informatique/programmation-informatique/abstraction-en-java/
- [5] https://www.studysmarter.fr/resumes/informatique/programmation-informatique/interface-set-java/
- [6] https://dev.to/bassaoudev/poo-comprendre-les-classes-abstraites-et-les-interfaces-en-java-3imn
- [7] https://dev.to/bassaoudev/poo-les-interfaces-en-java-simplement-5fdd
- [8] https://codegym.cc/fr/groups/posts/les-classes-abstraites-en-java
- [9] https://blog.paumard.org/cours/java/chap07-heritage-interface-interface.html
- [10] https://gayerie.dev/epsi-b3-java/langage_java/interface.html
Note
Page rédigée en partie avec l’aide d’un assistant IA, principalement à l’aide de Perplexity AI, avec le LLM Claude 3.5 Sonnet. L’IA a été utilisée pour générer des explications, des exemples et/ou des suggestions de structure. Toutes les informations ont été vérifiées, éditées et complétées par l’auteur.