diff --git a/src/main/java/school/lemon/changerequest/java/container/Container.java b/src/main/java/school/lemon/changerequest/java/container/Container.java index e47af7e..a33ce25 100644 --- a/src/main/java/school/lemon/changerequest/java/container/Container.java +++ b/src/main/java/school/lemon/changerequest/java/container/Container.java @@ -2,6 +2,7 @@ public interface Container { + int INITIAL_ARRAY_SIZE = 10; /** diff --git a/src/main/java/school/lemon/changerequest/java/container/ContainerImpl.java b/src/main/java/school/lemon/changerequest/java/container/ContainerImpl.java index 0cdb298..0a3cbbf 100644 --- a/src/main/java/school/lemon/changerequest/java/container/ContainerImpl.java +++ b/src/main/java/school/lemon/changerequest/java/container/ContainerImpl.java @@ -1,38 +1,74 @@ package school.lemon.changerequest.java.container; public class ContainerImpl implements Container{ + private int size; + private int[] array; + + public ContainerImpl(){ + this.size = size(); + this.array = new int[INITIAL_ARRAY_SIZE]; + } @Override public int size() { - // TODO: please implement me - return 0; + + return size; } @Override public void clear() { - // TODO: please implement me + size = 0; } @Override public Integer get(int index) { - // TODO: please implement me - return null; + if (index < 0 || index >= size) { + return null; + } + return array[index]; } + @Override public void add(int element) { - // TODO: please implement me + + if (array.length == size) { + int[] newArray = new int[array.length*3]; + System.arraycopy(array, 0, newArray, 0, array.length); + array = newArray; + } + array[size++] = element; } @Override public boolean add(int element, int index) { - // TODO: please implement me - return false; + + if (index < 0 || index > size) { + return false; + } + checkSize(); + System.arraycopy(array, index, array,index+1, size-index); + return true; + } + + private void checkSize() { + + if (size == array.length) { + int[] newArray = new int[array.length*3]; + System.arraycopy(array, 0, newArray, 0, array.length); + array = newArray; + } } @Override public boolean remove(int index) { - // TODO: please implement me - return false; - } + + if (index < 0 || index >= size) { + return false; + } + System.arraycopy(array, index+1, array, index, size-index-1); + --size; + return true; + + } } diff --git a/src/main/java/school/lemon/changerequest/java/extendedinteger/ExtendedInteger.java b/src/main/java/school/lemon/changerequest/java/extendedinteger/ExtendedInteger.java index a76f6fe..b6fbcd2 100644 --- a/src/main/java/school/lemon/changerequest/java/extendedinteger/ExtendedInteger.java +++ b/src/main/java/school/lemon/changerequest/java/extendedinteger/ExtendedInteger.java @@ -4,9 +4,11 @@ * Integer representation with some additional features */ public class ExtendedInteger { + private int value; public ExtendedInteger(int value) { - //TODO: implement me + + this.value = value; } /** @@ -15,8 +17,7 @@ public ExtendedInteger(int value) { * @return true if value is even, false - otherwise */ public static boolean isEven(int value) { - //TODO: implement me - return false; + return value%2 == 0; } /** @@ -25,8 +26,8 @@ public static boolean isEven(int value) { * @return true if value is odd, false - otherwise */ public static boolean isOdd(int value) { - //TODO: implement me - return false; + + return value%2 != 0; } /** @@ -35,8 +36,16 @@ public static boolean isOdd(int value) { * @return true if value is prime, false - otherwise */ public static boolean isPrime(int value) { - //TODO: implement me - return false; + + if (value == 2) return true; + if (value < 2 || value % 2 == 0) { + return false; + } + for (int d = 2; d*d 0; i--) { + if (Character.isDigit(value.charAt(i))) { + val = val + Character.getNumericValue(value.charAt(i)) * (int) Math.pow(10.0, j); + j++; + } else return null; + } + if (Character.isDigit(value.charAt(0))) { + val = val + Character.getNumericValue(value.charAt(0)) * (int) Math.pow(10.0, j); + + } else if (value.startsWith("-")) { + val = val * (-1); + } else if(value.startsWith("+")) {} + else return null; + ExtendedInteger newInt = new ExtendedInteger(val); + return newInt; } + + /** * Get int representation of {@code ExtendedInteger} * @return int representation */ public int getValue() { - //TODO: implement me - return 0; + + return this.value; } /** @@ -75,8 +109,8 @@ public int getValue() { * @return true if value is even, false - otherwise */ public boolean isEven() { - //TODO: implement me - return false; + + return isEven(this.value); } /** @@ -84,8 +118,8 @@ public boolean isEven() { * @return true if value is odd, false - otherwise */ public boolean isOdd() { - //TODO: implement me - return false; + + return isOdd(this.value); } /** @@ -93,27 +127,32 @@ public boolean isOdd() { * @return true if value is prime, false - otherwise */ public boolean isPrime() { - //TODO: implement me - return false; + + return isPrime(this.value); } + /** * Check whether current {@code ExtendedInteger} is equal to specified int value * @return true if values are equal, false - otherwise */ public boolean equals(int value) { - //TODO: implement me - return false; + + return this.value == value; + } /** * Check whether current {@code ExtendedInteger} is equal to specified object * @return true if values are equal, false - otherwise */ - @Override + public boolean equals(Object obj) { - //TODO: implement me - return false; + if (obj == null) return false; + + if (!(obj instanceof ExtendedInteger)) return false; + return ((ExtendedInteger) obj).getValue() == this.value; + } } diff --git a/src/main/java/school/lemon/changerequest/java/vehicles/Airplane.java b/src/main/java/school/lemon/changerequest/java/vehicles/Airplane.java new file mode 100644 index 0000000..73ce78b --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Airplane.java @@ -0,0 +1,56 @@ +package school.lemon.changerequest.java.vehicles; + + +public class Airplane extends Vehicle implements IAirplane { + private int maximumHeightFeet; + + public Airplane(int maximumHeightFeet, int manufacturedYear, String model, String make) { + super(manufacturedYear, make, model); + this.maximumHeightFeet = maximumHeightFeet; + } + + @Override + public int getMaximumHeightFeet() { + return maximumHeightFeet; + } + + @Override + public void setMaximumHeightFeet(int maximumHeightFeet) { + this.maximumHeightFeet = maximumHeightFeet; + } + + @Override + public String accelerate() { + return "fire engines on wings"; + } + + @Override + public String steerLeft() { + return "lift wing flaps to turn left"; + } + + @Override + public String steerRight() { + return "lift wing flaps to turn right"; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) return false; + + if (this == obj) return true; + + if (!(obj instanceof Airplane)) { + return false; + } + Airplane equalAir = (Airplane) obj; + return Math.abs(equalAir.maximumHeightFeet - maximumHeightFeet) <=1000 ; + } + + @Override + public String toString() { + + return String.format("This airplane is a %1$s %2$s %3$s that can reach %4$s feet.", this.getManufacturedYear(), this.getMake(), this.getModel(), this.getMaximumHeightFeet()); + } + +} diff --git a/src/main/java/school/lemon/changerequest/java/vehicles/Boat.java b/src/main/java/school/lemon/changerequest/java/vehicles/Boat.java new file mode 100644 index 0000000..d9b8e9b --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Boat.java @@ -0,0 +1,55 @@ +package school.lemon.changerequest.java.vehicles; + + +public class Boat extends Vehicle implements IBoat { + private boolean motorized; + + Boat(int manufacturedYear, String make, String model, boolean motorized) { + super(manufacturedYear, make, model); + this.motorized = motorized; + } + + @Override + public boolean isMotorized() { + return motorized; + } + + @Override + public void setMotorized(boolean motorized) { + this.motorized = motorized; + } + + @Override + public String accelerate() { + return "jet water"; + } + + @Override + public String steerLeft() { + return "turn tiller left"; + } + + @Override + public String steerRight() { + return "turn tiller right"; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) return false; + + if (this == obj) return true; + + if (!(obj instanceof Boat)) { + return false; + } + Boat equalBoat = (Boat) obj; + return equalBoat.motorized == motorized ; + } + + @Override + public String toString() { + + return String.format("This boat is a %1$s %2$s %3$s with %4$s", this.getManufacturedYear(), this.getMake(), this.getModel(), isMotorized() ? "(with motor)." : "."); + } +} diff --git a/src/main/java/school/lemon/changerequest/java/vehicles/Car.java b/src/main/java/school/lemon/changerequest/java/vehicles/Car.java new file mode 100644 index 0000000..214be1a --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Car.java @@ -0,0 +1,64 @@ +package school.lemon.changerequest.java.vehicles; + + +public class Car extends Vehicle implements ICar{ + private int horsepower; + + + Car(int manufacturedYear, String make, String model, int horsepower) { + super(manufacturedYear, make, model); + this.horsepower = horsepower; + } + + @Override + public int getHorsepower() { + + return horsepower; + } + + @Override + public void setHorsepower(int horsepower) { + + this.horsepower = horsepower; + } + + + @Override + public String accelerate() { + + return "fire pistons, turn wheels"; + } + + @Override + public String steerLeft() { + + return "turn wheels left"; + } + + @Override + public String steerRight() { + + return "turn wheels right"; + } + + + @Override + public boolean equals(Object obj) { + if (obj == null) return false; + + if (this == obj) return true; + + if (!(obj instanceof Car)) { + return false; + } + Car equalCar = (Car) obj; + return Math.abs(equalCar.horsepower - horsepower) <=10 ; + } + + @Override + public String toString() { + + return String.format("This car is a %1$s %2$s %3$s with %4$s hp.", this.getManufacturedYear(), this.getMake(), this.getModel(), this.getHorsepower()); + } + +} diff --git a/src/main/java/school/lemon/changerequest/java/vehicles/IVehicle.java b/src/main/java/school/lemon/changerequest/java/vehicles/IVehicle.java index c3dc41b..312f66d 100644 --- a/src/main/java/school/lemon/changerequest/java/vehicles/IVehicle.java +++ b/src/main/java/school/lemon/changerequest/java/vehicles/IVehicle.java @@ -8,6 +8,7 @@ public interface IVehicle extends Steerable { */ int getManufacturedYear(); + /** * Set vehicle manufactured year * @param year manufactured year diff --git a/src/main/java/school/lemon/changerequest/java/vehicles/Vehicle.java b/src/main/java/school/lemon/changerequest/java/vehicles/Vehicle.java new file mode 100644 index 0000000..77fa305 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Vehicle.java @@ -0,0 +1,45 @@ +package school.lemon.changerequest.java.vehicles; + + +public abstract class Vehicle implements IVehicle{ + private int manufacturedYear; + private String make; + private String model; + + public Vehicle(int manufacturedYear, String make, String model) { + this.manufacturedYear = manufacturedYear; + this.make = make; + this.model = model; + + } + + + public int getManufacturedYear() { + + return manufacturedYear; + } + + public void setManufacturedYear(int manufacturedYear) { + + this.manufacturedYear = manufacturedYear; + } + + public String getMake() { + + return make; + } + + public void setMake(String make) { + + this.make = make; + } + + public String getModel() { + + return model; + } + + public void setModel(String model) { + this.model = model; + } +} diff --git a/src/main/java/school/lemon/changerequest/java/vehicles/VehicleFactory.java b/src/main/java/school/lemon/changerequest/java/vehicles/VehicleFactory.java index 7856f45..e3ebe84 100644 --- a/src/main/java/school/lemon/changerequest/java/vehicles/VehicleFactory.java +++ b/src/main/java/school/lemon/changerequest/java/vehicles/VehicleFactory.java @@ -3,8 +3,10 @@ public final class VehicleFactory { private VehicleFactory() { + } + /** * Creates car * @param manufacturedYear manufactured year @@ -13,9 +15,12 @@ private VehicleFactory() { * @param horsepower of car * @return instance of car */ + + public static ICar createCar(int manufacturedYear, String make, String model, int horsepower) { - // TODO: please implement me - return null; + + Car car = new Car(manufacturedYear, make, model, horsepower); + return car; } /** @@ -27,8 +32,9 @@ public static ICar createCar(int manufacturedYear, String make, String model, in * @return instance of airplane */ public static IAirplane createAirplane(int manufacturedYear, String make, String model, int maximumHeightFeet) { - // TODO: please implement me - return null; + + Airplane airplane = new Airplane (maximumHeightFeet, manufacturedYear, make, model); + return airplane; } /** @@ -40,8 +46,9 @@ public static IAirplane createAirplane(int manufacturedYear, String make, String * @return instance of boat */ public static IBoat createBoat(int manufacturedYear, String make, String model, boolean motorized) { - // TODO: please implement me - return null; + + Boat boat = new Boat (manufacturedYear, make, model, motorized); + return boat; } }