Exercice : interfaces1

Code source de l'énoncé

Soient les classes Cercle et Carre :
public class Cercle{
    public static final double PI= 3.14159;
    private double r;
    public Cercle(double r) { this.r = r; }
}
public class Carre{
    private double c;
    public Carre(double c) { this.c = c; }
}
et les interfaces Forme et FormeComparable :
public interface Forme{
    double surface();
}
public interface FormeComparable extends Forme{
    /** 
        Renvoie true si l'objet courant
        a une surface supérieure à f
    **/
    boolean estPlusGrand(FormeComparable f);
}
1) Modifiez les classes Cercle et Carre pour qu'elles implémentent FormeComparable
(pour le cercle, surface = PI * r * r ; pour le carré, surface = c * c).

2) Soit la classe Main :
class Main{
    public static void main(String[] args) {
        FormeComparable[] tableau = {
            new Carre(2),
            new Cercle(2),
            new Carre(3),
        };
    }
}
2.1) Ajoutez à Carre et Cercle une méthode public String toString()
affichant respectivement Cercle 2.0 et Carré 2.0 (affiche le rayon ou le coté au lieu de 2.0).

2.2) Complétez Main pour obtenir l'affichage :
Carré 2.0 ; surface = 4.0
Cercle 2.0 ; surface = 12.56636
Carré 3.0 ; surface = 9.0

Carré 2.0 est plus grand que Cercle 2.0 ? false
(l'affichage des éléments de tableau doit se faire dans une boucle).

3) Modifiez FormeComparable, Cercle et Carre pour transférer l'implémentation de la méthode estPlusGrand() dans l'interface.