En vous aidant des classes déjà existantes : Étendre la Classe Chien :
Dans la classe Main, créez un 3ème chien (monChien3) avec un poids de 25.5 kg, puis appelez la méthode courir().
public class Chien { // Attributs privés (encapsulation) private String nom; private String race; private int age; // Constructeur par défaut public Chien() {} // Constructeur paramétré public Chien(String nom, String race, int age) { this.nom = nom; this.race = race; this.age = age; } // Méthodes (comportements) public void aboyer() { System.out.println(nom + " dit: Woof! Woof!"); } public void manger() { System.out.println(nom + " mange des croquettes."); } // Getters et Setters (encapsulation) public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getRace() { return race; } public void setRace(String race) { this.race = race; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
public class Main { public static void main(String[] args) { // instances de la classe Chien Chien monChien1 = new Chien("Rex", "Labrador", 3); Chien monChien2 = new Chien("Bella", "Berger Australien", 5); // Utilisation des méthodes monChien1.aboyer(); // Rex dit : Woof! Woof! monChien2.manger(); // Bella mange des croquettes. // attributs via les getters System.out.println(monChien1.getNom() + " est un " + monChien1.getRace()); // Rex est un Labrador } }
class Chien { private String nom; public void aboyer() { ... } }
Chien monChien1 = new Chien("Rex", "Labrador", 3);
private
private String nom; public String getNom() { return nom; }
public Chien(String nom, String race, int age) { this.nom = nom; ... }
aboyer()
manger()
public class Voiture { private String marque; public void demarrer() { ... } }
Voiture maVoiture = new Voiture();
maVoiture
Voiture
public class VoitureElectrique extends Voiture { ... }
demarrer()
demarrer(boolean modeSilencieux)
@Override public void demarrer() { ... }
public abstract class Vehicule { public abstract void demarrer(); }
private double solde; public double getSolde() { return solde; } public void setSolde(double solde) { if (solde >= 0) this.solde = solde; }
public class Enseignant { private List<Etudiant> etudiants; }
public class Etudiant { private List<Enseignant> enseignants; }
public class Departement { private List<Enseignant> enseignants; }
public class Maison { private List<Piece> pieces; }
// Classe Chien mise à jour public class Chien { private String nom; private String race; private int age; private double poids; // Nouvel attribut public Chien(String nom, String race, int age, double poids) { this.nom = nom; this.race = race; this.age = age; this.poids = poids; } // Getter et Setter pour poids public double getPoids() { return poids; } public void setPoids(double poids) { this.poids = poids; } // Nouvelle méthode public void courir() { System.out.println(nom + " court à toute vitesse !"); } // ... (autres méthodes existantes) } // Classe Main mise à jour public class Main { public static void main(String[] args) { Chien monChien1 = new Chien("Rex", "Labrador", 3, 30.0); Chien monChien2 = new Chien("Bella", "Berger Australien", 5, 20.0); Chien monChien3 = new Chien("Max", "Golden Retriever", 2, 25.5); monChien1.aboyer(); monChien2.manger(); monChien3.courir(); // Max court à toute vitesse ! } }
Réponse : Pour protéger les données et contrôler leur accès via des getters/setters (encapsulation).
Réponse : Une classe est un modèle (ex. : plan d’une voiture), un objet est une instance concrète (ex. : une voiture spécifique).
Réponse : L’attribut prendra une valeur par défaut (ex. : 0 pour int, null pour String).
Réponse : Pour valider les données (ex. : vérifier qu’un âge est positif) et maintenir l’encapsulation.
public class ChienDeGarde extends Chien { private boolean estDresse; public ChienDeGarde(String nom, String race, int age, double poids, boolean estDresse) { super(nom, race, age, poids); this.estDresse = estDresse; } public void surveiller() { System.out.println(getNom() + " surveille la propriété !"); } }
@Override public void aboyer() { System.out.println(getNom() + " dit: GRRR! Woof! (mode garde)"); }
ChienDeGarde monChienDeGarde = new ChienDeGarde("Rex", "Berger Allemand", 4, 35.0, true); monChienDeGarde.surveiller(); // Affiche: Rex surveille la propriété ! monChienDeGarde.aboyer(); // Affiche: Rex dit: GRRR! Woof! (mode garde)
Chien monChien1 = new Chien("Rex", "Labrador", 3, 30.0);
private double poids; public double getPoids() { return poids; }
public Chien(String nom, String race, int age, double poids) { ... }
courir()
class ChienDeGarde extends Chien { ... }
@Override public void aboyer() { ... }
Interfaces
Classes Abstraites
Collections
Votre association décide de gèrer plusieurs catégories d’Animaux et vous demande de mettre en place la possibilité d’afficher depuis une Collection les caractéristiques de chaque Animal: Utiliser une **List** pour gérer plusieurs *chiens*, *oiseaux*, *chevaux* et *tortues* avec leurs propres spécificités, sachant qu'un cheval peut aussi bénficier de l'interface **Dressable** qui oblige l'utilisation de la méthode **executerOrdre()**.
Collection
Vous êtes de mettre ce que vous voulez dans les différentes méthodes.