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..f532649 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,65 @@ package school.lemon.changerequest.java.container; public class ContainerImpl implements Container{ + private int INITIAL_ARRAY_SIZE = 10; + private int[] array; + private int size; + + public ContainerImpl() { + this.array = new int[Container.INITIAL_ARRAY_SIZE]; + this.size = 0; + } @Override public int size() { - // TODO: please implement me - return 0; + return this.size; } @Override public void clear() { - // TODO: please implement me + this.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 + checkSize(); + 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); + array[index] = element; + ++size; + return true; } @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; + } + + private void checkSize() { + if (size == array.length) { + int[] newArray = new int[array.length * 2]; + System.arraycopy(array, 0, newArray, 0, array.length); + array = newArray; + } } } + 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..4714fbc 100644 --- a/src/main/java/school/lemon/changerequest/java/extendedinteger/ExtendedInteger.java +++ b/src/main/java/school/lemon/changerequest/java/extendedinteger/ExtendedInteger.java @@ -5,115 +5,136 @@ */ public class ExtendedInteger { + private int value; + public ExtendedInteger(int value) { - //TODO: implement me + this.value = value; } /** * Check whether specified value is even + * * @param value to check * @return true if value is even, false - otherwise */ public static boolean isEven(int value) { - //TODO: implement me - return false; + return value % 2 == 0; } /** * Check whether specified value is odd + * * @param value to check * @return true if value is odd, false - otherwise */ public static boolean isOdd(int value) { - //TODO: implement me - return false; + return value % 2 != 0; } /** * Check whether specified value is prime + * * @param value to check * @return true if value is prime, false - otherwise */ public static boolean isPrime(int value) { - //TODO: implement me - return false; + if (value < 2) + return false; + for (int i = 2; i * i <= value; i++) + if (value % i == 0) + return false; + return true; } /** * Parse specified char array and create instance of {@code ExtendedInteger} + * * @param value to parse * @return instance of {@code ExtendedInteger} or * null in case specified value is null or the value does not contain a parsable integer */ public static ExtendedInteger parseInt(char[] value) { - //TODO: implement me + if (value == null || value.length == 0) return null; + String newValue = new String(value); + return ExtendedInteger.parseInt(newValue); } /** * Parse specified string and create instance of {@code ExtendedInteger} + * * @param value to parse * @return instance of {@code ExtendedInteger} or * null in case specified value is null or the value does not contain a parsable integer */ public static ExtendedInteger parseInt(String value) { - //TODO: implement me + if (value == null | value.length() == 0) return null; + StringBuilder sb = new StringBuilder(); + if (Character.isDigit(value.charAt(0)) || value.startsWith("-")) + sb = sb.append(value.charAt(0)); + for (int i = 1; i < value.length(); i++) { + if (Character.isDigit(value.charAt(i))) { + sb = sb.append(value.charAt(i)); + } else return null; + } + return new ExtendedInteger(new Integer(value)); + } /** * Get int representation of {@code ExtendedInteger} + * * @return int representation */ public int getValue() { - //TODO: implement me - return 0; + return value; } /** * Check whether current value is even + * * @return true if value is even, false - otherwise */ public boolean isEven() { - //TODO: implement me - return false; + return isEven(this.value); } /** * Check whether current value is odd + * * @return true if value is odd, false - otherwise */ public boolean isOdd() { - //TODO: implement me - return false; + return isOdd(this.value); } /** * Check whether current value is prime + * * @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; + return obj != null && obj instanceof ExtendedInteger && this.value == ((ExtendedInteger) obj).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..808b068 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Airplane.java @@ -0,0 +1,88 @@ +package school.lemon.changerequest.java.vehicles; + +/** + * Created by Yaroslav Pavlinskiy on 04.12.2016. + */ +public class Airplane extends Vehicle implements IAirplane { + private int maximumHeightFeet; + + public Airplane(int manufacturedYear, String make, String model, int maximumHeightFeet) { + super(manufacturedYear, make, model); + this.maximumHeightFeet = maximumHeightFeet; + } + + + @Override + public int getManufacturedYear() { + return this.manufacturedYear; + } + + @Override + public void setManufacturedYear(int year) { + this.manufacturedYear = year; + } + + @Override + public String getMake() { + return this.make; + } + + @Override + public void setMake(String make) { + this.make = make; + } + + @Override + public String getModel() { + return this.model; + } + + @Override + public void setModel(String model) { + this.model = model; + } + + @Override + public int getMaximumHeightFeet() { + return this.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 String toString() { + return String.format("This airplane is a %1$d %2$s %3$s that can reach %4$d feet.", this.getManufacturedYear(), this.getMake(), this.getModel(), this.getMaximumHeightFeet()); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + if (this == obj) + return true; + if (!(obj instanceof Airplane)) + return false; + obj = (Airplane) obj; + if (this.getMaximumHeightFeet() + 1000 > ((Airplane) obj).getMaximumHeightFeet() || this.getMaximumHeightFeet() - 1000 < ((Airplane) obj).getMaximumHeightFeet()) + return true; + return false; + } +} 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..4e479f6 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Boat.java @@ -0,0 +1,100 @@ +package school.lemon.changerequest.java.vehicles; + +/** + * Created by Yaroslav Pavlinskiy on 02.12.2016. + */ +public class Boat extends Vehicle implements IBoat { + + private boolean motorized; + + public Boat(int manufacturedYear, String make, String model, boolean motorized) { + super(manufacturedYear, make, model); + this.motorized = motorized; + } + + + @Override + public int getManufacturedYear() { + return this.manufacturedYear; + } + + @Override + public void setManufacturedYear(int year) { + this.manufacturedYear = year; + } + + @Override + public String getMake() { + return this.make; + } + + @Override + public void setMake(String make) { + this.make = make; + } + + @Override + public String getModel() { + return this.model; + } + + @Override + public void setModel(String model) { + this.model = model; + } + + @Override + public boolean isMotorized() { + return this.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 String toString() { + if (this.motorized) + return String.format("This boat is a %1$s %2$s %3$s (with motor).", this.getManufacturedYear(), this.getMake(), this.getModel()); + return String.format("This boat is a %1$s %2$s %3$s.", this.getManufacturedYear(), this.getMake(), this.getModel()); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + if (this == obj) + return true; + if (!(obj instanceof Boat)) + return false; + obj = (Boat) obj; + if (this.motorized != ((Boat) obj).motorized) + return false; + else + return true; + } + + public int compareTo(Object obj) { + obj = (Boat) obj; + int result = obj.toString().compareTo(this.toString()); + return result; + + } + +} 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..fbddf6a --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Car.java @@ -0,0 +1,90 @@ +package school.lemon.changerequest.java.vehicles; + +/** + * Created by Yaroslav Pavlinskiy on 02.12.2016. + */ +public class Car extends Vehicle implements ICar { + + private int horespower; + + public Car(int manufacturedYear, String make, String model, int horespower) { + super(manufacturedYear, make, model); + this.horespower = horespower; + } + + + @Override + public int getHorsepower() { + return this.horespower; + } + + @Override + public void setHorsepower(int horsepower) { + this.horespower = horsepower; + } + + @Override + public int getManufacturedYear() { + return this.manufacturedYear; + } + + @Override + public void setManufacturedYear(int year) { + this.manufacturedYear = year; + } + + @Override + public String getMake() { + return this.make; + } + + @Override + public void setMake(String make) { + this.make = make; + } + + @Override + public String getModel() { + return this.model; + } + + @Override + public void setModel(String model) { + this.model = model; + } + + @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 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()); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + if (this == obj) + return true; + if (!(obj instanceof Car)) + return false; + obj = (Car) obj; + if (this.getHorsepower() + 10 != ((Car) obj).getHorsepower() || this.getHorsepower() - 10 != ((Car) obj).getHorsepower()) + return true; + return false; + } + +} 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..c93deb2 --- /dev/null +++ b/src/main/java/school/lemon/changerequest/java/vehicles/Vehicle.java @@ -0,0 +1,16 @@ +package school.lemon.changerequest.java.vehicles; + +/** + * Created by Yaroslav Pavlinskiy on 05.12.2016. + */ +public abstract class Vehicle { + protected int manufacturedYear; + protected String make; + protected String model; + + public Vehicle(int manufacturedYear, String make, String model) { + this.manufacturedYear = manufacturedYear; + this.make = make; + 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..ead3d21 100644 --- a/src/main/java/school/lemon/changerequest/java/vehicles/VehicleFactory.java +++ b/src/main/java/school/lemon/changerequest/java/vehicles/VehicleFactory.java @@ -7,41 +7,52 @@ private VehicleFactory() { /** * Creates car + * * @param manufacturedYear manufactured year - * @param make manufacturer - * @param model of car - * @param horsepower of car + * @param make manufacturer + * @param model of car + * @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; + } /** * Creates airplane - * @param manufacturedYear manufactured year - * @param make manufacturer - * @param model of airplane + * + * @param manufacturedYear manufactured year + * @param make manufacturer + * @param model of airplane * @param maximumHeightFeet of airplane * @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(manufacturedYear, make, model, maximumHeightFeet); + return airplane; } /** * Creates boat + * * @param manufacturedYear manufactured year - * @param make manufacturer - * @param model of boat - * @param motorized is boat motorized + * @param make manufacturer + * @param model of boat + * @param motorized is boat motorized * @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; + } + + public static void main(String[] args) { + IBoat boat = createBoat(1997, "VIS", "Aq1", true); + System.out.println(boat.getMake()); + System.out.println(boat.toString()); + } }