diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..ab1f416
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,10 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Ignored default folder with query files
+/queries/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/lab-java-interfaces-and-abstract-classes.iml b/.idea/lab-java-interfaces-and-abstract-classes.iml
new file mode 100644
index 0000000..c75e89b
--- /dev/null
+++ b/.idea/lab-java-interfaces-and-abstract-classes.iml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..3653b1f
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..ff55171
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java/com/practice2/BigDecimalUtils.java b/java/com/practice2/BigDecimalUtils.java
new file mode 100644
index 0000000..1368ef1
--- /dev/null
+++ b/java/com/practice2/BigDecimalUtils.java
@@ -0,0 +1,18 @@
+package com.practice2;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+public class BigDecimalUtils {
+
+ public static double round(BigDecimal number) {
+ return number.setScale(2, RoundingMode.HALF_UP).doubleValue();
+ }
+
+ public static double changeSign(BigDecimal number) {
+ return number
+ .negate()
+ .setScale(1, RoundingMode.HALF_UP)
+ .doubleValue();
+ }
+}
\ No newline at end of file
diff --git a/java/com/practice2/Main.java b/java/com/practice2/Main.java
new file mode 100644
index 0000000..d9e969e
--- /dev/null
+++ b/java/com/practice2/Main.java
@@ -0,0 +1,24 @@
+package com.practice2;
+import com.practice2.list.IntArrayList;
+import java.math.BigDecimal;
+
+public class Main {
+ public static void main(String[]args){
+
+ IntArrayList list = new IntArrayList();
+ list.add(10);
+ list.add(20);
+ list.add(30);
+
+ System.out.println(list.get(0));
+ System.out.println(list.get(1));
+ System.out.println(list.get(2));
+
+ BigDecimal num = new BigDecimal("4.2545");
+
+ System.out.println(BigDecimalUtils.round(num));
+ System.out.println(BigDecimalUtils.changeSign(num));
+
+ }
+
+}
diff --git a/java/com/practice2/cars/Car.java b/java/com/practice2/cars/Car.java
new file mode 100644
index 0000000..510bc90
--- /dev/null
+++ b/java/com/practice2/cars/Car.java
@@ -0,0 +1,22 @@
+package com.practice2.cars;
+
+public abstract class Car {
+ private String vinNumber;
+ private String make;
+ private String model;
+ private int mileage;
+
+ public Car(String vinNumber, String make, String model, int mileage) {
+ this.vinNumber = vinNumber;
+ this.make = make;
+ this.model = model;
+ this.mileage = mileage;
+ }
+ public String getInfo() {
+ return "VIN :" + vinNumber +
+ ",MAKE :" + make +
+ ",MODEL :" + model +
+ ",MILEAGE :" + mileage;
+
+ }
+}
diff --git a/java/com/practice2/cars/Sedan.java b/java/com/practice2/cars/Sedan.java
new file mode 100644
index 0000000..b06f495
--- /dev/null
+++ b/java/com/practice2/cars/Sedan.java
@@ -0,0 +1,8 @@
+package com.practice2.cars;
+
+public class Sedan extends Car {
+
+ public Sedan(String vinNumber, String make, String model, int mileage) {
+ super(vinNumber, make, model, mileage);
+ }
+}
\ No newline at end of file
diff --git a/java/com/practice2/cars/Truck.java b/java/com/practice2/cars/Truck.java
new file mode 100644
index 0000000..6d4dd42
--- /dev/null
+++ b/java/com/practice2/cars/Truck.java
@@ -0,0 +1,11 @@
+package com.practice2.cars;
+
+public class Truck extends Car {
+ private double towingCapacity;
+
+ public Truck(String vinNumber, String make, String model, int mileage, double towingCapacity) {
+ super(vinNumber, make, model, mileage);
+ this.towingCapacity = towingCapacity;
+
+ }
+}
\ No newline at end of file
diff --git a/java/com/practice2/cars/UtilityVehicle.java b/java/com/practice2/cars/UtilityVehicle.java
new file mode 100644
index 0000000..535c3fd
--- /dev/null
+++ b/java/com/practice2/cars/UtilityVehicle.java
@@ -0,0 +1,10 @@
+package com.practice2.cars;
+
+public class UtilityVehicle extends Car{
+ private boolean fourWheelDrive;
+
+ public UtilityVehicle(String vinNumber, String make, String model, int mileage, boolean fourWheelDrive) {
+ super(vinNumber, make, model, mileage);
+ this.fourWheelDrive = fourWheelDrive;
+ }
+}
diff --git a/java/com/practice2/list/IntArrayList.java b/java/com/practice2/list/IntArrayList.java
new file mode 100644
index 0000000..de3e3c1
--- /dev/null
+++ b/java/com/practice2/list/IntArrayList.java
@@ -0,0 +1,23 @@
+package com.practice2.list;
+public class IntArrayList implements IntList{
+
+ private int[] numbers = new int[10];
+ private int size = 0;
+
+ @Override
+ public void add(int number){
+ if (size == numbers.length){
+ int newSize = numbers.length + (numbers.length / 2);
+ int [] newArray = new int [newSize];
+ System.arraycopy(numbers, 0, newArray, 0, size);
+ numbers = newArray;
+ }
+ numbers[size] = number;
+ size++;
+ }
+
+ @Override
+ public int get(int id){
+ return numbers[id];
+ }
+}
diff --git a/java/com/practice2/list/IntList.java b/java/com/practice2/list/IntList.java
new file mode 100644
index 0000000..5e80a53
--- /dev/null
+++ b/java/com/practice2/list/IntList.java
@@ -0,0 +1,7 @@
+package com.practice2.list;
+
+public interface IntList {
+ void add(int number);
+ int get(int id);
+
+}
diff --git a/java/com/practice2/list/IntVector.java b/java/com/practice2/list/IntVector.java
new file mode 100644
index 0000000..44f73c4
--- /dev/null
+++ b/java/com/practice2/list/IntVector.java
@@ -0,0 +1,27 @@
+package com.practice2.list;
+
+public class IntVector implements IntList{
+
+
+ private int[] numbers = new int[20];
+ private int size = 0;
+
+ @Override
+ public void add(int number) {
+ if (size == numbers.length) {
+ int newSize = numbers.length * 2;
+ int[] newArray = new int[newSize];
+
+ System.arraycopy(numbers, 0, newArray, 0, size);
+ numbers = newArray;
+ }
+
+ numbers[size] = number;
+ size++;
+ }
+
+ @Override
+ public int get(int id) {
+ return numbers[id];
+ }
+}
diff --git a/java/com/practice2/video/Movie.java b/java/com/practice2/video/Movie.java
new file mode 100644
index 0000000..36e2aa6
--- /dev/null
+++ b/java/com/practice2/video/Movie.java
@@ -0,0 +1,10 @@
+package com.practice2.video;
+
+public class Movie extends Video{
+ private double rating;
+
+ public Movie (String title, int duration, double rating) {
+ super(title, duration);
+ this.rating = rating;
+ }
+}
diff --git a/java/com/practice2/video/TvSeries.java b/java/com/practice2/video/TvSeries.java
new file mode 100644
index 0000000..eda8d55
--- /dev/null
+++ b/java/com/practice2/video/TvSeries.java
@@ -0,0 +1,11 @@
+package com.practice2.video;
+
+public class TvSeries extends Video{
+ private int episodes;
+
+ public TvSeries(String title, int duration, int episodes){
+ super(title,duration);
+ this.episodes = episodes;
+ }
+
+}
diff --git a/java/com/practice2/video/Video.java b/java/com/practice2/video/Video.java
new file mode 100644
index 0000000..e09ee1d
--- /dev/null
+++ b/java/com/practice2/video/Video.java
@@ -0,0 +1,18 @@
+package com.practice2.video;
+
+public abstract class Video {
+ private String title;
+ private int duration;
+
+ public Video (String title, int duration){
+ this.title = title;
+ this.duration = duration;
+ }
+
+ public String getInfo(){
+ return "TITLE :" + title +
+ "DURATION :" + duration;
+
+ }
+
+}
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/BigDecimalUtils.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/BigDecimalUtils.class
new file mode 100644
index 0000000..275f87c
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/BigDecimalUtils.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/Main.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/Main.class
new file mode 100644
index 0000000..dc96539
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/Main.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Car.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Car.class
new file mode 100644
index 0000000..560aaf0
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Car.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Sedan.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Sedan.class
new file mode 100644
index 0000000..31c4289
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Sedan.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Truck.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Truck.class
new file mode 100644
index 0000000..03cbff6
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/Truck.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/UtilityVehicle.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/UtilityVehicle.class
new file mode 100644
index 0000000..7eb10d4
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/cars/UtilityVehicle.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntArrayList.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntArrayList.class
new file mode 100644
index 0000000..1850178
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntArrayList.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntList.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntList.class
new file mode 100644
index 0000000..465e8f9
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntList.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntVector.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntVector.class
new file mode 100644
index 0000000..b0aace9
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/list/IntVector.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/Movie.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/Movie.class
new file mode 100644
index 0000000..3e8d202
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/Movie.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/TvSeries.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/TvSeries.class
new file mode 100644
index 0000000..33c138a
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/TvSeries.class differ
diff --git a/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/Video.class b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/Video.class
new file mode 100644
index 0000000..95b85e9
Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes/com/practice2/video/Video.class differ