From cdc2779a5d8b9f22dd8f5ea25a87abea62c1d036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz> Date: Mon, 1 Mar 2021 10:34:41 +0100 Subject: [PATCH] Solution --- pom.xml | 8 +++ .../java/koz01/java2/lab04/ColorPoint.java | 13 ++++ .../java/koz01/java2/lab04/ColorPoint2.java | 16 +++++ .../java/koz01/java2/lab04/MainNutrition.java | 17 +++++ .../koz01/java2/lab04/NutritionFacts.java | 63 ++++++++++++++----- .../koz01/java2/lab04/NutritionFacts2.java | 23 +++++++ src/main/java/koz01/java2/lab04/Point.java | 14 ++++- src/main/java/koz01/java2/lab04/Point2.java | 18 ++++++ src/main/java/module-info.java | 1 + 9 files changed, 155 insertions(+), 18 deletions(-) create mode 100644 src/main/java/koz01/java2/lab04/ColorPoint2.java create mode 100644 src/main/java/koz01/java2/lab04/MainNutrition.java create mode 100644 src/main/java/koz01/java2/lab04/NutritionFacts2.java create mode 100644 src/main/java/koz01/java2/lab04/Point2.java diff --git a/pom.xml b/pom.xml index a19a814..921eecb 100644 --- a/pom.xml +++ b/pom.xml @@ -52,5 +52,13 @@ <version>5.5.2</version> <scope>test</scope> </dependency> + <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>1.18.18</version> + <scope>provided</scope> + </dependency> + </dependencies> </project> diff --git a/src/main/java/koz01/java2/lab04/ColorPoint.java b/src/main/java/koz01/java2/lab04/ColorPoint.java index d4990c7..67cf183 100644 --- a/src/main/java/koz01/java2/lab04/ColorPoint.java +++ b/src/main/java/koz01/java2/lab04/ColorPoint.java @@ -11,4 +11,17 @@ public class ColorPoint extends Point { this.color = color; } + @Override + public boolean equals(Object obj) { + if (obj instanceof ColorPoint) { + ColorPoint cp = (ColorPoint) obj; + return super.equals(obj) && cp.color == color; + } + return false; + } + + @Override + protected boolean canEqual(Point point) { + return point instanceof ColorPoint; + } } diff --git a/src/main/java/koz01/java2/lab04/ColorPoint2.java b/src/main/java/koz01/java2/lab04/ColorPoint2.java new file mode 100644 index 0000000..6b975bd --- /dev/null +++ b/src/main/java/koz01/java2/lab04/ColorPoint2.java @@ -0,0 +1,16 @@ +package koz01.java2.lab04; + +import javafx.scene.paint.Color; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +public class ColorPoint2 extends Point2 { + + private Color color; + + public ColorPoint2(double x, double y, Color color) { + super(x, y); + this.color = color; + } + +} diff --git a/src/main/java/koz01/java2/lab04/MainNutrition.java b/src/main/java/koz01/java2/lab04/MainNutrition.java new file mode 100644 index 0000000..2be160c --- /dev/null +++ b/src/main/java/koz01/java2/lab04/MainNutrition.java @@ -0,0 +1,17 @@ +package koz01.java2.lab04; + +import koz01.java2.lab04.NutritionFacts.Builder; + +public class MainNutrition { + + public static void main(String[] args) { + NutritionFacts nf = new Builder(10, 20) + .calories(25) + .carbohydrate(15).build(); + + + NutritionFacts2 nf2 = NutritionFacts2.builder(10, 20).calories(20).carbohydrate(20).build(); + + } + +} diff --git a/src/main/java/koz01/java2/lab04/NutritionFacts.java b/src/main/java/koz01/java2/lab04/NutritionFacts.java index b15fd28..1d5ade8 100644 --- a/src/main/java/koz01/java2/lab04/NutritionFacts.java +++ b/src/main/java/koz01/java2/lab04/NutritionFacts.java @@ -1,30 +1,18 @@ package koz01.java2.lab04; public class NutritionFacts { + //mandatory private final int servingSize;// (mL)required private final int servings;// (per container) required + + private final int calories;// (per serving)optional private final int fat;// (g/serving)optional private final int sodium;// (mg/serving)optional private final int carbohydrate; // (g/serving) optional - public NutritionFacts(int servingSize, int servings) { - this(servingSize, servings, 0); - } - - public NutritionFacts(int servingSize, int servings, int calories) { - this(servingSize, servings, calories, 0); - } - - public NutritionFacts(int servingSize, int servings, int calories, int fat) { - this(servingSize, servings, calories, fat, 0); - } - - public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium) { - this(servingSize, servings, calories, fat, sodium, 0); - } - - public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium, int carbohydrate) { + + private NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium, int carbohydrate) { this.servingSize = servingSize; this.servings = servings; this.calories = calories; @@ -32,4 +20,45 @@ public class NutritionFacts { this.sodium = sodium; this.carbohydrate = carbohydrate; } + + public static class Builder { + //mandatory + private final int servingSize;// (mL)required + private final int servings;// (per container) required + + //optional + private int calories = 0;// (per serving)optional + private int fat = 0;// (g/serving)optional + private int sodium = 0;// (mg/serving)optional + private int carbohydrate = 0; // (g/serving) optional + + public Builder(int servingSize, int servings) { + this.servingSize = servingSize; + this.servings = servings; + } + + public Builder calories(int calories) { + this.calories = calories; + return this; + } + + public Builder fat(int fat) { + this.fat = fat; + return this; + } + + public Builder sodium(int sodium) { + this.sodium = sodium; + return this; + } + + public Builder carbohydrate(int carbohydrate) { + this.carbohydrate = carbohydrate; + return this; + } + + public NutritionFacts build() { + return new NutritionFacts(servingSize, servings, calories, fat, sodium, carbohydrate); + } + } } diff --git a/src/main/java/koz01/java2/lab04/NutritionFacts2.java b/src/main/java/koz01/java2/lab04/NutritionFacts2.java new file mode 100644 index 0000000..33c264b --- /dev/null +++ b/src/main/java/koz01/java2/lab04/NutritionFacts2.java @@ -0,0 +1,23 @@ +package koz01.java2.lab04; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; + +@Builder() +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class NutritionFacts2 { + //mandatory + private final int servingSize;// (mL)required + private final int servings;// (per container) required + + + private final int calories;// (per serving)optional + private final int fat;// (g/serving)optional + private final int sodium;// (mg/serving)optional + private final int carbohydrate; // (g/serving) optional + + public static NutritionFacts2Builder builder(int servingSize, int servings) { + return new NutritionFacts2Builder().servingSize(servingSize).servings(servings); + } +} diff --git a/src/main/java/koz01/java2/lab04/Point.java b/src/main/java/koz01/java2/lab04/Point.java index 233f403..840ed8c 100644 --- a/src/main/java/koz01/java2/lab04/Point.java +++ b/src/main/java/koz01/java2/lab04/Point.java @@ -3,7 +3,7 @@ package koz01.java2.lab04; public class Point { private double x; - + private double y; public Point(double x, double y) { @@ -11,5 +11,17 @@ public class Point { this.y = y; } + @Override + public boolean equals(Object obj) { + if (obj instanceof Point) { + Point point = (Point) obj; + return point.canEqual(this) && x == point.x && y == point.y; + } + return false; + } + + protected boolean canEqual(Point point) { + return true; + } } diff --git a/src/main/java/koz01/java2/lab04/Point2.java b/src/main/java/koz01/java2/lab04/Point2.java new file mode 100644 index 0000000..a6a0735 --- /dev/null +++ b/src/main/java/koz01/java2/lab04/Point2.java @@ -0,0 +1,18 @@ +package koz01.java2.lab04; + +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode +public class Point2 { + + private double x; + + private double y; + + public Point2(double x, double y) { + this.x = x; + this.y = y; + } + + +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index f15491d..d7bedbc 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -3,4 +3,5 @@ module koz01.java2.lab04 { requires javafx.fxml; opens koz01.java2.lab04 to javafx.fxml; exports koz01.java2.lab04; + requires lombok; } \ No newline at end of file -- GitLab