From be036aa5b3b8995eb67099e5aede6a54ccde547f Mon Sep 17 00:00:00 2001 From: igor batomunkuev Date: Thu, 8 May 2025 20:56:51 +0300 Subject: [PATCH] HomeWork 19 --- .../homeworks/homework19/Application.java | 47 ++++++++++++++++ .../homeworks/homework19/fruit/Apple.java | 7 +++ .../basic/homeworks/homework19/fruit/Box.java | 55 +++++++++++++++++++ .../homeworks/homework19/fruit/Fruit.java | 13 +++++ .../homeworks/homework19/fruit/Orange.java | 7 +++ 5 files changed, 129 insertions(+) create mode 100644 src/main/java/ru/otus/java/basic/homeworks/homework19/Application.java create mode 100644 src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Apple.java create mode 100644 src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Box.java create mode 100644 src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Fruit.java create mode 100644 src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Orange.java diff --git a/src/main/java/ru/otus/java/basic/homeworks/homework19/Application.java b/src/main/java/ru/otus/java/basic/homeworks/homework19/Application.java new file mode 100644 index 0000000..3c2bb0a --- /dev/null +++ b/src/main/java/ru/otus/java/basic/homeworks/homework19/Application.java @@ -0,0 +1,47 @@ +package ru.otus.java.basic.homeworks.homework19; + +import ru.otus.java.basic.homeworks.homework19.fruit.Apple; +import ru.otus.java.basic.homeworks.homework19.fruit.Fruit; +import ru.otus.java.basic.homeworks.homework19.fruit.Orange; +import ru.otus.java.basic.homeworks.homework19.fruit.Box; + +public class Application { + public static void main(String[] args) { + Apple apple1 = new Apple(8); + Apple apple2 = new Apple(14); + Apple apple3 = new Apple(5); + + Orange orange1 = new Orange(10); + Orange orange2 = new Orange(12); + Orange orange3 = new Orange(7); + + Box appleBox = new Box<>(); + Box orangeBox = new Box<>(); + Box box = new Box<>(); + + appleBox.add(apple1, apple2); + orangeBox.add(orange1, orange2); + box.add(apple3, orange3); + + System.out.println("Результат сравнения коробок с яблоками и апельсинами: " + appleBox.compare(orangeBox)); + System.out.println("Результат сравнения коробок с яблоками и фруктами: " + appleBox.compare(box)); + + System.out.println(" "); + + System.out.println("Вес коробки с яблоками: " + appleBox.weight()); + System.out.println("Вес коробки с фруктами: " + box.weight()); + + box.pour(appleBox); + + System.out.println("Вес коробки с яблоками: " + appleBox.weight()); + System.out.println("Вес коробки с фруктами: " + box.weight()); + + System.out.println(" "); + + Box emptyAppleBox = new Box<>(); + Box emptyFruitBox = new Box<>(); + emptyAppleBox.pour(emptyAppleBox); + emptyFruitBox.pour(emptyAppleBox); + + } +} \ No newline at end of file diff --git a/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Apple.java b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Apple.java new file mode 100644 index 0000000..6c2c22d --- /dev/null +++ b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Apple.java @@ -0,0 +1,7 @@ +package ru.otus.java.basic.homeworks.homework19.fruit; + +public class Apple extends Fruit { + public Apple(int weight) { + super(weight); + } +} diff --git a/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Box.java b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Box.java new file mode 100644 index 0000000..0883dea --- /dev/null +++ b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Box.java @@ -0,0 +1,55 @@ +package ru.otus.java.basic.homeworks.homework19.fruit; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Box { + private List fruits; + + public List getFruits() { + return fruits; + } + + public Box() { + fruits = new ArrayList<>(); + } + + public void add(T... fruit) { + fruits.addAll(Arrays.asList(fruit)); + } + + public double weight() { + double weight = 0.0; + for (T fruit : fruits) { + weight+=fruit.getWeight(); + } + return weight; + } + + public boolean compare(Box other) { + return Math.abs(this.weight() - other.weight()) < 0.0001; + } + + public void clear() { + fruits = new ArrayList<>(); + } + + public void pour(Box other) { + if (this == other) { + System.out.println("Нельзя переложить коробку саму в себя"); + return; + } + + List fruits = other.getFruits(); + if (fruits == null || fruits.isEmpty()) { + System.out.println("Поступившая коробка пуста"); + return; + } + + other.clear(); + for (Object fruit : fruits) { + this.fruits.add((T) fruit); + } + } +} \ No newline at end of file diff --git a/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Fruit.java b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Fruit.java new file mode 100644 index 0000000..e7d3491 --- /dev/null +++ b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Fruit.java @@ -0,0 +1,13 @@ +package ru.otus.java.basic.homeworks.homework19.fruit; + +public class Fruit { + private final double weight; + + public Fruit(double weight) { + this.weight = weight; + } + + public double getWeight() { + return weight; + } +} \ No newline at end of file diff --git a/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Orange.java b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Orange.java new file mode 100644 index 0000000..f08de1c --- /dev/null +++ b/src/main/java/ru/otus/java/basic/homeworks/homework19/fruit/Orange.java @@ -0,0 +1,7 @@ +package ru.otus.java.basic.homeworks.homework19.fruit; + +public class Orange extends Fruit { + public Orange(int weight) { + super(weight); + } +} \ No newline at end of file