From b5f74874a231c6fef98c516c88a3893eda044f20 Mon Sep 17 00:00:00 2001 From: rosier8u <basile.rosier6@etu.univ-lorraine> Date: Tue, 14 Nov 2023 13:25:19 +0100 Subject: [PATCH] V1 --- design_pattern/src/{ => modele}/Arme.java | 6 ++ .../src/{ => modele}/BaguetteMagique.java | 2 + .../src/{ => modele}/BatonDeSorcier.java | 2 + design_pattern/src/modele/DegatVisiteur.java | 23 +++++++ design_pattern/src/{ => modele}/Epee.java | 2 + .../src/{ => modele}/Guerisseur.java | 6 ++ design_pattern/src/{ => modele}/Guerrier.java | 6 ++ design_pattern/src/modele/NiveauVisiteur.java | 23 +++++++ .../src/{ => modele}/Personnage.java | 8 +++ design_pattern/src/{ => modele}/Roi.java | 6 ++ design_pattern/src/{ => modele}/Sorcier.java | 6 ++ design_pattern/src/modele/VisiteurPers.java | 9 +++ .../src/tests/DegatVisiteurTest.java | 62 +++++++++++++++++++ .../src/tests/NiveauVisiteurTest.java | 61 ++++++++++++++++++ 14 files changed, 222 insertions(+) rename design_pattern/src/{ => modele}/Arme.java (85%) rename design_pattern/src/{ => modele}/BaguetteMagique.java (95%) rename design_pattern/src/{ => modele}/BatonDeSorcier.java (95%) create mode 100644 design_pattern/src/modele/DegatVisiteur.java rename design_pattern/src/{ => modele}/Epee.java (95%) rename design_pattern/src/{ => modele}/Guerisseur.java (76%) rename design_pattern/src/{ => modele}/Guerrier.java (76%) create mode 100644 design_pattern/src/modele/NiveauVisiteur.java rename design_pattern/src/{ => modele}/Personnage.java (84%) rename design_pattern/src/{ => modele}/Roi.java (84%) rename design_pattern/src/{ => modele}/Sorcier.java (79%) create mode 100644 design_pattern/src/modele/VisiteurPers.java create mode 100644 design_pattern/src/tests/DegatVisiteurTest.java create mode 100644 design_pattern/src/tests/NiveauVisiteurTest.java diff --git a/design_pattern/src/Arme.java b/design_pattern/src/modele/Arme.java similarity index 85% rename from design_pattern/src/Arme.java rename to design_pattern/src/modele/Arme.java index ef77a22..d689d4e 100644 --- a/design_pattern/src/Arme.java +++ b/design_pattern/src/modele/Arme.java @@ -1,3 +1,5 @@ +package modele; + public abstract class Arme { protected int degat; protected String nom; @@ -9,6 +11,10 @@ public abstract class Arme { this.poids = poids; } + public void augmenterDegat(int augmentation){ + this.degat += augmentation; + } + public void setNom(String nom) { this.nom = nom; } diff --git a/design_pattern/src/BaguetteMagique.java b/design_pattern/src/modele/BaguetteMagique.java similarity index 95% rename from design_pattern/src/BaguetteMagique.java rename to design_pattern/src/modele/BaguetteMagique.java index 097bcb5..f01f567 100644 --- a/design_pattern/src/BaguetteMagique.java +++ b/design_pattern/src/modele/BaguetteMagique.java @@ -1,3 +1,5 @@ +package modele; + public class BaguetteMagique extends Arme{ private int soin; diff --git a/design_pattern/src/BatonDeSorcier.java b/design_pattern/src/modele/BatonDeSorcier.java similarity index 95% rename from design_pattern/src/BatonDeSorcier.java rename to design_pattern/src/modele/BatonDeSorcier.java index 5862fdc..1d959a8 100644 --- a/design_pattern/src/BatonDeSorcier.java +++ b/design_pattern/src/modele/BatonDeSorcier.java @@ -1,3 +1,5 @@ +package modele; + public class BatonDeSorcier extends Arme{ private String pouvoir; diff --git a/design_pattern/src/modele/DegatVisiteur.java b/design_pattern/src/modele/DegatVisiteur.java new file mode 100644 index 0000000..9beb578 --- /dev/null +++ b/design_pattern/src/modele/DegatVisiteur.java @@ -0,0 +1,23 @@ +package modele; + +public class DegatVisiteur implements VisiteurPers{ + @Override + public void visiterGuerrier(Guerrier guerrier) { + guerrier.getArme().augmenterDegat(10); + } + + @Override + public void visiterRoi(Roi roi) { + roi.getArme().augmenterDegat(10); + } + + @Override + public void visiterSorcier(Sorcier sorcier) { + sorcier.getArme().augmenterDegat(10); + } + + @Override + public void visiterGuerisseur(Guerisseur guerisseur) { + guerisseur.getArme().augmenterDegat(10); + } +} diff --git a/design_pattern/src/Epee.java b/design_pattern/src/modele/Epee.java similarity index 95% rename from design_pattern/src/Epee.java rename to design_pattern/src/modele/Epee.java index 189817f..4354b13 100644 --- a/design_pattern/src/Epee.java +++ b/design_pattern/src/modele/Epee.java @@ -1,3 +1,5 @@ +package modele; + public class Epee extends Arme{ private int longueur; diff --git a/design_pattern/src/Guerisseur.java b/design_pattern/src/modele/Guerisseur.java similarity index 76% rename from design_pattern/src/Guerisseur.java rename to design_pattern/src/modele/Guerisseur.java index 673b6cd..ef1be41 100644 --- a/design_pattern/src/Guerisseur.java +++ b/design_pattern/src/modele/Guerisseur.java @@ -1,3 +1,5 @@ +package modele; + public class Guerisseur extends Personnage{ private int sagesse; @@ -13,4 +15,8 @@ public class Guerisseur extends Personnage{ public int getSagesse() { return sagesse; } + + public void accepter(VisiteurPers visiteur) { + visiteur.visiterGuerisseur(this); + } } diff --git a/design_pattern/src/Guerrier.java b/design_pattern/src/modele/Guerrier.java similarity index 76% rename from design_pattern/src/Guerrier.java rename to design_pattern/src/modele/Guerrier.java index 1c47ae8..746e056 100644 --- a/design_pattern/src/Guerrier.java +++ b/design_pattern/src/modele/Guerrier.java @@ -1,3 +1,5 @@ +package modele; + public class Guerrier extends Personnage{ private int force; @@ -13,4 +15,8 @@ public class Guerrier extends Personnage{ public int getForce() { return force; } + + public void accepter(VisiteurPers visiteur) { + visiteur.visiterGuerrier(this); + } } diff --git a/design_pattern/src/modele/NiveauVisiteur.java b/design_pattern/src/modele/NiveauVisiteur.java new file mode 100644 index 0000000..9af9f75 --- /dev/null +++ b/design_pattern/src/modele/NiveauVisiteur.java @@ -0,0 +1,23 @@ +package modele; + +public class NiveauVisiteur implements VisiteurPers{ + @Override + public void visiterGuerrier(Guerrier guerrier) { + guerrier.augmenterNiveau(1); + } + + @Override + public void visiterRoi(Roi roi) { + roi.augmenterNiveau(1); + } + + @Override + public void visiterSorcier(Sorcier sorcier) { + sorcier.augmenterNiveau(1); + } + + @Override + public void visiterGuerisseur(Guerisseur guerisseur) { + guerisseur.augmenterNiveau(1); + } +} diff --git a/design_pattern/src/Personnage.java b/design_pattern/src/modele/Personnage.java similarity index 84% rename from design_pattern/src/Personnage.java rename to design_pattern/src/modele/Personnage.java index 018f7e8..ddb0161 100644 --- a/design_pattern/src/Personnage.java +++ b/design_pattern/src/modele/Personnage.java @@ -1,3 +1,5 @@ +package modele; + public abstract class Personnage { protected int pointsDeVie; protected int niveau; @@ -11,6 +13,10 @@ public abstract class Personnage { this.arme = arme; } + public void augmenterNiveau(int augmentation){ + this.niveau += augmentation; + } + public void setNom(String nom) { this.nom = nom; } @@ -42,4 +48,6 @@ public abstract class Personnage { public Arme getArme() { return arme; } + public abstract void accepter(VisiteurPers visiteur); + } diff --git a/design_pattern/src/Roi.java b/design_pattern/src/modele/Roi.java similarity index 84% rename from design_pattern/src/Roi.java rename to design_pattern/src/modele/Roi.java index f802e36..c23d4d5 100644 --- a/design_pattern/src/Roi.java +++ b/design_pattern/src/modele/Roi.java @@ -1,3 +1,5 @@ +package modele; + public class Roi extends Personnage{ private int force; private String royaume; @@ -23,4 +25,8 @@ public class Roi extends Personnage{ public String getRoyaume() { return royaume; } + + public void accepter(VisiteurPers visiteur) { + visiteur.visiterRoi(this); + } } diff --git a/design_pattern/src/Sorcier.java b/design_pattern/src/modele/Sorcier.java similarity index 79% rename from design_pattern/src/Sorcier.java rename to design_pattern/src/modele/Sorcier.java index 8b229fe..4807797 100644 --- a/design_pattern/src/Sorcier.java +++ b/design_pattern/src/modele/Sorcier.java @@ -1,3 +1,5 @@ +package modele; + public class Sorcier extends Personnage{ private int intelligence; @@ -13,4 +15,8 @@ public class Sorcier extends Personnage{ public int getIntelligence() { return intelligence; } + + public void accepter(VisiteurPers visiteur) { + visiteur.visiterSorcier(this); + } } diff --git a/design_pattern/src/modele/VisiteurPers.java b/design_pattern/src/modele/VisiteurPers.java new file mode 100644 index 0000000..50e74f0 --- /dev/null +++ b/design_pattern/src/modele/VisiteurPers.java @@ -0,0 +1,9 @@ +package modele; + +public interface VisiteurPers { + + void visiterGuerrier(Guerrier guerrier); + void visiterRoi(Roi roi); + void visiterSorcier(Sorcier sorcier); + void visiterGuerisseur(Guerisseur guerisseur); +} diff --git a/design_pattern/src/tests/DegatVisiteurTest.java b/design_pattern/src/tests/DegatVisiteurTest.java new file mode 100644 index 0000000..4b4e83a --- /dev/null +++ b/design_pattern/src/tests/DegatVisiteurTest.java @@ -0,0 +1,62 @@ +package tests; + +import modele.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + + +import static org.junit.jupiter.api.Assertions.*; + +class DegatVisiteurTest { + private DegatVisiteur degatVisiteur; + private Epee epee; + private BaguetteMagique baguetteMagique; + private BatonDeSorcier batonDeSorcier; + private Roi roi; + private Guerrier guerrier; + private Guerisseur guerisseur; + private Sorcier sorcier; + @BeforeEach + void setUp() { + degatVisiteur = new DegatVisiteur(); + epee = new Epee(20, "epee", 2.0, 10); + baguetteMagique = new BaguetteMagique(10, "baguette", 1.0,10); + batonDeSorcier = new BatonDeSorcier(15, "baton", 1.5, "pouvoir"); + roi = new Roi(100, 1, "roi", epee, 20, "royaume"); + guerrier = new Guerrier(80, 1, "guerrier", epee, 30); + guerisseur = new Guerisseur(50, 1, "gueisseur", baguetteMagique, 40); + sorcier = new Sorcier(40, 1, "sorcier", batonDeSorcier, 20); + } + + @Test + void testVisiterGuerrier() { + int degat_avant = guerrier.getArme().getDegat(); + guerrier.accepter(degatVisiteur); + int degat_apres = guerrier.getArme().getDegat(); + assertNotEquals(degat_avant, degat_apres); + } + + @Test + void testVisiterRoi() { + int degat_avant = roi.getArme().getDegat(); + roi.accepter(degatVisiteur); + int degat_apres = roi.getArme().getDegat(); + assertNotEquals(degat_avant, degat_apres); + } + + @Test + void testVisiterSorcier() { + int degat_avant = sorcier.getArme().getDegat(); + sorcier.accepter(degatVisiteur); + int degat_apres = sorcier.getArme().getDegat(); + assertNotEquals(degat_avant, degat_apres); + } + + @Test + void testVisiterGuerisseur() { + int degat_avant = guerisseur.getArme().getDegat(); + guerisseur.accepter(degatVisiteur); + int degat_apres = guerisseur.getArme().getDegat(); + assertNotEquals(degat_avant, degat_apres); + } +} \ No newline at end of file diff --git a/design_pattern/src/tests/NiveauVisiteurTest.java b/design_pattern/src/tests/NiveauVisiteurTest.java new file mode 100644 index 0000000..d6c6f27 --- /dev/null +++ b/design_pattern/src/tests/NiveauVisiteurTest.java @@ -0,0 +1,61 @@ +package tests; + +import modele.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class NiveauVisiteurTest { + private NiveauVisiteur niveauVisiteur; + private Epee epee; + private BaguetteMagique baguetteMagique; + private BatonDeSorcier batonDeSorcier; + private Roi roi; + private Guerrier guerrier; + private Guerisseur guerisseur; + private Sorcier sorcier; + @BeforeEach + void setUp() { + niveauVisiteur = new NiveauVisiteur(); + epee = new Epee(20, "epee", 2.0, 10); + baguetteMagique = new BaguetteMagique(10, "baguette", 1.0,10); + batonDeSorcier = new BatonDeSorcier(15, "baton", 1.5, "pouvoir"); + roi = new Roi(100, 1, "roi", epee, 20, "royaume"); + guerrier = new Guerrier(80, 1, "guerrier", epee, 30); + guerisseur = new Guerisseur(50, 1, "gueisseur", baguetteMagique, 40); + sorcier = new Sorcier(40, 1, "sorcier", batonDeSorcier, 20); + } + + @Test + void visiterGuerrier() { + int niveau_avant = guerrier.getNiveau(); + guerrier.accepter(niveauVisiteur); + int niveau_apres = guerrier.getNiveau(); + assertNotEquals(niveau_avant, niveau_apres); + } + + @Test + void visiterRoi() { + int niveau_avant = roi.getNiveau(); + roi.accepter(niveauVisiteur); + int niveau_apres = roi.getNiveau(); + assertNotEquals(niveau_avant, niveau_apres); + } + + @Test + void visiterSorcier() { + int niveau_avant = sorcier.getNiveau(); + sorcier.accepter(niveauVisiteur); + int niveau_apres = sorcier.getNiveau(); + assertNotEquals(niveau_avant, niveau_apres); + } + + @Test + void visiterGuerisseur() { + int niveau_avant = guerisseur.getNiveau(); + guerisseur.accepter(niveauVisiteur); + int niveau_apres = guerisseur.getNiveau(); + assertNotEquals(niveau_avant, niveau_apres); + } +} \ No newline at end of file -- GitLab