diff --git a/pom.xml b/pom.xml index a19a81462b419ce003d916981334eb286d52be6c..921eecb960b21d6cd7a1f5f7018a398de20831f3 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 d4990c7c5adf923380c0f4fe0b486e4fbd12a936..67cf183aacee2ebf39556012c5dddadc0bd09d55 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 0000000000000000000000000000000000000000..6b975bddd60b9f06e935d5cc7ddec129a8ed200c --- /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 0000000000000000000000000000000000000000..2be160c241e8f60f2bfa1f39b7b64dcfc9246c26 --- /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 b15fd288bbc18a8ce1fa6e6eb9fad0de80d6cf28..1d5ade83f10049e8a4bc8c75d79fa77595cbdb02 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 0000000000000000000000000000000000000000..33c264b6566cb73af96c7f37a10bdd44f6495eef --- /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 233f40320e3a1e2c42199c33a2c40085637b346b..840ed8c0e03924e2b5a69db60bcfba0e3a50316f 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 0000000000000000000000000000000000000000..a6a0735c30ad768c986879312158f0d14bc650f6 --- /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 f15491da35b42ca1b0e2cc2aa4efe058da458e6d..d7bedbc9743044ba581850f517618123e99edfe3 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