Vous êtes sur la page 1sur 4

TP N° 5 : Polymorphisme

Langage JAVA

Exercice 1 :

Ecrire les classes nécessaires au fonctionnement du programme suivant (en ne fournissant que les
méthodes nécessaires à ce fonctionnement). N'oubliez pas de commenter votre code :

public class TestFormes {


public static void main(String[] argv) {
Forme[ ] figures = new Forme[3] ;
figures [ 0 ] = new Carre( 2 ) ; // Création d'un carré de 2 cm de coté
figures [ 1 ] = new Cercle( 3 ) ; // Création d'un cercle de 3 cm de rayon
figures [ 2 ] = new Carre( 5.2 ) ; // Création d'un carré de 5,2 cm de coté
for( int i=0 ; i< figures.length ; i++ )
System.out.println( figures[i] +" : surface = "+ figures[i].getSurface() +"
cm2" ) ;
}
}

Sortie de ce programme :

Carré ( coté 2.0 cm ) : surface = 4.0 cm2


Cercle ( rayon 3.0 cm ) : surface = 28.26 cm2
Carré ( coté 5.2 cm ) : surface = 27,04 cm2

Rappel :
 Surface d'un carré = coté*coté
 Surface d'un cercle = Pi*rayon*rayon

Exercice 2 :

Ecrire les classes nécessaires au fonctionnement du programme suivant (en ne fournissant que les
méthodes nécessaires à ce fonctionnement). N'oubliez pas de commenter votre code :

public class TestMetiers {


public static void main(String[] argv) {
Personne[ ] personnes = new Personne[3] ;
personnes [ 0 ] = new Menuisier( "Paul" ) ;
personnes [ 1 ] = new Plombier( "Jean" ) ;
personnes [ 2 ] = new Menuisier( "Adrien" ) ;
for( int i=0 ; i< personnes.length ; i++ ) personnes[i].affiche() ;
}
}

Sortie de ce programme :

Je suis Paul le Menuisier


Je suis Jean le Plombier
Je suis Adrien le Menuisier

Page 1
M. LACHGAR Med
Correction :
Arborescence du projet :

Exercice 1 :

Solution 1 :

La classe Forme

package ex1;

public class Forme {

protected double surface;

public Forme(double surface) {


this.surface = surface;
}

public double getSurface() {


return surface;
}

La classe Carre

package ex1;

public class Carre extends Forme{

private double cote;

public Carre(double cote) {


super(cote * cote);
this.cote = cote;
}

public String toString(){


return "Carré (coté "+this.cote+" cm) ";
}

Page 2
M. LACHGAR Med
La classe Cercle

package ex1;

public class Cercle extends Forme{


private double rayon;

public Cercle(double rayon) {


super(Math.PI * Math.pow(rayon, 2));
this.rayon = rayon;
}

public String toString(){


return "Cercle (rayon "+this.rayon+" cm) ";
}

Solution 2 :

La classe Forme
public abstract class Forme {
public abstract double getSurface();
}

La classe Carre

public class Carre extends Forme{


private double cote;

public Carre(double cote) {


this.cote = cote;
}
public double getSurface() {
return cote * cote;
}
public String toString(){
return "Carre ( coté "+this.cote +" cm ) :";
}
}

La classe Cercle

public class Cercle extends Forme{


private double rayon;

public Cercle(double rayon) {


this.rayon = rayon;
}
public double getSurface() {
return Math.pow(rayon, 2) * Math.PI;
}
public String toString(){
return "Cercle (rayon "+this.rayon +" cm ) :";
}
}

Page 3
M. LACHGAR Med
Exercice 2 :

La classe Personne

package ex2;

public abstract class Personne {


protected String nom;

public Personne(String nom) {


this.nom = nom;
}
public abstract void affiche();
}

La classe Menuisier

package ex2;

public class Menuisier extends Personne {

public Menuisier(String nom) {


super(nom);
}

public void affiche() {


System.out.println("Je suis"+this.nom+" le Menuisier");
}
}

La classe Menuisier
package ex2;

public class Plombier extends Personne{

public Plombier(String nom) {


super(nom);
}

public void affiche() {


System.out.println("Je suis"+this.nom+" le Plombier");
}
}

Page 4
M. LACHGAR Med