Java
Licence professionnelle CISII, 2009-2010
Cours 5 : l’héritage
Solutions
Cours inspiré des cours de Richard Grin, Antoine Tabbone et Hazel Everett
Corrigé
La classe Animal :
class Animal
{
protected int nbPattes;
Animal(int nb){//constructeur
setNbPattes(nb);
}
//accesseur
public int getNbPattes(){return nbPattes;}
//modifieur
public void setNbPattes(int nb){nbPattes = nb;}
public String toString() {
return "Ceci est un animal doté de " + getNbPattes() + "
pattes";
}
public void affiche(){
[Link](toString());
}
}
Corrigé (2)
Les classes Autruche et Lapin :
class Autruche extends Animal
{
Autruche(int nb){//constructeur
super(nb);
}
public String toString() {
return "Ceci est une autruche dotée de " + getNbPattes()
+ " pattes";
}
}
class Lapin extends Animal
{
Lapin(int nb){//constructeur
super(nb);
}
public String toString() {
return "Ceci est un lapin doté de " + getNbPattes() + "
pattes";
}
}
Corrigé (3)
La classe Main :
class Main
{
public static void main(String args[])
{
Autruche kiki = new Autruche(2);
Lapin bunny = new Lapin(4);
[Link]();
[Link]();
}
}
Cours5-TD5
Exercice 1
- Créez la classe Vehicule qui contient les données
private boolean moteur, et
private int vitesseMax, et
- les méthodes suivantes :
constructeur,
String toString(), qui renvoie les caractéristiques du véhicule,
void Vmax() qui affiche la vitesse maximale du véhicule.
- Créez ensuite une classe Voiture_Composee dont les membres sont
private Vehicule ve,
private int nombreDePortes,
et Voiture_Derivee (dérivant de la classe Vehicule) avec la donnée membre
private int nombreDePortes.
- Pour les deux classes, définissez leur constructeur et leur méthode String
toString(). Comparez les deux implantations. Comment accède-t-on aux
différentes données membres et aux différentes méthodes des classes
Voiture Composee et Voiture Derivee ? Affichez la vitesse maximale de la
voiture dans les deux cas.
public class Vehicule { public void Vmax(){
private boolean moteur; [Link]("\nvitesse max :
private int vitesseMax; "+vitesseMax+" km/h\n");
}
public Vehicule() {
moteur = false; public boolean getMoteur () {
vitesseMax = 0; return moteur;
} }
public Vehicule(boolean m, int v){ public int getVitesseMax() {
moteur = m; return vitesseMax;
vitesseMax = v; }
}
public static void main(String[] args){
public String toString(){ Vehicule v1=new Vehicule(true,121);
String S="\nvehicule "; [Link](v1);
if (moteur) S=S+"a moteur, "; [Link]();
else }
S=S+"sans moteur, "; }
S=S+"dont la vitesse maximale est
de "+vitesseMax+"km/h";
return S;
}
public class Voiture_Composee { public static void main(String[] args)
private Vehicule v; {
private int nombreDePortes;
Voiture_Composee v1 = new
Voiture_Composee(true,152,4);
public Voiture_Composee()
{ [Link](v1);
v = new Vehicule(); [Link]([Link]);
nombreDePortes = 2; [Link]([Link]());
} [Link]([Link]());
[Link]();
public Voiture_Composee(boolean m,
int vit, int n){ }
v = new Vehicule(m,vit); }
nombreDePortes = n;
}
public String toString(){
String S;
S = [Link]();
S = S+" C'est une voiture de " +
nombreDePortes + " portes.\n";
return S;
}
public class Voiture_Derivee extends public static void main(String[] args)
Vehicule { {
private int nombreDePortes;
Voiture_Derivee v1 = new
Voiture_Derivee(true,150,2);
public Voiture_Derivee() {
super(); [Link](v1);
nombreDePortes = 2; [Link]([Link]());
} [Link]([Link]());
[Link]([Link]);
public Voiture_Derivee(boolean m,int
v,int n) { [Link]();
super(m,v); }
nombreDePortes = n; }
}
public String toString(){
String S;
S=[Link]();
S=S+" C'est une voiture de " +
nombreDePortes + " portes.\n";
return S;
}
public class Main {
public static void main(String[] args) {
[Link]("\nVoiture composee \n======
========== \n");
Voiture_Composee v1 = new Voiture_Composee(true, 152, 4);
[Link](v1);
// [Link](); il faut une méthode getVehicule() dans
Voiture_Composee
[Link]("\nVoiture Derivee\n======
=========\n");
Voiture_Derivee v2 = new Voiture_Derivee(true, 150, 2);
[Link](v2);
[Link]();
}
}
Cours5-TD5
Exercice 2
- Créez une classe Liquide contenant seulement une méthode
imprimer() qui affiche : ”je suis un liquide”
- Créez 2 classes dérivées de la classe Liquide, les classes
Cafe et Lait, dont les méthodes imprimer() affichent
respectivement ”je suis un Café”, ”je suis du Lait”
- Enfin créerez une classe Tasse ayant un attribut l de la
classe Liquide et une méthode AjouterLiquide (Liquide li) et
une méthode imprimer()
- Testez l’utilisation : créer un tableau de Tasses qui contient
différents liquides
public class Liquide { public class Main {
public void imprimer(){ public static void main(String[] args) {
[Link]("je suis un
liquide");} Tasse latasse;
} latasse =new Tasse();
[Link](new Liquide());
class Cafe extends Liquide { [Link]();
public void imprimer() {
[Link]("je suis du latasse=new Tasse();
cafe");}
[Link](new Cafe());
}
[Link]();
class Lait extends Liquide{
public void imprimer(){ Tasse[] lestasses;
[Link]("je suis du lestasses = new Tasse[3];
lait");} for (int i=0;i<3;i++)
} lestasses[i]= new Tasse();
class Tasse { lestasses[0].AjouterLiquide(new Cafe());
private Liquide l; lestasses[1].AjouterLiquide(new Lait());
public void AjouterLiquide (Liquide l) lestasses[2].AjouterLiquide(new Liquide());
{this.l = l;}
public void imprimer() {
for (int i=0;i<3;i++)
[Link]();}
lestasses[i].imprimer();
}
}
}
je suis un liquide
je suis du cafe
je suis du cafe
je suis du lait
je suis un liquide