public class Rectangle { /* * Attributs du Rectangle */ Point centre; private int longueur, hauteur; private int surface, perimetre; String nom; private static int nb = 0; /* * Constructeurs */ public Rectangle(){ centre = new Point(50,50); longueur = 60; hauteur = 40; calculerPerimetre(); calculerSurface(); nb++; nom = "Rect"+String.valueOf(nb); } public Rectangle(int longueur, int hauteur, String nom){ centre = new Point(50,50); this.longueur = longueur; this.hauteur = hauteur; calculerPerimetre(); calculerSurface(); nb++; this.nom = nom; } public Rectangle(int x, int y, int longueur, int hauteur, String nom){ centre = new Point(x,y); this.longueur = longueur; this.hauteur = hauteur; calculerPerimetre(); calculerSurface(); nb++; this.nom = nom; } public Rectangle(Rectangle r){ centre = new Point(r.centre); this.longueur = r.longueur; this.hauteur = r.hauteur; calculerPerimetre(); calculerSurface(); nb++; this.nom = new String(r.nom); } /* * Méthodes du Rectangle */ private void calculerSurface(){ surface = longueur * hauteur; } private void calculerPerimetre(){ perimetre = (longueur + hauteur)*2; } public int getLongueur() { return longueur; } public void setLongueur(int longueur) { this.longueur = longueur; calculerPerimetre(); calculerSurface(); } public int getHauteur() { return hauteur; } public void setHauteur(int hauteur) { this.hauteur = hauteur; calculerPerimetre(); calculerSurface(); } public int getSurface() { return surface; } public int getPerimetre() { return perimetre; } void deplacer(int dX, int dY){ centre.deplacer(dX, dY); } int getX0(){ return centre.x - longueur/2; } int getX1(){ return centre.x + longueur/2; } int getY0(){ return centre.y - hauteur/2; } int getY1(){ return centre.y + hauteur/2; } boolean contientPoint(Point p){ return this.getX0()<=p.x && this.getX1()>=p.x && this.getY0()<=p.y && this.getY1()>=p.y; } boolean contientRectangle(Rectangle r){ return this.getX0()<=r.getX0() && this.getX1()>=r.getX1() && this.getY0()<=r.getY0() && this.getY1()>=r.getY1(); } boolean estContenuDansRectangle(Rectangle r){ return r.contientRectangle(this); } /* * 2 rectangles seront considérés comme égaux s'ils ont le même centre, la même longueur et la même hauteur. */ boolean equals(Rectangle r){ return centre.equals(r.centre) && longueur==r.longueur && hauteur==r.hauteur; } void afficher() { System.out.print("Le rectangle "+nom); System.out.print(" est positionné en ("+centre.x+","+centre.y+")"); System.out.print(", a une longueur de "+longueur); System.out.println(" et une hauteur de "+hauteur); } public static void main(String[] args) { Rectangle r1 = new Rectangle(4,4,6,4,"R1"); Rectangle r2 = new Rectangle(9,6,4,8,"R2"); Rectangle r3 = new Rectangle(9,7,2,4,"R3"); Rectangle r4 = new Rectangle(2,9,2,2,"R4"); r1.afficher(); r2.afficher(); r3.afficher(); r4.afficher(); System.out.println("R2 contient R3 ? "+r2.contientRectangle(r3)); System.out.println("R2 contenu dans R4 ? "+r2.estContenuDansRectangle(r4)); Point p = new Point(5,5); System.out.println("R1 contient P ? "+r1.contientPoint(p)); Rectangle r4bis = new Rectangle(r4); Rectangle r = new Rectangle(); r4bis.afficher(); r.afficher(); } }