0% ont trouvé ce document utile (0 vote)
2 vues4 pages

Programmation Orientée Objet en JAVA

Le document présente un TP sur les classes abstraites et les interfaces en Java, structuré en plusieurs exercices. Il inclut des instructions pour créer des classes abstraites, des classes concrètes, et des interfaces, ainsi que des exercices sur le polymorphisme. Les étudiants doivent également répondre à des questions de réflexion sur les concepts abordés.

Transféré par

aymenefarsi28
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues4 pages

Programmation Orientée Objet en JAVA

Le document présente un TP sur les classes abstraites et les interfaces en Java, structuré en plusieurs exercices. Il inclut des instructions pour créer des classes abstraites, des classes concrètes, et des interfaces, ainsi que des exercices sur le polymorphisme. Les étudiants doivent également répondre à des questions de réflexion sur les concepts abordés.

Transféré par

aymenefarsi28
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Filière : Génie Informatique

Module : Programmation Orientée Objet JAVA, Semestre 5


TP3 : Les classes abstraites et les interfaces

Exercice 1 :

Quel est le résultat des codes suivants :

Code 1 Code 2

Code 3 Code 4

Exercice 2 :

Partie 1 : Classe abstraite Transport

1. Créez une classe abstraite appelée Transport contenant les attributs protégés
suivants :

Année universitaire : 2025/2026


• int id
• String nom
• double vitesseMax
2. Ajoutez un attribut statique privé compteur permettant de générer
automatiquement l’identifiant id.
3. Définissez un constructeur qui :
• Initialise nom et vitesseMax
• Affecte automatiquement un id unique
4. Déclarez les méthodes suivantes :
• public abstract double calculerCout(double distance);
• public abstract String type();
5. Ajoutez une méthode concrète :
public String description()qui retourne par exemple :
Transport [id=1, nom=Train, vitesseMax=300]
6. Ajoutez une méthode statique :
public static int getNombreTransports()qui retourne le nombre total d’objets Transport
créés.
Partie 2 : Les classes concrètes
1. Classe Bus
1. Créez une classe Bus qui hérite de Transport.
2. Ajoutez un attribut :
• int capacite
3. Implémentez :
• calculerCout(double distance)
• coût = distance × 0.5
• type() → retourne "Bus"
4. Redéfinissez description() pour inclure la capacité.
5. Créez une classe Train qui hérite de Transport.
6. Ajoutez un attribut :
• boolean grandeVitesse
7. Implémentez :
• calculerCout(double distance)
• si grande vitesse → distance × 1.2
• sinon → distance × 0.8
• type() → retourne "Train"
8. Redéfinissez description().
9. Créez une classe Avion qui hérite de Transport.
10. Ajoutez un attribut :
• double consommation
11. Implémentez :

Année universitaire : 2025/2026


• calculerCout(double distance)
• coût = distance × consommation
• type() → retourne "Avion"
12. Redéfinissez description().
Partie 3 : Polymorphisme
1. Créez une classe TestTransport contenant la méthode main.
2. Créez un tableau polymorphe :
Transport[] transports = new Transport[3];
3. Instanciez :
• un Bus
• un Train
• un Avion
4. Stockez-les dans le tableau transports.
5. Parcourez le tableau et pour chaque transport :
• Affichez sa description
• Affichez son type
• Calculez et affichez le coût pour une distance de 100 km
Partie 4 : Questions de réflexion
1. Pourquoi la classe Transport ne peut-elle pas être instanciée ?
2. Quel est l’intérêt des méthodes abstraites ?
3. En quoi le tableau Transport[] est-il polymorphe ?
4. Que se passerait-il si calculerCout() n’était pas abstraite ?
5. Quel est l’avantage du polymorphisme dans ce programme ?

Exercice 3 :

Partie 1 – Interfaces
Créez une interface Animal avec :
• une constante String ESPECE = "Inconnue";
• une méthode abstraite void crier();
• une méthode default void manger() qui affiche "L'animal mange"
• une méthode static void info() qui affiche "Info sur les animaux"
Créez une interface Domestique avec :
• une méthode abstraite void dormir();
• une méthode default void jouer() qui affiche "L'animal joue"
Créez une interface Sauvage avec :
• une méthode abstraite void chasser();
Partie 2 – Classes
Créez la classe Chien qui implémente Animal et Domestique :
• Implémentez crier() → "aboie !"
• Implémentez dormir() → "Le chien dort profondément"

Année universitaire : 2025/2026


Créez la classe Chat qui implémente Animal et Domestique :
• Implémentez crier() → "miaule !"
• Implémentez dormir() → "Le chat fait une sieste"
Créez la classe Lion qui implémente Animal et Sauvage :
• Implémentez crier() → "rugir !"
• Implémentez chasser() → "Le lion chasse une gazelle"
Partie 3 – Polymorphisme et Test
Créez une classe Parc avec un main qui :
• Crée un tableau Animal[] parc = new Animal[5];
• Remplit-le avec 2 chiens, 2 chats, 1 lion
• Parcourt le tableau et appelle :
• crier() sur tous
• manger() sur tous (utilise la default)
• dormir() sur les domestiques (avec instanceof et cast)
• chasser() sur les sauvages (avec instanceof et cast)
• Appelle la méthode static [Link]()

Année universitaire : 2025/2026

Vous aimerez peut-être aussi