4. Exercices : Classes abstraites et interfaces¶
Partie 1 : Compréhension¶
Exercice 1 : Questions théoriques¶
Répondez aux questions suivantes en justifiant vos réponses avec des exemples de code si nécessaire.
- Quelle est la différence fondamentale entre une classe abstraite et une interface en Java ?
- Quand utiliseriez-vous une classe abstraite plutôt qu’une interface, et vice versa ?
- Peut-on implémenter plusieurs interfaces dans une classe ? Peut-on hériter de plusieurs classes abstraites ? Pourquoi ?
- Qu’est-ce qu’une méthode par défaut dans une interface ? Donnez un exemple d’utilisation.
- Expliquez le concept de “contrat” dans le contexte des interfaces.
Exercice 2 : Vrai ou Faux¶
Indiquez si les affirmations suivantes sont vraies ou fausses, et corrigez celles qui sont fausses.
- Une classe abstraite peut contenir des champs non statiques et non finals.
- Une interface peut contenir des implémentations de méthodes (hors méthodes par défaut et statiques).
- Une classe peut implémenter plusieurs interfaces mais ne peut hériter que d’une seule classe abstraite.
- Les méthodes d’une interface sont implicitement
publicetabstract. - Une classe abstraite peut être instanciée directement.
Partie 2 : Pratique¶
Exercice 3 : Implémentation de classes abstraites et d’interfaces¶
Créez un programme Java qui modélise un système de gestion de formes géométriques.
-
Définissez une classe abstraite
Formeavec :- Un champ
nom(de typeString). - Une méthode abstraite
double calculerAire(). - Une méthode abstraite
double calculerPerimetre(). - Une méthode concrète
void afficherDetails()qui affiche le nom de la forme, son aire et son périmètre.
- Un champ
-
Définissez une interface
Deplacableavec :- Une méthode
void deplacer(double dx, double dy)qui simule le déplacement de la forme.
- Une méthode
-
Créez deux classes concrètes qui héritent de
Formeet implémententDeplacable:Cercle(avec un champrayon).Rectangle(avec des champslongueuretlargeur).
-
Dans une classe
Main, créez des instances deCercleetRectangle, appelez leurs méthodes pour calculer l’aire et le périmètre, puis déplacez-les.
Exercice 4 : Correction et amélioration de code¶
Le code suivant contient des erreurs ou des mauvaises pratiques. Corrigez-le et justifiez vos modifications.
abstract class Animal {
String nom;
abstract void manger();
}
interface Volant {
void voler();
}
class Oiseau extends Animal implements Volant {
void manger() {
System.out.println(nom + " mange des graines.");
}
public void voler() {
System.out.println(nom + " vole dans le ciel.");
}
}
public class Main {
public static void main(String[] args) {
Oiseau pigeon = new Oiseau();
pigeon.manger();
pigeon.voler();
}
}
Questions :
- Quelles erreurs ou mauvaises pratiques observez-vous ?
- Proposez une version corrigée et améliorée du code.
Utilisation de l’IA
Page rédigée en partie avec l’aide d’un assistant IA. 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.