From edb95af2917571b28525e8abebf607e62c57acf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Tue, 20 Jun 2023 21:03:42 +0200 Subject: [PATCH] init --- .vscode/settings.json | 7 ++ Cercle.java | 233 ++++++++++++++++++++++++++++++++++++ CercleTest.java | 105 ++++++++++++++++ ComplementsCercleTest.java | 95 +++++++++++++++ FormeCercleTest.java | 191 +++++++++++++++++++++++++++++ LISEZ-MOI.txt | 49 ++++++++ Mesurable2D.java | 17 +++ Point.java | 95 +++++++++++++++ RobustesseCercleTest.java | 125 +++++++++++++++++++ SujetCercleTest.java | 135 +++++++++++++++++++++ to-1sn-2020-pr-01-sujet.pdf | Bin 0 -> 80819 bytes 11 files changed, 1052 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 Cercle.java create mode 100644 CercleTest.java create mode 100644 ComplementsCercleTest.java create mode 100644 FormeCercleTest.java create mode 100644 LISEZ-MOI.txt create mode 100644 Mesurable2D.java create mode 100644 Point.java create mode 100644 RobustesseCercleTest.java create mode 100644 SujetCercleTest.java create mode 100644 to-1sn-2020-pr-01-sujet.pdf diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..75404ea --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "java.project.referencedLibraries": [ + "lib/**/*.jar", + "/usr/share/java/hamcrest-core.jar", + "/usr/share/java/junit.jar" + ] +} \ No newline at end of file diff --git a/Cercle.java b/Cercle.java new file mode 100644 index 0000000..97e9492 --- /dev/null +++ b/Cercle.java @@ -0,0 +1,233 @@ +import java.awt.Color; + +/** + * Cercle modélise un cercle géométrique dans un plan équipé d'un + * repère cartésien. Un cercle peut être affiché et translaté. + */ +public class Cercle implements Mesurable2D { + +//@ public invariant getRayon() > 0; +//@ public invariant getDiametre() > 0; +//@ private invariant rayon == getRayon(); +//@ private invariant 2*rayon == getDiametre(); +//@ private invariant couleur == getCouleur(); +//@ private invariant centre.getX() == getCentre().getX(); +//@ private invariant centre.getY() == getCentre().getY(); + +// Constantes + + /** constante mathématique π. */ + public static final double PI = Math.PI; + +// Attributs + + /** centre du cercle. */ + private Point centre; + /** rayon du cercle. */ + private double rayon; + /** couleur du cercle. */ + private Color couleur = Color.BLUE; + +// Constructeurs + + /** + * Construire un cercle à partir de son centre et de son rayon. + * @param centre centre du cercle + * @param rayon rayon du cercle + */ + //@ requires centre != null; + //@ requires rayon > 0; + public Cercle(Point centre, double rayon) { + assert centre != null; + assert rayon > 0; + this.centre = new Point(centre.getX(), + centre.getY()); + this.rayon = rayon; + } + + /** + * Construire un cercle à partir de deux points diamétralement opposés. + * @param p1 point n°1 + * @param p2 point n°2 + */ + //@ requires p1 != null; + //@ requires p2 != null; + //@ requires p1.getX() != p2.getX() && p1.getY() != p2.getY(); + //@ ensures getRayon() > 0; + public Cercle(Point p1, Point p2) { + assert p1 != null; + assert p2 != null; + assert p1.getX() != p2.getX() + || p1.getY() != p2.getY(); + this.centre = new Point((p1.getX() + p2.getX()) / 2, + (p1.getY() + p2.getY()) / 2); + this.rayon = p1.distance(p2) / 2; + } + + /** + * Construire un cercle coloré à partir de deux points diamétralement opposés. + * @param p1 point n°1 + * @param p2 point n°2 + * @param couleur couleur du cercle + */ + //@ requires couleur != null; + public Cercle(Point p1, Point p2, Color couleur) { + this(p1, p2); + assert couleur != null; + this.couleur = couleur; + } + +// GETs + + /** + * Obtenir le rayon du cercle. + * @return rayon du cercle + */ + //@ ensures \result > 0; + public /*@ pure @*/ double getRayon() { + return this.rayon; + } + + /** + * Obtenir le diamètre du cercle. + * @return diamètre du cercle + */ + //@ ensures \result > 0; + public /*@ pure @*/ double getDiametre() { + return 2 * this.rayon; + } + + /** + * Obtenir le centre du cercle. + * @return centre du cercle + */ + public /*@ pure @*/ Point getCentre() { + return new Point(this.centre.getX(), + this.centre.getY()); + } + + /** + * Obtenir la couleur du cercle. + * @return couleur du cercle + */ + public /*@ pure @*/ Color getCouleur() { + return this.couleur; + } + +// SETs + + /** + * Changer le rayon du cercle. + * @param rayon nouveau rayon + */ + //@ requires rayon > 0; + //@ ensures getRayon() == rayon + public void setRayon(double rayon) { + assert rayon > 0; + this.rayon = rayon; + } + + /** + * Changer le diamètre du cercle. + * @param d nouveau diamètre + */ + //@ requires d > 0; + //@ ensures getDiametre() == d + public void setDiametre(double d) { + assert d > 0; + this.rayon = d / 2; + } + + /** + * Changer le centre du cercle. + * @param centre nouveau centre + */ + //@ requires centre != null; + public void setCentre(Point centre) { + assert centre != null; + this.centre = centre; + } + + /** + * Changer la couleur du cercle. + * @param nouvelleCouleur nouvelle couleur + */ + //@ requires nouvelleCouleur != null; + public void setCouleur(Color nouvelleCouleur) { + assert nouvelleCouleur != null; + this.couleur = nouvelleCouleur; + } + +// Prints + + /** + * Convertir le Cercle en un String pour son affichage. + * @return String associée au Cercle + */ + public String toString() { + return "C" + this.rayon + + "@" + this.centre; + } + + /** + * Afficher le cercle. + */ + public void afficher() { + System.out.print(this); + } + +// Méthodes + + /** + * Translater le cercle. + * @param dx déplacement suivant l'axe des X + * @param dy déplacement suivant l'axe des Y + */ + public void translater(double dx, double dy) { + this.centre.translater(dx, dy); + } + + /** + * Vérifier si un point est à l'intérieur du cercle. + * @param p point que l'on souhaite tester + * @return true si p ∈ 𝒞 + */ + //@ requires p != null; + public boolean contient(Point p) { + assert p != null; + return p.distance(this.centre) <= this.rayon; + } + + /** + * Renvoie le périmètre du cercle. + * @return perimètre du cercle + */ + public double perimetre() { + return 2 * PI * this.rayon; + } + + /** + * Renvoie l'aire du cercle. + * @return aire du cercle + */ + public double aire() { + return PI * this.rayon * this.rayon; + } + +// Méthodes de classe + + /** + * Renvoie un Cercle créé à partir du centre et d'un point du cercle. + * @param centre centre du Cercle + * @param circ Point situé sur le cercle + * @return objet Cercle + */ + //@ requires centre != null; + //@ requires circ != null; + public static Cercle creerCercle(Point centre, Point circ) { + assert centre != null; + assert circ != null; + return new Cercle(centre, centre.distance(circ)); + } + +} diff --git a/CercleTest.java b/CercleTest.java new file mode 100644 index 0000000..2fed6b0 --- /dev/null +++ b/CercleTest.java @@ -0,0 +1,105 @@ +import org.junit.*; +import java.awt.Color; +import static org.junit.Assert.*; + +/** + * Programme de test de la classe Cercle. + */ +public class CercleTest { + + public static final double EPSILON = 1e-6; + // précision pour la comparaison entre réels. + + /** Vérifier si deux points ont mêmes coordonnées. + * @param p1 le premier point + * @param p2 le deuxième point + */ + static void memesCoordonnees(Point p1, Point p2) { + assertEquals(p1.getX(), p2.getX(), EPSILON); + assertEquals(p1.getY(), p2.getY(), EPSILON); + } + + private Point p_0 = new Point(0, 0); + private Point p_pp = new Point(3, 4); + private Point p_pm = new Point(3, -4); + private Point p_mm = new Point(-3, -4); + private Point p_mp = new Point(-3, 4); + + private Cercle[] c12a = {new Cercle(p_pp, p_mm), + new Cercle(p_pm, p_mp), + new Cercle(p_mp, p_pm), + new Cercle(p_mm, p_pp)}; + + private Cercle[] c12b = {new Cercle(p_pp, p_pm), + new Cercle(p_pm, p_mm), + new Cercle(p_mm, p_mp), + new Cercle(p_mp, p_pp)}; + + private Cercle[] c13 = {new Cercle(p_pp, p_mm, Color.RED), + new Cercle(p_pm, p_mp, Color.GREEN), + new Cercle(p_mp, p_pm, Color.WHITE), + new Cercle(p_mm, p_pp, Color.BLACK)}; + + private Cercle[] c14 = {Cercle.creerCercle(p_0, p_pp), + Cercle.creerCercle(p_0, p_pm), + Cercle.creerCercle(p_0, p_mp), + Cercle.creerCercle(p_0, p_mm)}; + + @Test + public void testE12a() { + for (Cercle c : c12a) { + assertNotNull(c); + assertEquals(5, c.getRayon(), EPSILON); + assertEquals(10, c.getDiametre(), EPSILON); + memesCoordonnees(p_0, c.getCentre()); + assertTrue(c.getCouleur() == Color.BLUE); + } + } + + @Test + public void testE12b() { + for (Cercle c : c12b) { + assertNotNull(c); + assertTrue(c.getCouleur() == Color.BLUE); + } + assertEquals(4, c12b[0].getRayon(), EPSILON); + assertEquals(8, c12b[0].getDiametre(), EPSILON); + assertEquals(3, c12b[1].getRayon(), EPSILON); + assertEquals(6, c12b[1].getDiametre(), EPSILON); + assertEquals(4, c12b[2].getRayon(), EPSILON); + assertEquals(8, c12b[2].getDiametre(), EPSILON); + assertEquals(3, c12b[3].getRayon(), EPSILON); + assertEquals(6, c12b[3].getDiametre(), EPSILON); + + memesCoordonnees(new Point(3, 0), c12b[0].getCentre()); + memesCoordonnees(new Point(0, -4), c12b[1].getCentre()); + memesCoordonnees(new Point(-3, 0), c12b[2].getCentre()); + memesCoordonnees(new Point(0, 4), c12b[3].getCentre()); + } + + @Test + public void testE13() { + for (Cercle c : c13) { + assertNotNull(c); + assertEquals(5, c.getRayon(), EPSILON); + assertEquals(10, c.getDiametre(), EPSILON); + memesCoordonnees(p_0, c.getCentre()); + } + assertTrue(c13[0].getCouleur() == Color.RED); + assertTrue(c13[1].getCouleur() == Color.GREEN); + assertTrue(c13[2].getCouleur() == Color.WHITE); + assertTrue(c13[3].getCouleur() == Color.BLACK); + } + + @Test + public void testE14() { + for (Cercle c : c14) { + assertNotNull(c); + assertEquals(5, c.getRayon(), EPSILON); + assertEquals(10, c.getDiametre(), EPSILON); + memesCoordonnees(p_0, c.getCentre()); + assertTrue(c.getCouleur() == Color.BLUE); + } + } + +} diff --git a/ComplementsCercleTest.java b/ComplementsCercleTest.java new file mode 100644 index 0000000..4a1f855 --- /dev/null +++ b/ComplementsCercleTest.java @@ -0,0 +1,95 @@ +import org.junit.*; +import java.awt.Color; +import static org.junit.Assert.*; + +/** + * Programme de test de la classe Cercle. + */ +public class ComplementsCercleTest { + + public static final double EPSILON = 1e-6; + // précision pour la comparaison entre réels. + + private Point p0 = new Point(0, 0); + private Point p1 = new Point(3, 4); + private Point p2 = new Point(-3, -4); + + private Cercle c1; + private Cercle c2; + private Cercle c3; + private Cercle c4; + + @Before + public void setUp() { + c1 = new Cercle(p0, 1); + c2 = new Cercle(p1, p2); + c3 = new Cercle(p1, p2, Color.MAGENTA); + c4 = Cercle.creerCercle(p0, p1); + } + + @Test + public void testSetRayon() { + c1.setRayon(10); + assertEquals(10, c1.getRayon(), EPSILON); + assertEquals(20, c1.getDiametre(), EPSILON); + c2.setRayon(10); + assertEquals(10, c2.getRayon(), EPSILON); + assertEquals(20, c2.getDiametre(), EPSILON); + } + + @Test + public void testSetDiametre() { + c1.setDiametre(20); + assertEquals(20, c1.getDiametre(), EPSILON); + assertEquals(10, c1.getRayon(), EPSILON); + c3.setDiametre(20); + assertEquals(20, c3.getDiametre(), EPSILON); + assertEquals(10, c3.getRayon(), EPSILON); + } + + @Test + public void testSetCouleur() { + c1.setCouleur(Color.RED); + c3.setCouleur(Color.ORANGE); + assertEquals(Color.RED, c1.getCouleur()); + assertEquals(Color.ORANGE, c3.getCouleur()); + } + + @Test + public void testSetCentre() { + c1.setCentre(new Point(10, 10)); + assertEquals(10, c1.getCentre().getX(), EPSILON); + assertEquals(10, c1.getCentre().getY(), EPSILON); + } + + @Test + public void testTranslater() { + c1.translater(100, 100); + assertEquals(100, c1.getCentre().getX(), EPSILON); + assertEquals(100, c1.getCentre().getY(), EPSILON); + + c1.translater(-50, -150); + assertEquals( 50, c1.getCentre().getX(), EPSILON); + assertEquals(-50, c1.getCentre().getY(), EPSILON); + } + + @Test + public void testContient() { + assertTrue(c4.contient(p0)); + assertTrue(c4.contient(p1)); + assertTrue(c4.contient(p2)); + } + + @Test + public void testPerimetre() { + assertEquals(2*Math.PI, c1.perimetre(), EPSILON); + assertEquals(10*Math.PI, c2.perimetre(), EPSILON); + } + + @Test + public void testAire() { + assertEquals(Math.PI, c1.aire(), EPSILON); + assertEquals(25*Math.PI, c2.aire(), EPSILON); + } + +} diff --git a/FormeCercleTest.java b/FormeCercleTest.java new file mode 100644 index 0000000..0bf8cd2 --- /dev/null +++ b/FormeCercleTest.java @@ -0,0 +1,191 @@ +import java.awt.Color; +import java.lang.reflect.*; +import org.junit.*; +import static org.junit.Assert.*; +import java.util.*; + +/** + * L'objectif de cette classe est de vérifier que la classe Cercle a été + * correctement programmée. + * + * @author Xavier Crégut + * @version $Revision$ + */ + +public class FormeCercleTest { + + // précision pour les comparaisons réelle + public final static double EPSILON = 0.001; + + final static private Class cercle = Cercle.class; + + private static Method getMethode(Class c, String name, Class... types) + throws NoSuchMethodException + { + Method resultat = c.getMethod(name, types); + assertNotNull("méthode " + name + "(" + types + ") non déclarée !", resultat); + return resultat; + } + + private void verifierTypeRetour(Method m, Class expected) + { + // TODO : définir une méthode signatureToString() pour construire la + // signature de la méthode plutôt que d'utiliser getName + assertEquals("Erreur sur le type de retour de " + m.getName() + ".", + expected, m.getReturnType()); + } + + private static Field getAttribut(Class c, String name) + throws NoSuchFieldException + { + try { + return c.getDeclaredField(name); + } catch (NoSuchFieldException e) { + fail("attribut non déclaré : " + name); + return null; // jamais atteint + } + } + + private static List getAttributsInstance(Class c) { + ArrayList result = new ArrayList(5); + for (Field f : c.getDeclaredFields()) { + if (! Modifier.isStatic(f.getModifiers())) { + result.add(f); + } + } + return result; + } + + private static void verifierConstanteClasse(Class c, String name) + throws NoSuchFieldException + { + Field attr = getAttribut(c, name); + assertTrue(name + " : devrait être une constante !", + Modifier.isFinal(attr.getModifiers())); + assertTrue(name + " : doit être une constante de *classe* !", + Modifier.isStatic(attr.getModifiers())); + assertTrue(name + " : Pourquoi pas public ?", + Modifier.isPublic(attr.getModifiers())); + } + + @Test public void testerE5() throws NoSuchMethodException { + // TODO : Il faudrait que getMethode signale le problème ! + // On peut en effet construire le message à partir des paramètres reçus + Method contient = getMethode(cercle, "contient", Point.class); + verifierTypeRetour(contient, boolean.class); + } + + @Test public void testerC12() throws Exception { + verifierConstanteClasse(cercle, "PI"); + } + + @Test public void testerC12ValeurPI() throws Exception { + Field pi = getAttribut(cercle, "PI"); + pi.setAccessible(true); + assertTrue("Le type de PI doit être double", + double.class.equals(pi.getType())); + if (Modifier.isStatic(pi.getModifiers())) { + assertEquals("Pas d'utilisation de Math.PI pour initialiser PI ?", + Math.PI, pi.getDouble(null), 0.0); + } else { + Cercle c = new Cercle(new Point(1, 2), 10); + assertEquals("Pas d'utilisation de Math.PI pour initialiser PI ?", + Math.PI, pi.getDouble(c), 0.0); + + } + } + + @Test public void testerNombreAttributs() throws Exception { + int attendu = 3; // nombre d'attributs d'instance attendus + int nbReel = getAttributsInstance(cercle).size(); + assertFalse("Trop d'attributs d'instance : " + nbReel + + " au lieu de " + attendu + " !", nbReel > attendu); + assertFalse("Pas assez d'attributs d'instance : " + nbReel + + " au lieu de " + attendu + " !", nbReel < attendu); + } + + @Test public void testAttributsPrives() throws Exception { + for (Field f : cercle.getDeclaredFields()) { + if (! Modifier.isFinal(f.getModifiers())) { + if (! Modifier.isFinal(f.getModifiers())) { + assertFalse("L'attribut " + f.getName() + " ne devrait pas être public !", + Modifier.isPublic(f.getModifiers())); + assertFalse("Attribut " + f + " : Pourquoi protected ?", + Modifier.isPublic(f.getModifiers())); + assertTrue("Attribut " + f + " : Droit d'accès oublié ?", + Modifier.isPrivate(f.getModifiers())); + } + } + } + } + + @Test public void testAttributsNomsAssezLongs() throws Exception { + for (Field f : cercle.getDeclaredFields()) { + String nom = f.getName(); + assertTrue("C3: Nom trop court pour l'attribut " + nom, nom.length() > 1); + } + } + + private final static Set nomsPeuSiginificatifs; + static { + nomsPeuSiginificatifs = new TreeSet(); + Collections.addAll(nomsPeuSiginificatifs, "p1", "p2", "a", "b", + "point1", "point2", "c", "r", "c_aux"); + } + + @Test public void testAttributsNomsPeuSignificatifs() throws Exception { + for (Field f : cercle.getDeclaredFields()) { + String nom = f.getName(); + assertFalse("C3: Nom pas assez significatif pour l'attribut " + nom, + nomsPeuSiginificatifs.contains(nom.toLowerCase())); + } + } + + + @Test public void testerE6() { + assertTrue("Cercle devrait être un Mesurable2D !", + Mesurable2D.class.isAssignableFrom(cercle)); + } + + @Test public void testerE6bis() { + boolean trouve = false; + for (Class i : cercle.getInterfaces()) { + trouve = trouve || i == Mesurable2D.class; + } + assertTrue("Cercle doit directement réaliser Mesurable2D !", trouve); + } + + @Test public void testerNbConstructeurs() { + int nbAttendu = 3; + int nbConstructeurs = cercle.getConstructors().length; + assertFalse("Trop de constructeurs : " + nbConstructeurs, + nbConstructeurs > nbAttendu); + assertFalse("Pas assez de constructeurs : " + nbConstructeurs, + nbConstructeurs < nbAttendu); + } + + @Test public void testerE14() throws Exception { + Method creerCercle = null; + try { + creerCercle = getMethode(cercle, "creerCercle", Point.class, + Point.class); + } catch (NoSuchMethodException e) { + fail("La méthode creerCercle(Point, Point) n'existe pas !"); + } + int modifieurs = creerCercle.getModifiers(); + assertTrue("creerCercle devrait être publique !", + Modifier.isPublic(modifieurs)); + assertTrue("creerCercle doit être une méthode de classe !", + Modifier.isStatic(modifieurs)); + } + + @Test public void testerContructeurDefaut() { + try { + Constructor defaut = cercle.getConstructor(); + fail("Pourquoi définir un constructeur par défaut sur Cercle ?"); + } catch (NoSuchMethodException e) { + // OK + } + } + +} diff --git a/LISEZ-MOI.txt b/LISEZ-MOI.txt new file mode 100644 index 0000000..7cc5fad --- /dev/null +++ b/LISEZ-MOI.txt @@ -0,0 +1,49 @@ +Nom : FAINSIN +Prénom : Laurent +Groupe TP : I + + +Consigne : Ci-dessous, répondre à la place des « ... ». + + +=====[ Temps ]================================================================== + +Temps consacré au projet pour rendre la V1 : 05 heures 00 minutes +Temps consacré au projet pour rendre la V2 : 00 heures 15 minutes +Pour la V2 on ne tiendra pas compte du temps passé sur la V1. +Bien sûr, Les temps renseignés ici ne sont pas pris en compte dans la notation. + + +=====[ Questions ]============================================================== + +Indiquer la relation UML entre Cercle et le Point centre du cercle. +------------------------------------------------------------------- + +Il y a une relation de composition entre Cercle et Point. + + +Comment est réalisée l'exigence E18 ? +------------------------------------- + +On rappelle E18 : "On ne doit pas pouvoir changer les caractéristiques d’un +cercle sans passer par les opérations de modification que la classe propose +(translater, setRayon, setDiametre, setCouleur...)." + +Dans un premier temps on restreint les modifications extérieures des attributs via +le mot-clé "private", placé devant leur déclaration. Cela force l'utilisateur de la +classe à utiliser les fonctions SETs (qui vérifient de plus la validité des nouvelles +valeurs). + +De même, il faut faire attention à ce que l'on renvoie avec les fonctions GETS. +En effet si l'on souhaite renvoyer le point correspondant au centre du cercle, +il faut renvoyer une copie de celui-ci au lieu de renvoyer directement this.centre. +On fait cela puisque renvoyer un objet Point revient à renvoyer un pointeur vers +une structure de données, qui est modifiable. + + +=====[ Explications ]=========================================================== + +(Facultatif) Donner ici les explications supplémentaires utiles à la +compréhension du travail rendu. + +... diff --git a/Mesurable2D.java b/Mesurable2D.java new file mode 100644 index 0000000..8ea66d8 --- /dev/null +++ b/Mesurable2D.java @@ -0,0 +1,17 @@ +/** Définir les propriétés d'un élément fermé du plan. + * @author Xavier Crégut + * @version 1.3 + */ +public interface Mesurable2D { + + /** Obtenir le perimètre de l'élément. + * @return le perimètre + */ + double perimetre(); + + /** Obtenir l'aire de l'élément. + * @return l'aire + */ + double aire(); + +} diff --git a/Point.java b/Point.java new file mode 100644 index 0000000..969ae41 --- /dev/null +++ b/Point.java @@ -0,0 +1,95 @@ +import java.awt.Color; + +/** Point modélise un point géométrique dans un plan équipé d'un + * repère cartésien. Un point peut être affiché et translaté. + * Sa distance par rapport à un autre point peut être obtenue. + * + * @author Xavier Crégut + */ +public class Point { + private double x; // abscisse + private double y; // ordonnée + private Color couleur; // couleur du point + + /** Construire un point à partir de son abscisse et de son ordonnée. + * @param vx abscisse + * @param vy ordonnée + */ + public Point(double vx, double vy) { + this.x = vx; + this.y = vy; + this.couleur = Color.green; + } + + /** Obtenir l'abscisse du point. + * @return abscisse du point + */ + public double getX() { + return this.x; + } + + /** Obtenir l'ordonnée du point. + * @return ordonnée du point + */ + public double getY() { + return this.y; + } + + /** Changer l'abscisse du point. + * @param vx nouvelle abscisse + */ + public void setX(double vx) { + this.x = vx; + } + + /** Changer l'ordonnée du point. + * @param vy nouvelle ordonnée + */ + public void setY(double vy) { + this.y = vy; + } + + public String toString() { + return "(" + this.x + ", " + this.y + ")"; + } + + /** Afficher le point. */ + public void afficher() { + System.out.print(this); + } + + /** Distance par rapport à un autre point. + * @param autre l'autre point + * @return distance entre this et autre + */ + public double distance(Point autre) { + return Math.sqrt(Math.pow(autre.x - this.x, 2) + + Math.pow(autre.y - this.y, 2)); + } + + /** Translater le point. + * @param dx déplacement suivant l'axe des X + * @param dy déplacement suivant l'axe des Y + */ + public void translater(double dx, double dy) { + this.x += dx; + this.y += dy; + } + +// Gestion de la couleur + + /** Obtenir la couleur du point. + * @return la couleur du point + */ + public Color getCouleur() { + return this.couleur; + } + + /** Changer la couleur du point. + * @param nouvelleCouleur nouvelle couleur + */ + public void setCouleur(Color nouvelleCouleur) { + this.couleur = nouvelleCouleur; + } + +} diff --git a/RobustesseCercleTest.java b/RobustesseCercleTest.java new file mode 100644 index 0000000..630d447 --- /dev/null +++ b/RobustesseCercleTest.java @@ -0,0 +1,125 @@ +import java.awt.Color; +import org.junit.*; +import static org.junit.Assert.*; + +/** Classe de test pour la robustesse de la classe Cercle. + * @author Xavier Crégut + */ +public class RobustesseCercleTest { + + protected Cercle c1; + + @Before public void setUp() { + c1 = new Cercle(new Point(1, 2), 10); + } + + + @Test + public void testerOptionEnableAssertion() { + try { + assert false; + } catch (AssertionError e) { + // C'est normal ! + return; + } catch (Throwable e) { + // C'est pas normal ! + } + fail("Il faut exécuter avec l'option -ea de java !"); + } + + @Test(expected=AssertionError.class) + public void testerE5a() { + this.c1.contient(null); + } + + @Test(expected=AssertionError.class) + public void testerE10a() { + this.c1.setCouleur(null); + } + + @Test(expected=AssertionError.class) + public void testerE11a() { + this.c1 = new Cercle(null, 10); + } + + @Test(expected=AssertionError.class) + public void testerE11b() { + this.c1 = new Cercle(new Point(1, 2), -10); + } + + @Test(expected=AssertionError.class) + public void testerE11c() { + this.c1 = new Cercle(new Point(1, 2), 0); + } + + @Test(expected=AssertionError.class) + public void testerE12a() { + this.c1 = new Cercle(new Point(1, 2), null); + } + + @Test(expected=AssertionError.class) + public void testerE12b() { + this.c1 = new Cercle(null, new Point(1, 2)); + } + + @Test(expected=AssertionError.class) + public void testerE12c() { + this.c1 = new Cercle(new Point(1, 2), new Point(1, 2)); + } + + @Test(expected=AssertionError.class) + public void testerE13a() { + this.c1 = new Cercle(new Point(1, 2), null, Color.red); + } + + @Test(expected=AssertionError.class) + public void testerE13b() { + this.c1 = new Cercle(null, new Point(1, 2), Color.red); + } + + @Test(expected=AssertionError.class) + public void testerE13c() { + this.c1 = new Cercle(new Point(1, 2), new Point(1, 2), Color.red); + } + + @Test(expected=AssertionError.class) + public void testerE13d() { + this.c1 = new Cercle(new Point(1, 2), new Point(1, 2), null); + } + + @Test(expected=AssertionError.class) + public void testerE14a() { + this.c1 = Cercle.creerCercle(new Point(1, 2), null); + } + + @Test(expected=AssertionError.class) + public void testerE14b() { + this.c1 = Cercle.creerCercle(null, new Point(1, 2)); + } + + @Test(expected=AssertionError.class) + public void testerE14c() { + this.c1 = Cercle.creerCercle(new Point(1, 2), new Point(1, 2)); + } + + @Test(expected=AssertionError.class) + public void testerE16a() { + this.c1.setRayon(-10); + } + + @Test(expected=AssertionError.class) + public void testerE16b() { + this.c1.setRayon(0); + } + + @Test(expected=AssertionError.class) + public void testerE17a() { + this.c1.setDiametre(-10); + } + + @Test(expected=AssertionError.class) + public void testerE17b() { + this.c1.setDiametre(0); + } + +} diff --git a/SujetCercleTest.java b/SujetCercleTest.java new file mode 100644 index 0000000..72f095d --- /dev/null +++ b/SujetCercleTest.java @@ -0,0 +1,135 @@ +import java.awt.Color; +import org.junit.*; +import static org.junit.Assert.*; + +/** + * Classe de test (incomplète) de la classe Cercle. + * @author Xavier Crégut + * @version $Revision$ + */ +public class SujetCercleTest { + + // précision pour les comparaisons réelle + public final static double EPSILON = 0.001; + + // Les points du sujet + private Point A, B, C, D, E; + + // Les cercles du sujet + private Cercle C1, C2; + + @Before public void setUp() { + // Construire les points + A = new Point(1, 2); + B = new Point(2, 1); + C = new Point(4, 1); + D = new Point(8, 1); + E = new Point(8, 4); + + // Construire les cercles + C1 = new Cercle(A, 2.5); + C2 = new Cercle(new Point(6, 1), 2); + C2.setCouleur(Color.yellow); + } + + /** Vérifier si deux points ont mêmes coordonnées. + * @param p1 le premier point + * @param p2 le deuxième point + */ + static void memesCoordonnees(String message, Point p1, Point p2) { + assertEquals(message + " (x)", p1.getX(), p2.getX(), EPSILON); + assertEquals(message + " (y)", p1.getY(), p2.getY(), EPSILON); + } + + @Test public void testerE11C1() { + memesCoordonnees("E11 : Centre de C1 incorrect", A, C1.getCentre()); + assertEquals("E11 : Rayon de C1 incorrect", + 2.5, C1.getRayon(), EPSILON); + assertEquals(Color.blue, C1.getCouleur()); + } + + @Test public void testerE1() { + C1.translater(10, 20); + memesCoordonnees("E1 sur C1", new Point(11, 22), C1.getCentre()); + C2.translater(3, -1); + memesCoordonnees("E1 sur C2", new Point(9, 0), C2.getCentre()); + } + + @Test public void testerE1negatifs() { + C2.translater(-10, -7); + memesCoordonnees("E1 sur C2", new Point(-4, -6), C2.getCentre()); + } + + @Test public void testerE2() { + memesCoordonnees("E2 sur C1", A, C1.getCentre()); + memesCoordonnees("E2 sur C2", new Point(6, 1), C2.getCentre()); + } + + @Test public void testerE3() { + assertEquals("E3 sur C1", 2.5, C1.getRayon(), EPSILON); + assertEquals("E3 sur C2", 2.0, C2.getRayon(), EPSILON); + } + + @Test public void testerE4() { + assertEquals("E4 sur C1", 5.0, C1.getDiametre(), EPSILON); + assertEquals("E4 sur C2", 4.0, C2.getDiametre(), EPSILON); + } + + @Test public void testerE5() { + assertTrue("E5", C1.contient(A)); + assertTrue("E5", C1.contient(B)); + assertFalse("E5", C1.contient(C)); + assertFalse("E5", C1.contient(D)); + assertFalse("E5", C1.contient(E)); + assertFalse("E5", C1.contient(C)); + assertFalse("E5", C1.contient(new Point(3, 4))); + assertTrue("E5", new Cercle(D, 3).contient(E)); + } + + @Test public void testerE6() { + assertEquals("E6", 5*Math.PI, C1.perimetre(), EPSILON); + assertEquals("E6", 4*Math.PI, C2.perimetre(), EPSILON); + assertEquals("E6", 6.25*Math.PI, C1.aire(), EPSILON); + assertEquals("E6", 4*Math.PI, C2.aire(), EPSILON); + } + + @Test public void testerE9() { + assertEquals("E9", Color.blue, C1.getCouleur()); + assertEquals("E9", Color.yellow, C2.getCouleur()); + } + + @Test public void testerE10() { + C1.setCouleur(Color.red); + assertEquals("E10", Color.red, C1.getCouleur()); + } + + @Test public void testerToString() { + assertEquals("E15: toString() redéfinie ? Correctement ?", + "C2.5@(1.0, 2.0)", C1.toString()); + } + + @Test public void testerE16() { + C1.setRayon(10); + assertEquals(10, C1.getRayon(), EPSILON); + C1.setRayon(20); + assertEquals(20, C1.getRayon(), EPSILON); + } + + @Test public void testerE17() { + C1.setDiametre(10); + assertEquals(5, C1.getRayon(), EPSILON); + C1.setDiametre(20); + assertEquals(10, C1.getRayon(), EPSILON); + } + + @Test public void testerE18() { + C1.getCentre().translater(10, 20); + memesCoordonnees("E18 : erreur si translation du centre", + new Point(1, 2), C1.getCentre()); + A.translater(10, 20); + memesCoordonnees("E18 : erreur si translation de A", + new Point(1, 2), C1.getCentre()); + } + + +} diff --git a/to-1sn-2020-pr-01-sujet.pdf b/to-1sn-2020-pr-01-sujet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..efb99342e71d0a9d86db496da5d77324501a430a GIT binary patch literal 80819 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≪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

+7LrqOBLh)a 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 literal 0 HcmV?d00001