Cours-Gratuit
  • Cours
  • Blog
home icon Cours gratuits » Cours informatique » Cours programmation » Cours JAVA » Exercices JAVA »

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

Participez au vote ☆☆☆☆☆★★★★★
But:
Concevoir entièrement un petit programme orienté-objet
Thème:
POO de base
-

Ecrivez un programme Geometrie qui permet à l'utilisateur d'entrer les coordonnées (x, y) des sommets d'un triangle. Le programme affiche ensuite le périmètre du triangle ainsi qu'un message indiquant s'il s'agit d'un triangle isocèle. Votre programme doit être orienté objets. Indications:

  • Un triangle est isocèle si au moins deux côtés ont la même longueur.
  • La formule pour calculer la distance entre deux points (x1, y1) et (x2, y2) est: racine carrée de (x1 - x2)2 + (y1 - y2)2.
  • Java met à disposition la méthode Math.sqrt() pour calculer la racine carrée. Cette méthode prend un nombre non-négatif en paramètre. Exemple:

      double a = Math.sqrt(9.0);  // la valeur 3.0 sera affectée à a
    

Exemple d'affichage du programme pour un triangle isocèle:

Construction d'un nouveau point
   Veuillez entrer x : 0
   Veuillez entrer y : 0
Construction d'un nouveau point
   Veuillez entrer x : 2.5
   Veuillez entrer y : 2.5
Construction d'un nouveau point
   Veuillez entrer x : 0
   Veuillez entrer y : 5
Périmètre : 12.071067811865476 
Le triangle est isocèle

Dans cet exercice, vous élaborerez un programme orienté objets de manière indépendante pour la première fois. Si vous n'avez pas le temps de faire cet exercice, n'oubliez pas d'en étudier le corrigé.

Voici quelques indications en vrac qui peuvent vous être utiles. Ne les lisez pas si vous voulez être complètement indépendant ...

  • Réfléchissez aux objets que vous aimeriez utiliser dans le programme. Vous pourriez par exemple représenter le triangle par une classe Triangle et ses points par une classe Point. Une troisième classe Geometrie pourrait héberger la méthode main.
  • Réfléchissez aux variables et méthodes d'instance qui seraient utiles pour les classes Triangle et Point.
  • Un objet de type Point a typiquement les coordonnées x et y. Un objet de type Triangle a trois sommets qui peuvent être représentés par des objets de type Point.
  • Les coordonnées des points peuvent par exemple être entrées dans la méthode constructeur de la classe Point à l'aide de la méthode scanner.nextDouble(). Dans ce cas, la méthode constructeur n'a pas de paramètres.
  • Le périmètre d'un triangle peut être calculé comme la somme des distances entre les trois sommets.
  • Une méthode calculerDistance() peut être utile pour calculer la distance entre deux points. La formule est indiquée ci-dessus. Si cette méthode se trouve dans la classe Point, le premier point est accessible sous forme de l'objet utilisé pour appeler la méthode (l'objet actuel this), mais il faut envoyer le deuxième point en paramètre. Si les variables d'instance x et y du deuxième point sont privées, il faut mettre à disposition des méthodes getX() et getY() afin de pouvoir accéder aux valeurs nécessaires pour le calcul.

Fichiers:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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;
  }
}
Contenu publié le 17 Août 2010 Mise à jour le Lundi, 06 Juin 2022 17:58 et rédigé par Salim KHALIL

Articles similaires

  • Exercice langage C : Programme de calcul et d'affichage de la distance euclidienne entre deux points
  • Exercice langage C: Réaliser la classe point
  • Exercice transformer un programme java donné en un programme orienté objet- taxes
  • Exercice java programme affiche un sapin décoré de guirlandes
  • Exercice langage C: Triangle
  • Exercice langage C Triangle de Pascal

Documents similaires

  • Formation sur la serie statistique a deux variables

  • Cours sur l’installation démarreur à distance

  • Tutoriel Arduino drone méthodes et application

  • Projet de géométrie solide constructive en langage C

  • Application gestion financière en langage C

  • Les principes de la méthode MERISE pour débutant

  • Cours d'analyse technique trading les méthodes

  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Cours commerce
  • Cours électricité
  • Cours finance
  • Cours statistique
  • Cours économie
  • Cours Management
  • Cours comptabilité
  • Cours électronique
  • Cours gestion
  • Cours marketing
id 11354 02