diff --git a/src/main/java/_5/_2/Bill/Bill.java b/src/main/java/_5/_2/Bill/Bill.java new file mode 100644 index 0000000..8ebd10c --- /dev/null +++ b/src/main/java/_5/_2/Bill/Bill.java @@ -0,0 +1,64 @@ +package _5._2.Bill; + +import _5._2.CarComponents.*; + +public class Bill { + private Billtem[] items; + + public Bill(Billtem[] items) { + this.items = items; + } + + public double getTotalPrice() { + double price = 0; + for (Billtem i : items) { + price += i.getPrice(); + } + + return price; + } + + public String toString() { + String string = ""; + for (Billtem i : items) { + string += i.toString() + "\n"; + } + double price = this.getTotalPrice(); + string += "Total: " + price; + return string; + } + + + public static class Billtem { + private double price; + private CarComponent item; + + public Billtem(CarComponent item, double price) { + this.item = item; + this.price = price; + } + + public double getPrice() { + return price; + } + + public String toString() { + return item.getName() + getComponents() + ": " + price; + } + + + public String getComponents() { + CarComponent[] components = item.getComponents(); + String names = ""; + + if (components != null) { + names += "("; + for (CarComponent i : components) { + names += i.getName() + " "; + } + names += ")"; + } + return names; + } + } +} \ No newline at end of file diff --git a/src/main/java/_5/_2/Bill/TestBill.java b/src/main/java/_5/_2/Bill/TestBill.java new file mode 100644 index 0000000..c8f2809 --- /dev/null +++ b/src/main/java/_5/_2/Bill/TestBill.java @@ -0,0 +1,21 @@ +package _5._2.Bill; + +import _5._2.CarComponents.*; + +public class TestBill { + public static void main(String[] args) { + Motor m = new Motor("Motor",null); + Car c = new Car("Rolls Royce",new CarComponent[] {m}); + Seat s = new Seat("Seat",null); + Wheel w1 = new Wheel("Wheel",null); + Wheel w2 = new Wheel("Wheel",null); + Wheel w3 = new Wheel("Wheel",null); + Wheel w4 = new Wheel("Wheel",null); + + Bill.Billtem[] billtems = new Bill.Billtem[]{new Bill.Billtem(c, 100000.0), new Bill.Billtem(s,2000.0), new Bill.Billtem(w1, 1000.0), new Bill.Billtem(w2, 1000.0), new Bill.Billtem(w3, 1000.0), new Bill.Billtem(w4, 1000.0)}; + Bill bill = new Bill(billtems); + + String billprice = bill.toString(); + System.out.println(billprice); + } +} diff --git a/src/main/java/_5/_2/CarComponents/Car.java b/src/main/java/_5/_2/CarComponents/Car.java new file mode 100644 index 0000000..21c4ad7 --- /dev/null +++ b/src/main/java/_5/_2/CarComponents/Car.java @@ -0,0 +1,19 @@ +package _5._2.CarComponents; + +public class Car implements CarComponent { + private String name; + private CarComponent[] components; + + public Car(String name, CarComponent[] components) { + this.name = name; + this.components = components; + } + + public String getName() { + return name; + } + + public CarComponent[] getComponents() { + return components; + } +} diff --git a/src/main/java/_5/_2/CarComponents/CarComponent.java b/src/main/java/_5/_2/CarComponents/CarComponent.java new file mode 100644 index 0000000..1108d8c --- /dev/null +++ b/src/main/java/_5/_2/CarComponents/CarComponent.java @@ -0,0 +1,6 @@ +package _5._2.CarComponents; + +public interface CarComponent { + String getName(); + CarComponent[] getComponents(); +} \ No newline at end of file diff --git a/src/main/java/_5/_2/CarComponents/CarPart.java b/src/main/java/_5/_2/CarComponents/CarPart.java new file mode 100644 index 0000000..fa27dda --- /dev/null +++ b/src/main/java/_5/_2/CarComponents/CarPart.java @@ -0,0 +1,19 @@ +package _5._2.CarComponents; + +public abstract class CarPart implements CarComponent { + private String name; + private CarComponent[] components; + + public CarPart(String name,CarComponent[] components) { + this.name = name; + this.components = components; + } +// + public String getName() { + return name; + } + + public CarComponent[] getComponents() { + return components; + } +} diff --git a/src/main/java/_5/_2/CarComponents/Motor.java b/src/main/java/_5/_2/CarComponents/Motor.java new file mode 100644 index 0000000..898b7ae --- /dev/null +++ b/src/main/java/_5/_2/CarComponents/Motor.java @@ -0,0 +1,7 @@ +package _5._2.CarComponents; + +public final class Motor extends CarPart { + public Motor(String name,CarComponent[] components) { + super(name,components); + } +} diff --git a/src/main/java/_5/_2/CarComponents/Seat.java b/src/main/java/_5/_2/CarComponents/Seat.java new file mode 100644 index 0000000..9a45808 --- /dev/null +++ b/src/main/java/_5/_2/CarComponents/Seat.java @@ -0,0 +1,7 @@ +package _5._2.CarComponents; + +public final class Seat extends CarPart { + public Seat(String name,CarComponent[] components) { + super(name,components); + } +} diff --git a/src/main/java/_5/_2/CarComponents/Wheel.java b/src/main/java/_5/_2/CarComponents/Wheel.java new file mode 100644 index 0000000..464429c --- /dev/null +++ b/src/main/java/_5/_2/CarComponents/Wheel.java @@ -0,0 +1,7 @@ +package _5._2.CarComponents; + +public final class Wheel extends CarPart { + public Wheel(String name,CarComponent[] components) { + super(name,components); + } +} \ No newline at end of file diff --git a/src/main/java/_5/_3/Group.java b/src/main/java/_5/_3/Group.java new file mode 100644 index 0000000..b70dda2 --- /dev/null +++ b/src/main/java/_5/_3/Group.java @@ -0,0 +1,26 @@ +package _5._3; + +import java.util.LinkedList; + +public class Group { + private LinkedList members = new LinkedList<>(); + + public void add(T member) { + this.members.add(member); + } + + public T getOldest() { + if (members.isEmpty()) { + return null; + } + + T oldestMember = members.get(0); + + for (int i=1; i { + public boolean isOlder(T other); + + public int getAge(); +} diff --git a/src/main/java/_5/_3/Person.java b/src/main/java/_5/_3/Person.java new file mode 100644 index 0000000..4856429 --- /dev/null +++ b/src/main/java/_5/_3/Person.java @@ -0,0 +1,23 @@ +package _5._3; + +public class Person implements Older { + private String name; + private int age; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public int getAge() { + return age; + } + + public String getName() { + return name; + } + + public boolean isOlder(T other) { + return this.age > other.getAge(); + } +}