From 5219f2d0a81d677bb3781d045e80d94cf76b7664 Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 10 Oct 2022 06:32:25 +0000 Subject: [PATCH 1/4] Setting up GitHub Classroom Feedback From b3c0094321e8c92eff605f6e33cda49b8b595a59 Mon Sep 17 00:00:00 2001 From: "PXLPERS\\20003575" Date: Mon, 17 Oct 2022 08:45:21 +0200 Subject: [PATCH 2/4] part 1 implementation --- .../be/pxl/ja/citytrip/LondonAttractions.java | 4 +- .../java/be/pxl/ja/citytrip/VisitLondon.java | 4 +- src/main/java/be/pxl/ja/robbery/Demo.java | 21 ++++++++ src/main/java/be/pxl/ja/robbery/Knapsack.java | 29 +++++++++++ .../pxl/ja/robbery/KnapsackFullException.java | 8 +++ .../java/be/pxl/ja/robbery/KnapsackUtil.java | 19 +++++++ src/main/java/be/pxl/ja/robbery/Product.java | 51 +++++++++++++++++++ src/main/java/be/pxl/ja/robbery/Robbery.java | 6 +-- src/main/java/be/pxl/ja/robbery/Shop.java | 2 +- .../java/be/pxl/ja/robbery/KnapsackTest.java | 47 +++++++++++++++++ .../java/be/pxl/ja/robbery/ProductTest.java | 24 +++++++++ 11 files changed, 207 insertions(+), 8 deletions(-) create mode 100644 src/main/java/be/pxl/ja/robbery/Demo.java create mode 100644 src/main/java/be/pxl/ja/robbery/Knapsack.java create mode 100644 src/main/java/be/pxl/ja/robbery/KnapsackFullException.java create mode 100644 src/main/java/be/pxl/ja/robbery/KnapsackUtil.java create mode 100644 src/main/java/be/pxl/ja/robbery/Product.java create mode 100644 src/test/java/be/pxl/ja/robbery/KnapsackTest.java create mode 100644 src/test/java/be/pxl/ja/robbery/ProductTest.java diff --git a/src/main/java/be/pxl/ja/citytrip/LondonAttractions.java b/src/main/java/be/pxl/ja/citytrip/LondonAttractions.java index d23ee80..bd99c43 100644 --- a/src/main/java/be/pxl/ja/citytrip/LondonAttractions.java +++ b/src/main/java/be/pxl/ja/citytrip/LondonAttractions.java @@ -5,7 +5,7 @@ public class LondonAttractions { - List items = new ArrayList<>(); + /*List items = new ArrayList<>(); public void add(Attraction item) { items.add(item); @@ -13,5 +13,5 @@ public void add(Attraction item) { public List getItems() { return items; - } + }*/ } diff --git a/src/main/java/be/pxl/ja/citytrip/VisitLondon.java b/src/main/java/be/pxl/ja/citytrip/VisitLondon.java index 821a651..4942d35 100644 --- a/src/main/java/be/pxl/ja/citytrip/VisitLondon.java +++ b/src/main/java/be/pxl/ja/citytrip/VisitLondon.java @@ -2,7 +2,7 @@ public class VisitLondon { public static void main(String[] args) { - Knapsack knapsack = new Knapsack(2); + /*Knapsack knapsack = new Knapsack(2); LondonAttractions attractions = new LondonAttractions(); attractions.add(new Attraction("Westminster Abbey", 0.5, 7)); @@ -16,6 +16,6 @@ public static void main(String[] args) { System.out.println("\nList of attractions:"); for (Attraction attraction : knapsack.getItems()) { System.out.println(attraction); - } + }*/ } } \ No newline at end of file diff --git a/src/main/java/be/pxl/ja/robbery/Demo.java b/src/main/java/be/pxl/ja/robbery/Demo.java new file mode 100644 index 0000000..1376586 --- /dev/null +++ b/src/main/java/be/pxl/ja/robbery/Demo.java @@ -0,0 +1,21 @@ +package be.pxl.ja.robbery; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class Demo { + + public static void main(String[] args) { + List products = new ArrayList<>(); + products.add(new Product("p1", 12.5, 8.5)); + products.add(new Product("p2", 8.5, 8.5)); + products.add(new Product("p3", 4.5, 8.5)); + products.add(new Product("p4", 17.5, 8.5)); + products.add(new Product("p5", 11.5, 8.5)); + Collections.sort(products); + for (Product p: products) { + System.out.println(p); + } + } +} diff --git a/src/main/java/be/pxl/ja/robbery/Knapsack.java b/src/main/java/be/pxl/ja/robbery/Knapsack.java new file mode 100644 index 0000000..8aefcfb --- /dev/null +++ b/src/main/java/be/pxl/ja/robbery/Knapsack.java @@ -0,0 +1,29 @@ +package be.pxl.ja.robbery; + +import java.util.ArrayList; +import java.util.List; + +public class Knapsack { + private int maxCapacity; + private List products = new ArrayList<>(); + + public Knapsack(int maxCapacity) { + this.maxCapacity = maxCapacity; + } + + public double getCurrentWeight() { + return products.stream().mapToDouble(Product::getWeight).sum(); + } + + public void add(Product product) throws KnapsackFullException{ + if (getCurrentWeight() + product.getWeight() > maxCapacity) { + throw new KnapsackFullException("Product " + product.getName() + " past niet in de knapsack."); + } + products.add(product); + } + + public List getItems() { + return products; + } + +} diff --git a/src/main/java/be/pxl/ja/robbery/KnapsackFullException.java b/src/main/java/be/pxl/ja/robbery/KnapsackFullException.java new file mode 100644 index 0000000..22a30c6 --- /dev/null +++ b/src/main/java/be/pxl/ja/robbery/KnapsackFullException.java @@ -0,0 +1,8 @@ +package be.pxl.ja.robbery; + +public class KnapsackFullException extends Exception { // checked exception + + public KnapsackFullException(String message) { + super(message); + } +} diff --git a/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java b/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java new file mode 100644 index 0000000..994d9e9 --- /dev/null +++ b/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java @@ -0,0 +1,19 @@ +package be.pxl.ja.robbery; + +import java.util.Collections; +import java.util.List; + +public class KnapsackUtil { + + public static void fill(Knapsack knapsack, Shop shop) { + List items = shop.getItems(); + Collections.sort(items); // gesorteerd op prijs - duurste eerst + for (Product item : items) { + try { + knapsack.add(item); + } catch (KnapsackFullException e) { + System.err.println(e.getMessage()); + } + } + } +} diff --git a/src/main/java/be/pxl/ja/robbery/Product.java b/src/main/java/be/pxl/ja/robbery/Product.java new file mode 100644 index 0000000..8bc5c51 --- /dev/null +++ b/src/main/java/be/pxl/ja/robbery/Product.java @@ -0,0 +1,51 @@ +package be.pxl.ja.robbery; + +public class Product implements Comparable { + private String name; + private double price; + private double weight; + + public Product(String name, double price, double weight) { + this.name = name; + this.price = price; + this.weight = weight; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public double getWeight() { + return weight; + } + + public void setWeight(double weight) { + this.weight = weight; + } + + @Override + public String toString() { + return "Product{" + + "name='" + name + '\'' + + ", price=" + price + + ", weight=" + weight + + '}'; + } + + @Override + public int compareTo(Product product) { + return Double.compare(product.getPrice(), this.getPrice()); + } +} diff --git a/src/main/java/be/pxl/ja/robbery/Robbery.java b/src/main/java/be/pxl/ja/robbery/Robbery.java index 5b04c30..e51a729 100644 --- a/src/main/java/be/pxl/ja/robbery/Robbery.java +++ b/src/main/java/be/pxl/ja/robbery/Robbery.java @@ -5,9 +5,9 @@ public static void main(String[] args) { Knapsack knapsack = new Knapsack(35); Shop shop = new Shop(); - shop.add(new Product("stereo", 30, 3000)); - shop.add(new Product("laptop", 20, 2000)); - shop.add(new Product("guitar", 15, 1500)); + shop.add(new Product("stereo", 3000, 30)); + shop.add(new Product("laptop", 2000, 20)); + shop.add(new Product("guitar", 1500, 15)); KnapsackUtil.fill(knapsack, shop); diff --git a/src/main/java/be/pxl/ja/robbery/Shop.java b/src/main/java/be/pxl/ja/robbery/Shop.java index 4f7a304..4572be0 100644 --- a/src/main/java/be/pxl/ja/robbery/Shop.java +++ b/src/main/java/be/pxl/ja/robbery/Shop.java @@ -5,7 +5,7 @@ public class Shop { - List items = new ArrayList<>(); + private List items = new ArrayList<>(); public void add(Product item) { items.add(item); diff --git a/src/test/java/be/pxl/ja/robbery/KnapsackTest.java b/src/test/java/be/pxl/ja/robbery/KnapsackTest.java new file mode 100644 index 0000000..3537147 --- /dev/null +++ b/src/test/java/be/pxl/ja/robbery/KnapsackTest.java @@ -0,0 +1,47 @@ +package be.pxl.ja.robbery; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class KnapsackTest { + + private Knapsack knapsackWithProducts; + + @BeforeEach + public void init() throws KnapsackFullException{ + knapsackWithProducts = new Knapsack(35); + knapsackWithProducts.add(new Product("p1", 12.5, 8.5)); + knapsackWithProducts.add(new Product("p2", 8.5, 5.5)); + knapsackWithProducts.add(new Product("p3", 15, 7.5)); + } + + @Test + public void emptyKnapsackHasWeightZero() { + Knapsack knapsack = new Knapsack(35); + assertEquals(0, knapsack.getCurrentWeight()); + } + + @Test + public void knapsackWithProductReturnsCorrectWeight() { + assertEquals(21.5, knapsackWithProducts.getCurrentWeight()); + } + + @Test + public void addProductToKnapsack() throws KnapsackFullException{ + int initialSize = knapsackWithProducts.getItems().size(); + double initialWeight = knapsackWithProducts.getCurrentWeight(); + knapsackWithProducts.add(new Product("p4", 25.3, 6.5)); + assertEquals(initialSize + 1, knapsackWithProducts.getItems().size()); + assertEquals(initialWeight + 6.5, knapsackWithProducts.getCurrentWeight()); + } + + + @Test + public void addProductThrowsKnapsackFullExceptionWhenCapacityExceeded() { + Assertions.assertThrows(KnapsackFullException.class, + () -> knapsackWithProducts.add(new Product("p5", 25.5, 30))); + } +} diff --git a/src/test/java/be/pxl/ja/robbery/ProductTest.java b/src/test/java/be/pxl/ja/robbery/ProductTest.java new file mode 100644 index 0000000..fd3059c --- /dev/null +++ b/src/test/java/be/pxl/ja/robbery/ProductTest.java @@ -0,0 +1,24 @@ +package be.pxl.ja.robbery; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ProductTest { + + @Test + public void twoProductsWithEqualPriceReturnZero() { + Product product1 = new Product("Product 1", 12.5, 15.5); + Product product2 = new Product("Product 2", 12.5, 20.25); + Assertions.assertEquals(0, product1.compareTo(product2)); + } + + @Test + public void twoProductsWithDifferentPrice() { + Product product1 = new Product("Product 1", 25.6, 15.5); + Product product2 = new Product("Product 2", 12.5, 20.25); + Assertions.assertEquals(-1, product1.compareTo(product2)); + Assertions.assertEquals(1, product2.compareTo(product1)); + } + + +} From 32f8a25661d480b299a5c280ae0dd8967b6f2f14 Mon Sep 17 00:00:00 2001 From: "PXLPERS\\20003575" Date: Mon, 17 Oct 2022 09:48:56 +0200 Subject: [PATCH 3/4] generic Knapsack class --- .../java/be/pxl/ja/citytrip/Attraction.java | 51 +++++++++++++++++++ .../java/be/pxl/ja/knapsack/Knapsack.java | 29 +++++++++++ .../KnapsackFullException.java | 2 +- .../java/be/pxl/ja/knapsack/KnapsackItem.java | 6 +++ src/main/java/be/pxl/ja/robbery/Knapsack.java | 29 ----------- .../java/be/pxl/ja/robbery/KnapsackUtil.java | 3 ++ src/main/java/be/pxl/ja/robbery/Product.java | 4 +- src/main/java/be/pxl/ja/robbery/Robbery.java | 8 ++- .../be/pxl/ja/citytrip/AttractionTest.java | 30 +++++++++++ .../java/be/pxl/ja/robbery/KnapsackTest.java | 4 +- 10 files changed, 133 insertions(+), 33 deletions(-) create mode 100644 src/main/java/be/pxl/ja/citytrip/Attraction.java create mode 100644 src/main/java/be/pxl/ja/knapsack/Knapsack.java rename src/main/java/be/pxl/ja/{robbery => knapsack}/KnapsackFullException.java (85%) create mode 100644 src/main/java/be/pxl/ja/knapsack/KnapsackItem.java delete mode 100644 src/main/java/be/pxl/ja/robbery/Knapsack.java create mode 100644 src/test/java/be/pxl/ja/citytrip/AttractionTest.java diff --git a/src/main/java/be/pxl/ja/citytrip/Attraction.java b/src/main/java/be/pxl/ja/citytrip/Attraction.java new file mode 100644 index 0000000..dbc59f8 --- /dev/null +++ b/src/main/java/be/pxl/ja/citytrip/Attraction.java @@ -0,0 +1,51 @@ +package be.pxl.ja.citytrip; + +public class Attraction implements Comparable { + private String name; + private double time; + private int rating; + + public Attraction(String name, double time, int rating) { + this.name = name; + this.time = time; + this.rating = rating; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getTime() { + return time; + } + + public void setTime(double time) { + this.time = time; + } + + public int getRating() { + return rating; + } + + public void setRating(int rating) { + this.rating = rating; + } + + @Override + public String toString() { + return "Attraction{" + + "name='" + name + '\'' + + ", time=" + time + + ", rating=" + rating + + '}'; + } + + @Override + public int compareTo(Attraction attraction) { + return attraction.rating - this.rating; + } +} diff --git a/src/main/java/be/pxl/ja/knapsack/Knapsack.java b/src/main/java/be/pxl/ja/knapsack/Knapsack.java new file mode 100644 index 0000000..5b851ee --- /dev/null +++ b/src/main/java/be/pxl/ja/knapsack/Knapsack.java @@ -0,0 +1,29 @@ +package be.pxl.ja.knapsack; + +import java.util.ArrayList; +import java.util.List; + +public class Knapsack { + private int maxCapacity; + private List items = new ArrayList<>(); + + public Knapsack(int maxCapacity) { + this.maxCapacity = maxCapacity; + } + + public double getCurrentWeight() { + return items.stream().mapToDouble(KnapsackItem::getWeight).sum(); + } + + public void add(T item) throws KnapsackFullException{ + if (getCurrentWeight() + item.getWeight() > maxCapacity) { + throw new KnapsackFullException("Product " + item.getName() + " past niet in de knapsack."); + } + items.add(item); + } + + public List getItems() { + return items; + } + +} diff --git a/src/main/java/be/pxl/ja/robbery/KnapsackFullException.java b/src/main/java/be/pxl/ja/knapsack/KnapsackFullException.java similarity index 85% rename from src/main/java/be/pxl/ja/robbery/KnapsackFullException.java rename to src/main/java/be/pxl/ja/knapsack/KnapsackFullException.java index 22a30c6..25c6081 100644 --- a/src/main/java/be/pxl/ja/robbery/KnapsackFullException.java +++ b/src/main/java/be/pxl/ja/knapsack/KnapsackFullException.java @@ -1,4 +1,4 @@ -package be.pxl.ja.robbery; +package be.pxl.ja.knapsack; public class KnapsackFullException extends Exception { // checked exception diff --git a/src/main/java/be/pxl/ja/knapsack/KnapsackItem.java b/src/main/java/be/pxl/ja/knapsack/KnapsackItem.java new file mode 100644 index 0000000..c6d9c6e --- /dev/null +++ b/src/main/java/be/pxl/ja/knapsack/KnapsackItem.java @@ -0,0 +1,6 @@ +package be.pxl.ja.knapsack; + +public interface KnapsackItem { + double getWeight(); + String getName(); +} diff --git a/src/main/java/be/pxl/ja/robbery/Knapsack.java b/src/main/java/be/pxl/ja/robbery/Knapsack.java deleted file mode 100644 index 8aefcfb..0000000 --- a/src/main/java/be/pxl/ja/robbery/Knapsack.java +++ /dev/null @@ -1,29 +0,0 @@ -package be.pxl.ja.robbery; - -import java.util.ArrayList; -import java.util.List; - -public class Knapsack { - private int maxCapacity; - private List products = new ArrayList<>(); - - public Knapsack(int maxCapacity) { - this.maxCapacity = maxCapacity; - } - - public double getCurrentWeight() { - return products.stream().mapToDouble(Product::getWeight).sum(); - } - - public void add(Product product) throws KnapsackFullException{ - if (getCurrentWeight() + product.getWeight() > maxCapacity) { - throw new KnapsackFullException("Product " + product.getName() + " past niet in de knapsack."); - } - products.add(product); - } - - public List getItems() { - return products; - } - -} diff --git a/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java b/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java index 994d9e9..945c689 100644 --- a/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java +++ b/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java @@ -1,5 +1,8 @@ package be.pxl.ja.robbery; +import be.pxl.ja.knapsack.Knapsack; +import be.pxl.ja.knapsack.KnapsackFullException; + import java.util.Collections; import java.util.List; diff --git a/src/main/java/be/pxl/ja/robbery/Product.java b/src/main/java/be/pxl/ja/robbery/Product.java index 8bc5c51..e5d3943 100644 --- a/src/main/java/be/pxl/ja/robbery/Product.java +++ b/src/main/java/be/pxl/ja/robbery/Product.java @@ -1,6 +1,8 @@ package be.pxl.ja.robbery; -public class Product implements Comparable { +import be.pxl.ja.knapsack.KnapsackItem; + +public class Product implements Comparable, KnapsackItem { private String name; private double price; private double weight; diff --git a/src/main/java/be/pxl/ja/robbery/Robbery.java b/src/main/java/be/pxl/ja/robbery/Robbery.java index e51a729..854fcc0 100644 --- a/src/main/java/be/pxl/ja/robbery/Robbery.java +++ b/src/main/java/be/pxl/ja/robbery/Robbery.java @@ -1,8 +1,14 @@ package be.pxl.ja.robbery; +import be.pxl.ja.knapsack.Knapsack; + +import java.util.ArrayList; +import java.util.List; + public class Robbery { public static void main(String[] args) { - Knapsack knapsack = new Knapsack(35); + List woorden = new ArrayList<>(); + Knapsack knapsack = new Knapsack<>(35); Shop shop = new Shop(); shop.add(new Product("stereo", 3000, 30)); diff --git a/src/test/java/be/pxl/ja/citytrip/AttractionTest.java b/src/test/java/be/pxl/ja/citytrip/AttractionTest.java new file mode 100644 index 0000000..bfd288c --- /dev/null +++ b/src/test/java/be/pxl/ja/citytrip/AttractionTest.java @@ -0,0 +1,30 @@ +package be.pxl.ja.citytrip; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class AttractionTest { + + @Test + public void compareToReturnsZeroForAttractionsWithSameRating() { + Attraction attraction1 = new Attraction("attraction1", 0.5, 5); + Attraction attraction2 = new Attraction("attraction2", 1, 5); + assertEquals(0, attraction1.compareTo(attraction2)); + } + + @Test + public void compareToReturnsNegativeValueForAttractionWithHigherRating() { + Attraction attraction1 = new Attraction("attraction1", 0.5, 7); + Attraction attraction2 = new Attraction("attraction2", 1, 5); + assertTrue(attraction1.compareTo(attraction2) < 0); + } + + @Test + public void compareToReturnsPositiveValueForAttractionWithLowerRating() { + Attraction attraction1 = new Attraction("attraction1", 0.5, 3); + Attraction attraction2 = new Attraction("attraction2", 1, 5); + assertTrue(attraction1.compareTo(attraction2) > 0); + } +} diff --git a/src/test/java/be/pxl/ja/robbery/KnapsackTest.java b/src/test/java/be/pxl/ja/robbery/KnapsackTest.java index 3537147..51a2b12 100644 --- a/src/test/java/be/pxl/ja/robbery/KnapsackTest.java +++ b/src/test/java/be/pxl/ja/robbery/KnapsackTest.java @@ -1,5 +1,7 @@ package be.pxl.ja.robbery; +import be.pxl.ja.knapsack.Knapsack; +import be.pxl.ja.knapsack.KnapsackFullException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -11,7 +13,7 @@ public class KnapsackTest { private Knapsack knapsackWithProducts; @BeforeEach - public void init() throws KnapsackFullException{ + public void init() throws KnapsackFullException { knapsackWithProducts = new Knapsack(35); knapsackWithProducts.add(new Product("p1", 12.5, 8.5)); knapsackWithProducts.add(new Product("p2", 8.5, 5.5)); From 429a0f6ccc45f2d9a8e39f0dcf6d6e88fe6e6718 Mon Sep 17 00:00:00 2001 From: "PXLPERS\\20003575" Date: Mon, 17 Oct 2022 10:13:25 +0200 Subject: [PATCH 4/4] generic Knapsack class --- readme.md | 4 ++-- .../java/be/pxl/ja/citytrip/Attraction.java | 11 ++++++++++- .../be/pxl/ja/citytrip/LondonAttractions.java | 17 ----------------- .../java/be/pxl/ja/citytrip/VisitLondon.java | 10 +++++++--- .../{robbery => knapsack}/KnapsackUtil.java | 10 ++++++---- src/main/java/be/pxl/ja/knapsack/Pool.java | 19 +++++++++++++++++++ src/main/java/be/pxl/ja/robbery/Robbery.java | 4 +++- src/main/java/be/pxl/ja/robbery/Shop.java | 19 ------------------- 8 files changed, 47 insertions(+), 47 deletions(-) delete mode 100644 src/main/java/be/pxl/ja/citytrip/LondonAttractions.java rename src/main/java/be/pxl/ja/{robbery => knapsack}/KnapsackUtil.java (60%) create mode 100644 src/main/java/be/pxl/ja/knapsack/Pool.java delete mode 100644 src/main/java/be/pxl/ja/robbery/Shop.java diff --git a/readme.md b/readme.md index df9f380..280dafc 100644 --- a/readme.md +++ b/readme.md @@ -53,7 +53,7 @@ Deze klasse is reeds gegeven en compleet. ### KnapsackUtil.java Deze klasse staat in voor het greedy algoritme. De klasse bevat 1 public static methode fill met een knapsack en een Shop inventaris als argument. -In de fill-methode worden eerst alle producten uit de shop gesorteerd (gebruik hiervoor een methode uit de klasse Collections!). +In de fill-methode worden eerst alle producten uit de pool gesorteerd (gebruik hiervoor een methode uit de klasse Collections!). Vervolgens probeer je deze gesorteerde producten 1 voor 1 toe te voegen aan de Knapsack. ### Robbery.java (main) @@ -65,7 +65,7 @@ Cannot add product [laptop]. Maximum capacity reached. List of products: Product{name='stereo', weight=30.0, price=3000.0} ``` -Voeg ook eens extra producten toe in de shop en/of pas de capaciteit van de Knapsack eens aan. +Voeg ook eens extra producten toe in de pool en/of pas de capaciteit van de Knapsack eens aan. ### EXTRA: KnapsackUtilTest.java Voorzie unittesten voor de fill methode. diff --git a/src/main/java/be/pxl/ja/citytrip/Attraction.java b/src/main/java/be/pxl/ja/citytrip/Attraction.java index dbc59f8..3b06cbd 100644 --- a/src/main/java/be/pxl/ja/citytrip/Attraction.java +++ b/src/main/java/be/pxl/ja/citytrip/Attraction.java @@ -1,6 +1,8 @@ package be.pxl.ja.citytrip; -public class Attraction implements Comparable { +import be.pxl.ja.knapsack.KnapsackItem; + +public class Attraction implements Comparable, KnapsackItem { private String name; private double time; private int rating; @@ -11,6 +13,7 @@ public Attraction(String name, double time, int rating) { this.rating = rating; } + public String getName() { return name; } @@ -23,6 +26,12 @@ public double getTime() { return time; } + @Override + public double getWeight() { + return time; + } + + public void setTime(double time) { this.time = time; } diff --git a/src/main/java/be/pxl/ja/citytrip/LondonAttractions.java b/src/main/java/be/pxl/ja/citytrip/LondonAttractions.java deleted file mode 100644 index bd99c43..0000000 --- a/src/main/java/be/pxl/ja/citytrip/LondonAttractions.java +++ /dev/null @@ -1,17 +0,0 @@ -package be.pxl.ja.citytrip; - -import java.util.ArrayList; -import java.util.List; - -public class LondonAttractions { - - /*List items = new ArrayList<>(); - - public void add(Attraction item) { - items.add(item); - } - - public List getItems() { - return items; - }*/ -} diff --git a/src/main/java/be/pxl/ja/citytrip/VisitLondon.java b/src/main/java/be/pxl/ja/citytrip/VisitLondon.java index 4942d35..bae655c 100644 --- a/src/main/java/be/pxl/ja/citytrip/VisitLondon.java +++ b/src/main/java/be/pxl/ja/citytrip/VisitLondon.java @@ -1,9 +1,13 @@ package be.pxl.ja.citytrip; +import be.pxl.ja.knapsack.Knapsack; +import be.pxl.ja.knapsack.Pool; +import be.pxl.ja.knapsack.KnapsackUtil; + public class VisitLondon { public static void main(String[] args) { - /*Knapsack knapsack = new Knapsack(2); - LondonAttractions attractions = new LondonAttractions(); + Knapsack knapsack = new Knapsack<>(2); + Pool attractions = new Pool<>(); attractions.add(new Attraction("Westminster Abbey", 0.5, 7)); attractions.add(new Attraction("Globe Theater", 0.5, 6)); @@ -16,6 +20,6 @@ public static void main(String[] args) { System.out.println("\nList of attractions:"); for (Attraction attraction : knapsack.getItems()) { System.out.println(attraction); - }*/ + } } } \ No newline at end of file diff --git a/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java b/src/main/java/be/pxl/ja/knapsack/KnapsackUtil.java similarity index 60% rename from src/main/java/be/pxl/ja/robbery/KnapsackUtil.java rename to src/main/java/be/pxl/ja/knapsack/KnapsackUtil.java index 945c689..ebe7cc6 100644 --- a/src/main/java/be/pxl/ja/robbery/KnapsackUtil.java +++ b/src/main/java/be/pxl/ja/knapsack/KnapsackUtil.java @@ -1,17 +1,19 @@ -package be.pxl.ja.robbery; +package be.pxl.ja.knapsack; import be.pxl.ja.knapsack.Knapsack; import be.pxl.ja.knapsack.KnapsackFullException; +import be.pxl.ja.knapsack.KnapsackItem; +import be.pxl.ja.knapsack.Pool; import java.util.Collections; import java.util.List; public class KnapsackUtil { - public static void fill(Knapsack knapsack, Shop shop) { - List items = shop.getItems(); + public static > void fill(Knapsack knapsack, Pool pool) { + List items = pool.getItems(); Collections.sort(items); // gesorteerd op prijs - duurste eerst - for (Product item : items) { + for (T item : items) { try { knapsack.add(item); } catch (KnapsackFullException e) { diff --git a/src/main/java/be/pxl/ja/knapsack/Pool.java b/src/main/java/be/pxl/ja/knapsack/Pool.java new file mode 100644 index 0000000..f2f2994 --- /dev/null +++ b/src/main/java/be/pxl/ja/knapsack/Pool.java @@ -0,0 +1,19 @@ +package be.pxl.ja.knapsack; + +import java.util.ArrayList; +import java.util.List; + +public class Pool { + + private List items = new ArrayList<>(); + + public void add(T item) { + items.add(item); + } + + public List getItems() { + return items; + } + + +} diff --git a/src/main/java/be/pxl/ja/robbery/Robbery.java b/src/main/java/be/pxl/ja/robbery/Robbery.java index 854fcc0..7f6268c 100644 --- a/src/main/java/be/pxl/ja/robbery/Robbery.java +++ b/src/main/java/be/pxl/ja/robbery/Robbery.java @@ -1,6 +1,8 @@ package be.pxl.ja.robbery; import be.pxl.ja.knapsack.Knapsack; +import be.pxl.ja.knapsack.KnapsackUtil; +import be.pxl.ja.knapsack.Pool; import java.util.ArrayList; import java.util.List; @@ -10,7 +12,7 @@ public static void main(String[] args) { List woorden = new ArrayList<>(); Knapsack knapsack = new Knapsack<>(35); - Shop shop = new Shop(); + Pool shop = new Pool<>(); shop.add(new Product("stereo", 3000, 30)); shop.add(new Product("laptop", 2000, 20)); shop.add(new Product("guitar", 1500, 15)); diff --git a/src/main/java/be/pxl/ja/robbery/Shop.java b/src/main/java/be/pxl/ja/robbery/Shop.java deleted file mode 100644 index 4572be0..0000000 --- a/src/main/java/be/pxl/ja/robbery/Shop.java +++ /dev/null @@ -1,19 +0,0 @@ -package be.pxl.ja.robbery; - -import java.util.ArrayList; -import java.util.List; - -public class Shop { - - private List items = new ArrayList<>(); - - public void add(Product item) { - items.add(item); - } - - public List getItems() { - return items; - } - - -}