Exercice corrigé POO de base concevoir un programme de géométrie

import java.util.Scanner;

class Geometrie {

 /**
   * Le programme principal se content de construire un
   * triangle, d'afficher son perimètre et d'afficher
   * s'il est isocèle ou non.
   */ 

  public static void main(String[] args) {
    Triangle t = new Triangle();
    double perimetre = t.calculerPerimetre();
    System.out.println("Périmètre : " + perimetre);
    boolean isocele = t.testerIsocele();
    if (isocele)
      System.out.println("Le triangle est isocèle");
    else
      System.out.println("Le triangle n'est pas isocèle");
  }

}

class Triangle {

  private Point p1, p2, p3;
  private double longueur1, longueur2, longueur3;

  /**
   * La constructeur d'un Triangle fait appel
   * au constructeur de Point. Ce dernier lit les
   * coordonnées depuis le terminal.
   */ 
  public Triangle() {
    // Construction de trois points:
    p1 = new Point();
    p2 = new Point();
    p3 = new Point();

    // Les distances sont calculées et stockées dans des variables
    // d'instance.  Les méthodes calculerPerimetre et testerIsocele
    // peuvent ainsi accéder aux valeurs précalculées et nous évitons
    // de les recalculer plusieurs fois.
    longueur1 = p1.calculerDistance(p2);
    longueur2 = p2.calculerDistance(p3);
    longueur3 = p3.calculerDistance(p1);
  }

  /**
   * Calcul du perimètre de l'instance courante (this).
   * @return le perimetre sous la forme d'un double
   */ 
  public double calculerPerimetre() {
    return (longueur1 + longueur2 + longueur3);
  }

  /**
   * Teste si l'instance courante (this) est un triangle isocèle
   * @return true si le triangle est isocèle et false sinon
   */ 
  public boolean testerIsocele() {
    if ((longueur1 == longueur2) ||
    (longueur2 == longueur3) ||
    (longueur3 == longueur1)) {
      return true;
    } else {
      return false;
    }
  }

}

class Point {
    private static Scanner scanner = new Scanner(System.in);
  private double x, y;

  public Point() {
    System.out.println("Construction d'un nouveau point");
    System.out.print("   Veuillez entrer x : ");
    x = scanner.nextDouble();
    System.out.print("   Veuillez entrer y : ");
    y = scanner.nextDouble();
  }

  public double getX() {
    return x;
  }

  public double getY() {
    return y;
  }

/**
   * Calcule la distance entre this et un point p
   * @param p un Point par rapport auquel on calcule la distance
   * @return la distance de this à p
   */ 
  public double calculerDistance(Point p) {
    // Calcule la distance entre deux points. Le premier point est
    // l'objet actuel (this). Le deuxième point (p) est envoyé en
    // paramètre.

    double x1 = this.x;
    double y1 = this.y;

    double x2 = p.getX();
    double y2 = p.getY();

    double xdiff = x1 - x2;
    double ydiff = y1 - y2;

    double somme = xdiff * xdiff + ydiff * ydiff;
    double distance = Math.sqrt(somme);

    return distance;
  }
}

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *