class Rectangle { protected double longueur, largeur; public Rectangle(double longueur, double largeur) { this.longueur = longueur; this.largeur = largeur; } public Rectangle(double z) { this(z, z); } public Rectangle() { } public double perimetre() { return 2 * (longueur + largeur); } public double surface() { return longueur * largeur; } public String toString() { String ch = (longueur != largeur) ? "Rectangle " : "Carre "; return ch + String.format( "<%.2f , %.2f, %.2f , %.2f>", longueur, largeur, perimetre(), surface()); } } class RectangleVisible extends Rectangle { private boolean estVisible; public RectangleVisible(double longueur, double largeur, boolean estVisible) { super(longueur, largeur); this.estVisible = estVisible; } public String toString() { return super.toString() + "\n est-il visible ? \n" + (estVisible? " - Oui " : " - Non ") + "\n" ; } } class Carre extends Rectangle { public Carre(double cote) { super(cote); } public double diagonale() { return longueur * Math.sqrt(2.0); } public String toString() { return super.toString() + " diagonale : " + diagonale() + "\n"; } } public class Herit1 { public static void main(String[] args) { Rectangle rect = new Rectangle(6.2, 4.9); System.out.printf(" rect : %s\n", rect) ; RectangleVisible rectV = new RectangleVisible(8.1, 6.4, true); System.out.printf(" rectV : %s\n", rectV) ; Carre c = new Carre(5.4); System.out.printf(" objet c : %s\n", c) ; } } /* --------------------Configuration: -------------------- rect : Rectangle <6,20 , 4,90, 22,20 , 30,38> rectV : Rectangle <8,10 , 6,40, 29,00 , 51,84> est-il visible ? - Oui objet c : Carre <5,40 , 5,40, 21,60 , 29,16> diagonale : 7.636753236814714 Process completed. */