diff --git a/src/main/java/net/itsthesky/projetbut2/Main.java b/src/main/java/net/itsthesky/projetbut2/Main.java index df87722..f684ef7 100644 --- a/src/main/java/net/itsthesky/projetbut2/Main.java +++ b/src/main/java/net/itsthesky/projetbut2/Main.java @@ -1,10 +1,4 @@ -import net.itsthesky.projetbut2.dip.DIPClient; -import net.itsthesky.projetbut2.ocp.OCPClient; void main(String[] args) { if (args.length == 0) return; - - if (args[0].equalsIgnoreCase("ocp")) OCPClient.main(); - else if (args[0].equalsIgnoreCase("dip")) DIPClient.main(); - else IO.println("Invalid argument: '" + args[0] + "'"); } \ No newline at end of file diff --git a/src/main/java/net/itsthesky/projetbut2/dip/BackEndDeveloper.java b/src/main/java/net/itsthesky/projetbut2/dip/BackEndDeveloper.java deleted file mode 100644 index f4aa5ca..0000000 --- a/src/main/java/net/itsthesky/projetbut2/dip/BackEndDeveloper.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.itsthesky.projetbut2.dip; - -public class BackEndDeveloper implements Developer { - - @Override - public void develop() { - IO.println("I write Java code !"); - } - -} diff --git a/src/main/java/net/itsthesky/projetbut2/dip/DIPClient.java b/src/main/java/net/itsthesky/projetbut2/dip/DIPClient.java deleted file mode 100644 index 1b77d60..0000000 --- a/src/main/java/net/itsthesky/projetbut2/dip/DIPClient.java +++ /dev/null @@ -1,10 +0,0 @@ -package net.itsthesky.projetbut2.dip; - -public final class DIPClient { - - public static void main() { - Project project = new Project(); - project.implement(); - } - -} diff --git a/src/main/java/net/itsthesky/projetbut2/dip/Developer.java b/src/main/java/net/itsthesky/projetbut2/dip/Developer.java deleted file mode 100644 index 794b876..0000000 --- a/src/main/java/net/itsthesky/projetbut2/dip/Developer.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.itsthesky.projetbut2.dip; - -public interface Developer { - - void develop(); - -} diff --git a/src/main/java/net/itsthesky/projetbut2/dip/FrontEndDeveloper.java b/src/main/java/net/itsthesky/projetbut2/dip/FrontEndDeveloper.java deleted file mode 100644 index e133b12..0000000 --- a/src/main/java/net/itsthesky/projetbut2/dip/FrontEndDeveloper.java +++ /dev/null @@ -1,9 +0,0 @@ -package net.itsthesky.projetbut2.dip; - -public class FrontEndDeveloper implements Developer{ - @Override - public void develop() { - IO.println("I write Javascript code !"); - } - -} diff --git a/src/main/java/net/itsthesky/projetbut2/dip/Project.java b/src/main/java/net/itsthesky/projetbut2/dip/Project.java deleted file mode 100644 index 44e881f..0000000 --- a/src/main/java/net/itsthesky/projetbut2/dip/Project.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.itsthesky.projetbut2.dip; - -import java.util.ArrayList; -import java.util.List; - -public class Project { - - private final List developers = new ArrayList<>(); - - public Project() { - developers.add(new BackEndDeveloper()); - developers.add(new FrontEndDeveloper()); - } - - public void implement() { - for (var developer : developers) { - developer.develop(); - } - } - -} diff --git a/src/main/java/net/itsthesky/projetbut2/model/route/SuivreAlizés.java b/src/main/java/net/itsthesky/projetbut2/model/route/SuivreAlizés.java new file mode 100644 index 0000000..038430f --- /dev/null +++ b/src/main/java/net/itsthesky/projetbut2/model/route/SuivreAlizés.java @@ -0,0 +1,10 @@ +package net.itsthesky.projetbut2.model.route; + +public class SuivreAlizés implements SuivreRoute { + + @Override + public void suivreRoute() { + System.out.println("Suivi de route par les alizés"); + } + +} diff --git a/src/main/java/net/itsthesky/projetbut2/model/route/SuivreOrthodromie.java b/src/main/java/net/itsthesky/projetbut2/model/route/SuivreOrthodromie.java new file mode 100644 index 0000000..0244bf6 --- /dev/null +++ b/src/main/java/net/itsthesky/projetbut2/model/route/SuivreOrthodromie.java @@ -0,0 +1,8 @@ +package net.itsthesky.projetbut2.model.route; + +public class SuivreOrthodromie implements SuivreRoute { + @Override + public void suivreRoute() { + IO.println("Suivi de route par orthodromie"); + } +} diff --git a/src/main/java/net/itsthesky/projetbut2/model/route/SuivreRoute.java b/src/main/java/net/itsthesky/projetbut2/model/route/SuivreRoute.java new file mode 100644 index 0000000..c124ee8 --- /dev/null +++ b/src/main/java/net/itsthesky/projetbut2/model/route/SuivreRoute.java @@ -0,0 +1,7 @@ +package net.itsthesky.projetbut2.model.route; + +public interface SuivreRoute { + + void suivreRoute(); + +} diff --git a/src/main/java/net/itsthesky/projetbut2/model/voilier/Monocoque.java b/src/main/java/net/itsthesky/projetbut2/model/voilier/Monocoque.java new file mode 100644 index 0000000..c8805fa --- /dev/null +++ b/src/main/java/net/itsthesky/projetbut2/model/voilier/Monocoque.java @@ -0,0 +1,13 @@ +package net.itsthesky.projetbut2.model.voilier; + +public class Monocoque extends Voilier { + + public Monocoque(String nom) { + this.nom = nom; + } + + @Override + public String toString() { + return "Monocoque{" + super.toString() + '}'; + } +} diff --git a/src/main/java/net/itsthesky/projetbut2/model/voilier/Multicoque.java b/src/main/java/net/itsthesky/projetbut2/model/voilier/Multicoque.java new file mode 100644 index 0000000..6a5b8ab --- /dev/null +++ b/src/main/java/net/itsthesky/projetbut2/model/voilier/Multicoque.java @@ -0,0 +1,13 @@ +package net.itsthesky.projetbut2.model.voilier; + +public class Multicoque extends Voilier { + + public Multicoque(String nom) { + this.nom = nom; + } + + @Override + public String toString() { + return "Multicoque{" + super.toString() + '}'; + } +} diff --git a/src/main/java/net/itsthesky/projetbut2/model/voilier/Voilier.java b/src/main/java/net/itsthesky/projetbut2/model/voilier/Voilier.java new file mode 100644 index 0000000..7c37fea --- /dev/null +++ b/src/main/java/net/itsthesky/projetbut2/model/voilier/Voilier.java @@ -0,0 +1,22 @@ +package net.itsthesky.projetbut2.model.voilier; + +import net.itsthesky.projetbut2.model.route.SuivreRoute; + +public abstract class Voilier { + + protected String nom; + protected SuivreRoute suivreRoute; + + public void appliquerSuivreRoute() { + suivreRoute.suivreRoute(); + } + + public void setSuivreRoute(SuivreRoute suivreRoute) { + this.suivreRoute = suivreRoute; + } + + @Override + public String toString() { + return nom; + } +} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/ColorCriteria.java b/src/main/java/net/itsthesky/projetbut2/ocp/ColorCriteria.java deleted file mode 100644 index 4e6ef0f..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/ColorCriteria.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -import net.itsthesky.projetbut2.ocp.base.Color; -import net.itsthesky.projetbut2.ocp.base.Product; - -public class ColorCriteria implements Criteria { - - private final Color color; - public ColorCriteria(Color color) { - this.color = color; - } - - @Override - public boolean isSatisfied(Product product) { - return product.color == color; - } -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/Criteria.java b/src/main/java/net/itsthesky/projetbut2/ocp/Criteria.java deleted file mode 100644 index 40282f3..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/Criteria.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -public interface Criteria { - - boolean isSatisfied(Product product); - -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/MultipleCriteria.java b/src/main/java/net/itsthesky/projetbut2/ocp/MultipleCriteria.java deleted file mode 100644 index 0e9fc85..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/MultipleCriteria.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -import net.itsthesky.projetbut2.ocp.base.Product; - -import java.util.stream.Stream; - -public class MultipleCriteria implements Criteria { - - private final Criteria[] criteria; - public MultipleCriteria(Criteria... criteria) { - this.criteria = criteria; - } - - @Override - public boolean isSatisfied(Product product) { - return Stream.of(criteria).allMatch(c -> c.isSatisfied(product)); - } -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/NameCriteria.java b/src/main/java/net/itsthesky/projetbut2/ocp/NameCriteria.java deleted file mode 100644 index 0525e25..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/NameCriteria.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -import net.itsthesky.projetbut2.ocp.base.Product; - -public class NameCriteria implements Criteria { - - private final String name; - public NameCriteria(String name) { - this.name = name; - } - - @Override - public boolean isSatisfied(Product product) { - return product.name.contains(name); - } -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/OCPClient.java b/src/main/java/net/itsthesky/projetbut2/ocp/OCPClient.java deleted file mode 100644 index b47b77a..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/OCPClient.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -import net.itsthesky.projetbut2.ocp.base.Color; -import net.itsthesky.projetbut2.ocp.base.Product; -import net.itsthesky.projetbut2.ocp.base.Size; - -import java.util.List; - -public final class OCPClient { - - public static void main() { - Product apple = new Product("Apple", Color.GREEN, Size.SMALL); - Product tree = new Product("Tree", Color.GREEN, Size.LARGE); - Product house = new Product("House", Color.BLUE, Size.LARGE); - - List products = List.of(apple, tree, house); - - ProductFilter filter = new ProductFilter(); - System.out.println("Green products : "); - filter.filter(products, new MultipleCriteria(new ColorCriteria(Color.GREEN), new SizeCriteria(Size.SMALL))) - .forEach(product -> System.out.println(" - " + product.name + " is green and small")); - } - -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/PriceRangeCriteria.java b/src/main/java/net/itsthesky/projetbut2/ocp/PriceRangeCriteria.java deleted file mode 100644 index fa624c1..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/PriceRangeCriteria.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -import net.itsthesky.projetbut2.ocp.base.Product; - -public class PriceRangeCriteria implements Criteria { - - private final double minPrice; - private final double maxPrice; - public PriceRangeCriteria(double minPrice, double maxPrice) { - this.minPrice = minPrice; - this.maxPrice = maxPrice; - } - - @Override - public boolean isSatisfied(Product product) { - return product.price >= minPrice && product.price <= maxPrice; - } -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/ProductFilter.java b/src/main/java/net/itsthesky/projetbut2/ocp/ProductFilter.java deleted file mode 100644 index d35a907..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/ProductFilter.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -import net.itsthesky.projetbut2.ocp.base.Product; - -import java.util.List; -import java.util.stream.Stream; - -public class ProductFilter { - - public Stream filter(List products, Criteria criteria) { - return products.stream().filter(criteria::isSatisfied); - } - -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/SizeCriteria.java b/src/main/java/net/itsthesky/projetbut2/ocp/SizeCriteria.java deleted file mode 100644 index 5081260..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/SizeCriteria.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.itsthesky.projetbut2.ocp; - -import net.itsthesky.projetbut2.ocp.base.Product; -import net.itsthesky.projetbut2.ocp.base.Size; - -public class SizeCriteria implements Criteria { - - private final Size size; - public SizeCriteria(Size size) { - this.size = size; - } - - @Override - public boolean isSatisfied(Product product) { - return product.size == size; - } -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/base/Color.java b/src/main/java/net/itsthesky/projetbut2/ocp/base/Color.java deleted file mode 100644 index c007937..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/base/Color.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.itsthesky.projetbut2.ocp.base; - -public enum Color { - RED, GREEN, BLUE -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/base/Product.java b/src/main/java/net/itsthesky/projetbut2/ocp/base/Product.java deleted file mode 100644 index b5f10f2..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/base/Product.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.itsthesky.projetbut2.ocp.base; - -public class Product { - - public String name; - public Color color; - public Size size; - public double price; - - public Product(String name, Color color, Size size, double price) { - this.name = name; - this.color = color; - this.size = size; - this.price = price; - } - - public Product(String name, Color color, Size size) { - this(name, color, size, 0); - } -} diff --git a/src/main/java/net/itsthesky/projetbut2/ocp/base/Size.java b/src/main/java/net/itsthesky/projetbut2/ocp/base/Size.java deleted file mode 100644 index 9792976..0000000 --- a/src/main/java/net/itsthesky/projetbut2/ocp/base/Size.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.itsthesky.projetbut2.ocp.base; - -public enum Size { - SMALL, MEDIUM, LARGE, HUGE -} diff --git a/src/test/java/net/itsthesky/projetbut2/model/voilier/VoilierTest.java b/src/test/java/net/itsthesky/projetbut2/model/voilier/VoilierTest.java new file mode 100644 index 0000000..bf829c3 --- /dev/null +++ b/src/test/java/net/itsthesky/projetbut2/model/voilier/VoilierTest.java @@ -0,0 +1,48 @@ +package net.itsthesky.projetbut2.model.voilier; + +import net.itsthesky.projetbut2.model.route.SuivreAlizés; +import net.itsthesky.projetbut2.model.route.SuivreOrthodromie; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class VoilierTest { + + private Voilier monocoque; + private Voilier multicoque; + + @BeforeEach + void setUp() { + monocoque = new Monocoque("TestVoilier"); + multicoque = new Multicoque("TestVoilier"); + + monocoque.setSuivreRoute(new SuivreAlizés()); + multicoque.setSuivreRoute(new SuivreOrthodromie()); + } + + @Test + void appliquerSuivreRoute() { + monocoque.appliquerSuivreRoute(); + multicoque.appliquerSuivreRoute(); + + assertTrue(true); + } + + @Test + void setSuivreRoute() { + monocoque.setSuivreRoute(new SuivreOrthodromie()); + multicoque.setSuivreRoute(new SuivreAlizés()); + + monocoque.appliquerSuivreRoute(); + multicoque.appliquerSuivreRoute(); + + assertTrue(true); + } + + @Test + public void testToString() { + assertEquals("Monocoque{TestVoilier}", monocoque.toString()); + assertEquals("Multicoque{TestVoilier}", multicoque.toString()); + } +} \ No newline at end of file