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 ef77a222d4b27685beea318b823c4cc46f9af608..d689d4ee47edfabadb40be6dc40a7f2fda22ae00 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 097bcb520b22cc63d0ff229881c8045f1c24203f..f01f5670d56d2b3021aca9059940f9316971cdec 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 5862fdc829e003110efa440165d2a1305cc58ef3..1d959a80262e3c58f94508364e63bb49aef893bc 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 0000000000000000000000000000000000000000..9beb578477f709ddcb836f6c50448d548a9ab644 --- /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 189817f29830dde20230cae307c4bfb54c19e31f..4354b13f7d3b73101cbd012dbc544feea7a664c0 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 673b6cd08f31ea9da0ac61e3367b142aa578c2c0..ef1be417427912c60924f5f0573839e1036f77a5 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 1c47ae8fa5ce38c039fc5441519b2de03233c4e8..746e056688088f32a17f3381aa12d910ec5670df 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 0000000000000000000000000000000000000000..9af9f75c9e67c62bf5406a8bdce81b58dc19cca0 --- /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 018f7e89d4bf13785d765f5a05a3fea9a8ed381a..ddb0161dc04c22a67d620dd13d869e30ab6d4367 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 f802e36ec60b6a285f8f81c6bb6c74b9577ef665..c23d4d514bf6a823907ff29d57aec16c592ad958 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 8b229fe34e118b5319a97973496854cd45c35428..48077973ebe3cac3229eae6b42ddffce175dd564 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 0000000000000000000000000000000000000000..50e74f0fc75d0ef69c94e545f297b8675ad88e64 --- /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 0000000000000000000000000000000000000000..4b4e83aaa65b4907c1ac27cc5351a58d8fd44510 --- /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 0000000000000000000000000000000000000000..d6c6f27aa2297609db95e1f5d45fa9540b59ef67 --- /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