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..d6ebd48
--- /dev/null
+++ b/.idea/lab-java-interfaces-and-abstract-classes.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..20f033c
--- /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/lab-java-interfaces-and-abstract-classes/.gitignore b/lab-java-interfaces-and-abstract-classes/.gitignore
new file mode 100644
index 0000000..480bdf5
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/.gitignore
@@ -0,0 +1,39 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+.kotlin
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/lab-java-interfaces-and-abstract-classes/.idea/.gitignore b/lab-java-interfaces-and-abstract-classes/.idea/.gitignore
new file mode 100644
index 0000000..ab1f416
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/.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/lab-java-interfaces-and-abstract-classes/.idea/encodings.xml b/lab-java-interfaces-and-abstract-classes/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lab-java-interfaces-and-abstract-classes/.idea/misc.xml b/lab-java-interfaces-and-abstract-classes/.idea/misc.xml
new file mode 100644
index 0000000..fdc35ea
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lab-java-interfaces-and-abstract-classes/.idea/vcs.xml b/lab-java-interfaces-and-abstract-classes/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lab-java-interfaces-and-abstract-classes/pom.xml b/lab-java-interfaces-and-abstract-classes/pom.xml
new file mode 100644
index 0000000..8b4f86a
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+ org.example
+ lab-java-interfaces-and-abstract-classes
+ 1.0-SNAPSHOT
+
+
+ 21
+ 21
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/BigDecimalOperations.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/BigDecimalOperations.java
new file mode 100644
index 0000000..2f3c6d5
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/BigDecimalOperations.java
@@ -0,0 +1,18 @@
+package org.example;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+public class BigDecimalOperations {
+ public double roundedToTheNearestHundredth(BigDecimal number){
+ BigDecimal roundedNumber = number.setScale(2, RoundingMode.HALF_UP);
+ double doubleValue = roundedNumber.doubleValue();
+ return doubleValue;
+ }
+ public double reverseTheSignAndRoundNearestTenth(BigDecimal number){
+ BigDecimal roundedNumber = number.setScale(1, RoundingMode.HALF_UP);
+ double doubleValue = -roundedNumber.doubleValue();
+ return doubleValue;
+ }
+
+
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Car.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Car.java
new file mode 100644
index 0000000..0b06212
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Car.java
@@ -0,0 +1,45 @@
+package org.example;
+
+public abstract class Car {
+ protected String vinNumber;
+ protected String make;
+ protected String model;
+ protected int milage;
+
+ public Car(String vinNumber, String make, String model, int milage) {
+ this.vinNumber = vinNumber;
+ this.make = make;
+ this.model = model;
+ this.milage = milage;
+ }
+
+ public String getInfo(){
+ return "vinNumber: " + vinNumber + "\nmake: " + make + "\nmodel: " + model + "\nmilage: " + milage;
+ }
+
+ public String getVinNumber(){
+ return vinNumber;
+ }
+ public String getMake(){
+ return make;
+ }
+ public String getModel(){
+ return model;
+ }
+ public int getMilage(){
+ return milage;
+ }
+
+ public void setVinNumber(String vinNumber){
+ this.vinNumber = vinNumber;
+ }
+ public void setMake(String make){
+ this.make = make;
+ }
+ public void setModel(String model){
+ this.model = model;
+ }
+ public void setMilage(int milage){
+ this.milage = milage;
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntArrayList.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntArrayList.java
new file mode 100644
index 0000000..b130758
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntArrayList.java
@@ -0,0 +1,39 @@
+package org.example;
+
+import java.sql.Array;
+import java.util.ArrayList;
+
+public class IntArrayList implements IntList{
+ private int[] data;
+ private int size;
+
+ public IntArrayList() {
+ data = new int[10];
+ size = 0;
+ }
+
+ @Override
+ public void add(int number) {
+ if (size == data.length) {
+ int newCapacity = data.length + data.length / 2;
+ int[] newData = new int[newCapacity];
+
+ for (int i = 0; i < data.length; i++) {
+ newData[i] = data[i];
+ }
+
+ data = newData;
+ }
+
+ data[size] = number;
+ size++;
+ }
+
+ @Override
+ public int get(int id) {
+ if (id < 0 || id >= size) {
+ throw new IndexOutOfBoundsException("Invalid index");
+ }
+ return data[id];
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntList.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntList.java
new file mode 100644
index 0000000..b79d2d0
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntList.java
@@ -0,0 +1,6 @@
+package org.example;
+
+public interface IntList {
+ void add(int number);
+ int get(int id);
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntVector.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntVector.java
new file mode 100644
index 0000000..bfbf751
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/IntVector.java
@@ -0,0 +1,36 @@
+package org.example;
+
+public class VectorList implements IntList{
+ private int[] data;
+ private int size;
+
+ public IntVector() {
+ data = new int[20];
+ size = 0;
+ }
+
+ @Override
+ public void add(int number) {
+ if (size == data.length) {
+ int newCapacity = data.length * 2;
+ int[] newData = new int[newCapacity];
+
+ for (int i = 0; i < data.length; i++) {
+ newData[i] = data[i];
+ }
+
+ data = newData;
+ }
+
+ data[size] = number;
+ size++;
+ }
+
+ @Override
+ public int get(int id) {
+ if (id < 0 || id >= size) {
+ throw new IndexOutOfBoundsException("Invalid index");
+ }
+ return data[id];
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Main.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Main.java
new file mode 100644
index 0000000..4aec2ce
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Main.java
@@ -0,0 +1,30 @@
+package org.example;
+import java.math.BigDecimal;
+
+public class Main {
+ public static void main(String[] args) {
+ BigDecimalOperations operations = new BigDecimalOperations();
+ BigDecimal number = new BigDecimal(34.4564);
+ double result1 = operations.roundedToTheNearestHundredth(number);
+ double result2 = operations.reverseTheSignAndRoundNearestTenth(number);
+
+ System.out.println("Rounded to the nearest hundredth: " + result1 + "\nReverse the sign and rounded to nearest tenth: " + result2);
+
+ Truck truck = new Truck("VIN123321123213231", "Truck make", "Truck model", 323232,500);
+ Sedan sedan = new Sedan("VIN123346656476761", "Sedan make", "Sedan model", 23122);
+ UtilityVehicle utilityVehicle = new UtilityVehicle("VIN1324343346656476761", "Utility Vehicle make", "Utility Vehicle model", 2000, true);
+
+ System.out.println("\n" + truck.getInfo());
+ System.out.println("\n" + sedan.getInfo());
+ System.out.println("\n" + utilityVehicle.getInfo());
+
+ TvSeries tvSeries = new TvSeries("Game of Thrones", 54, 64 );
+ Movie movie = new Movie("Lord of the Rings",378,4.94);
+
+ System.out.println("\n" + tvSeries.getInfo());
+ System.out.println("\n" + movie.getInfo());
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Movie.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Movie.java
new file mode 100644
index 0000000..fe7a48d
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Movie.java
@@ -0,0 +1,15 @@
+package org.example;
+
+public class Movie extends Video {
+ private double rating;
+
+ public Movie(String title, int duration, double rating){
+ super(title, duration);
+ this.rating = rating;
+ }
+
+ @Override
+ public String getInfo(){
+ return "\nTitle: " + title + "\nDuration: " + duration + "\nRating: " + rating;
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Sedan.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Sedan.java
new file mode 100644
index 0000000..9a2d522
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Sedan.java
@@ -0,0 +1,7 @@
+package org.example;
+
+public class Sedan extends Car {
+ public Sedan(String vinNumber, String make, String model, int milage){
+ super(vinNumber, make, model, milage);
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Truck.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Truck.java
new file mode 100644
index 0000000..677b3fb
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Truck.java
@@ -0,0 +1,15 @@
+package org.example;
+
+public class Truck extends Car {
+ private double towingCapacity;
+
+ public Truck(String vinNumber, String make, String model, int milage, double towingCapacity){
+ super(vinNumber, make, model, milage);
+ this.towingCapacity = towingCapacity;
+ }
+
+ @Override
+ public String getInfo(){
+ return "vinNumber: " + vinNumber + "\nmake: " + make + "\nmodel: " + model + "\nmilage: " + milage + "\ntowing capacity: " + towingCapacity;
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/TvSeries.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/TvSeries.java
new file mode 100644
index 0000000..a6b359c
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/TvSeries.java
@@ -0,0 +1,15 @@
+package org.example;
+
+public class TvSeries extends Video {
+ private int episodes;
+
+ public TvSeries(String title, int duration, int episodes){
+ super(title, duration);
+ this.episodes = episodes;
+ }
+
+ @Override
+ public String getInfo(){
+ return "\nTitle: " + title + "\nDuration: " + duration + "\nEpisodes: " + episodes;
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/UtilityVehicle.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/UtilityVehicle.java
new file mode 100644
index 0000000..8a0e8f1
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/UtilityVehicle.java
@@ -0,0 +1,15 @@
+package org.example;
+
+public class UtilityVehicle extends Car {
+ private boolean fourWheelDrive;
+
+ public UtilityVehicle(String vinNumber, String make, String model, int milage, boolean fourWheelDrive){
+ super(vinNumber, make, model, milage);
+ this.fourWheelDrive = fourWheelDrive;
+ }
+
+ @Override
+ public String getInfo(){
+ return "vinNumber: " + vinNumber + "\nmake: " + make + "\nmodel: " + model + "\nmilage: " + milage + "\nfour wheel drive: " + fourWheelDrive;
+ }
+}
diff --git a/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Video.java b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Video.java
new file mode 100644
index 0000000..a89dafa
--- /dev/null
+++ b/lab-java-interfaces-and-abstract-classes/src/main/java/org/example/Video.java
@@ -0,0 +1,15 @@
+package org.example;
+
+public abstract class Video {
+ protected String title;
+ protected int duration;
+
+ public Video(String title, int duration){
+ this.title = title;
+ this.duration = duration;
+ }
+
+ public String getInfo(){
+ return "\nTitle" + title + "\nDuration" + duration;
+ }
+}