diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/lab-java-interfaces-and-abstract-classes-es.iml b/.idea/lab-java-interfaces-and-abstract-classes-es.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/lab-java-interfaces-and-abstract-classes-es.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..47478b9
--- /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..5f84b10
--- /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/src/main/java/org/example/App.java b/src/main/java/org/example/App.java
new file mode 100644
index 0000000..ff1523f
--- /dev/null
+++ b/src/main/java/org/example/App.java
@@ -0,0 +1,31 @@
+package org.example;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import static org.example.BigDecimalPositiveNegative.NegativePositive;
+import static org.example.BigDecimalRounding.roundTonearestCent;
+
+public class App {
+ public static void main( String[] args ) {
+
+ BigDecimalRounding bigDecimalRounding = new BigDecimalRounding();
+
+ BigDecimal value = new BigDecimal("4.2545");
+ double roundValue = roundTonearestCent(value);
+ System.out.println(roundValue);
+
+ BigDecimal positiveNumber = new BigDecimal("1.2345");
+ System.out.println(BigDecimalPositiveNegative.NegativePositive(positiveNumber));
+
+ BigDecimal negativeNumber = new BigDecimal("-45.67");
+ System.out.println(BigDecimalPositiveNegative.NegativePositive(negativeNumber));
+
+
+
+
+
+
+
+
+ }
+}
diff --git a/src/main/java/org/example/BigDecimalPositiveNegative.java b/src/main/java/org/example/BigDecimalPositiveNegative.java
new file mode 100644
index 0000000..1d4366a
--- /dev/null
+++ b/src/main/java/org/example/BigDecimalPositiveNegative.java
@@ -0,0 +1,13 @@
+package org.example;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+public class BigDecimalPositiveNegative {
+ public static BigDecimal NegativePositive(BigDecimal value){
+ BigDecimal flippedValue = value.negate();
+ BigDecimal roundValue = flippedValue.setScale(1, RoundingMode.HALF_UP);
+
+ return roundValue;
+ }
+}
diff --git a/src/main/java/org/example/BigDecimalRounding.java b/src/main/java/org/example/BigDecimalRounding.java
new file mode 100644
index 0000000..90f1ca4
--- /dev/null
+++ b/src/main/java/org/example/BigDecimalRounding.java
@@ -0,0 +1,12 @@
+package org.example;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+public class BigDecimalRounding {
+
+ public static double roundTonearestCent(BigDecimal value){
+ BigDecimal rounded = value.setScale(2, RoundingMode.HALF_UP);
+ return rounded.doubleValue();
+ }
+}
diff --git a/src/main/java/org/example/classes/Abstract/Car.java b/src/main/java/org/example/classes/Abstract/Car.java
new file mode 100644
index 0000000..13c002c
--- /dev/null
+++ b/src/main/java/org/example/classes/Abstract/Car.java
@@ -0,0 +1,53 @@
+package org.example.classes.Abstract;
+
+public abstract class Car {
+
+ protected String vinNumber;
+ protected String make;
+ protected String model;
+ protected 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 Number: " + this.vinNumber + " Make: " + this.make + " Model: " + this.model +
+ " Mileage: " + this.mileage + " Miles";
+ }
+
+ public String getVinNumber() {
+ return vinNumber;
+ }
+
+ public void setVinNumber(String vinNumber) {
+ this.vinNumber = vinNumber;
+ }
+
+ 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;
+ }
+
+ public int getMileage() {
+ return mileage;
+ }
+
+ public void setMileage(int mileage) {
+ this.mileage = mileage;
+ }
+}
diff --git a/src/main/java/org/example/classes/Abstract/Video.java b/src/main/java/org/example/classes/Abstract/Video.java
new file mode 100644
index 0000000..f0d0050
--- /dev/null
+++ b/src/main/java/org/example/classes/Abstract/Video.java
@@ -0,0 +1,31 @@
+package org.example.classes.Abstract;
+
+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 "titulo: "+ this.title + ", Duracion: " + this.duration + " minutos";
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public int getDuration() {
+ return duration;
+ }
+
+ public void setDuration(int duration) {
+ this.duration = duration;
+ }
+}
diff --git a/src/main/java/org/example/classes/IntArrayList.java b/src/main/java/org/example/classes/IntArrayList.java
new file mode 100644
index 0000000..c63ce01
--- /dev/null
+++ b/src/main/java/org/example/classes/IntArrayList.java
@@ -0,0 +1,38 @@
+package org.example.classes;
+
+import org.example.interfaces.IntList;
+
+public class IntArrayList implements IntList {
+ private int[] numbers;
+ private int size;
+
+ public IntArrayList(){
+ this.numbers = new int[10];
+ this.size = 0;
+ }
+
+
+ @Override
+ public void add(int number) {
+ if (size == numbers.length) {
+ int newLength = numbers.length + numbers.length / 2;
+ numbers = resizeArray(numbers, newLength);
+ }
+ numbers[size++] = number;
+ }
+
+ @Override
+ public int get(int id) {
+ if(id >= 0 && id <= size){
+ return numbers[id];
+ }else {
+ throw new IndexOutOfBoundsException("Indice fuera de rango: " + id);
+ }
+ }
+
+ private int[] resizeArray(int[] original, int newLength) {
+ int[] newArray = new int[newLength];
+ System.arraycopy(original, 0, newArray, 0, original.length);
+ return newArray;
+ }
+}
diff --git a/src/main/java/org/example/classes/IntVector.java b/src/main/java/org/example/classes/IntVector.java
new file mode 100644
index 0000000..48c84e9
--- /dev/null
+++ b/src/main/java/org/example/classes/IntVector.java
@@ -0,0 +1,40 @@
+package org.example.classes;
+
+import org.example.interfaces.IntList;
+
+public class IntVector implements IntList {
+ private int[] numbers;
+ private int size;
+
+ public IntVector(int[] numbers, int size) {
+ this.numbers = new int[20];
+ this.size = 0;
+
+
+ }
+
+ @Override
+ public void add(int number) {
+ if(size == numbers.length){
+ int newLength = numbers.length * 2;
+ numbers = resizeArray(numbers, newLength);
+ }
+ numbers[size++] = number;
+ }
+
+ @Override
+ public int get(int id) {
+ if(id >= 0 && id <= size){
+ return numbers[id];
+ }else {
+ throw new IndexOutOfBoundsException("Indice fuera de rango: " + id);
+ }
+
+ }
+
+ private int[] resizeArray(int[] original, int newLength) {
+ int[] newArray = new int[newLength];
+ System.arraycopy(original, 0, newArray, 0, original.length);
+ return newArray;
+ }
+}
diff --git a/src/main/java/org/example/classes/Movie.java b/src/main/java/org/example/classes/Movie.java
new file mode 100644
index 0000000..1c4597a
--- /dev/null
+++ b/src/main/java/org/example/classes/Movie.java
@@ -0,0 +1,29 @@
+package org.example.classes;
+
+import org.example.classes.Abstract.Video;
+
+public class Movie extends Video {
+ private double rating;
+
+
+ public Movie(String title, int duration) {
+ super(title, duration);
+ }
+
+ @Override
+ public String getInfo() {
+ return super.getInfo();
+ }
+
+ public double getRating() {
+ return rating;
+ }
+
+ public void setRating(double rating) {
+ this.rating = rating;
+ }
+}
+
+
+
+
diff --git a/src/main/java/org/example/classes/Sedan.java b/src/main/java/org/example/classes/Sedan.java
new file mode 100644
index 0000000..07d5052
--- /dev/null
+++ b/src/main/java/org/example/classes/Sedan.java
@@ -0,0 +1,10 @@
+package org.example.classes;
+
+import org.example.classes.Abstract.Car;
+
+public class Sedan extends Car {
+
+ public Sedan(String vinNumber, String make, String model, int mileage) {
+ super(vinNumber, make, model, mileage);
+ }
+}
diff --git a/src/main/java/org/example/classes/Truck.java b/src/main/java/org/example/classes/Truck.java
new file mode 100644
index 0000000..360e038
--- /dev/null
+++ b/src/main/java/org/example/classes/Truck.java
@@ -0,0 +1,26 @@
+package org.example.classes;
+
+import org.example.classes.Abstract.Car;
+
+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;
+ }
+
+ @Override
+ public String getInfo() {
+ return super.getInfo() + "Towing Capacity: " + towingCapacity + " Lbs";
+ }
+
+ public double getTowingCapacity() {
+ return towingCapacity;
+ }
+
+ public void setTowingCapacity(double towingCapacity) {
+ this.towingCapacity = towingCapacity;
+ }
+}
+
diff --git a/src/main/java/org/example/classes/TvSeries.java b/src/main/java/org/example/classes/TvSeries.java
new file mode 100644
index 0000000..7674303
--- /dev/null
+++ b/src/main/java/org/example/classes/TvSeries.java
@@ -0,0 +1,24 @@
+package org.example.classes;
+
+import org.example.classes.Abstract.Video;
+
+public class TvSeries extends Video {
+ private int episodes;
+
+ public TvSeries(String title, int duration) {
+ super(title, duration);
+ }
+
+ @Override
+ public String getInfo() {
+ return super.getInfo();
+ }
+
+ public int getEpisodes() {
+ return episodes;
+ }
+
+ public void setEpisodes(int episodes) {
+ this.episodes = episodes;
+ }
+}
diff --git a/src/main/java/org/example/classes/UtilityVehicle.java b/src/main/java/org/example/classes/UtilityVehicle.java
new file mode 100644
index 0000000..e1cbe3e
--- /dev/null
+++ b/src/main/java/org/example/classes/UtilityVehicle.java
@@ -0,0 +1,24 @@
+package org.example.classes;
+
+import org.example.classes.Abstract.Car;
+
+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;
+ }
+
+ public String getInfo(){
+ return super.getInfo() + "Four-Wheel Drive " + ((fourWheelDrive) ? "yes" : "No");
+ }
+
+ public boolean isFourWheelDrive() {
+ return fourWheelDrive;
+ }
+
+ public void setFourWheelDrive(boolean fourWheelDrive) {
+ this.fourWheelDrive = fourWheelDrive;
+ }
+}
diff --git a/src/main/java/org/example/interfaces/IntList.java b/src/main/java/org/example/interfaces/IntList.java
new file mode 100644
index 0000000..11727bf
--- /dev/null
+++ b/src/main/java/org/example/interfaces/IntList.java
@@ -0,0 +1,9 @@
+package org.example.interfaces;
+
+public interface IntList {
+
+ void add( int number);
+ int get(int id);
+
+}
+
diff --git a/src/test/java/org/example/AppTest.java b/src/test/java/org/example/AppTest.java
new file mode 100644
index 0000000..d5f435d
--- /dev/null
+++ b/src/test/java/org/example/AppTest.java
@@ -0,0 +1,38 @@
+package org.example;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}