From 2920d9a6a6411b768284d9c8297638393a281cd4 Mon Sep 17 00:00:00 2001 From: quispepa Date: Fri, 13 Sep 2024 00:53:02 +0200 Subject: [PATCH 1/2] Commit lab 1.08 --- Week-3-Labs/.gitignore | 29 +++++++ Week-3-Labs/.idea/.gitignore | 8 ++ Week-3-Labs/.idea/misc.xml | 6 ++ Week-3-Labs/.idea/modules.xml | 8 ++ Week-3-Labs/Week-3-Labs.iml | 11 +++ Week-3-Labs/src/Main.java | 30 ++++++++ Week-3-Labs/src/interfaces/IntList.java | 6 ++ Week-3-Labs/src/objects/Car.java | 17 +++++ Week-3-Labs/src/objects/IntArrayList.java | 78 +++++++++++++++++++ Week-3-Labs/src/objects/IntVector.java | 84 +++++++++++++++++++++ Week-3-Labs/src/objects/Movie.java | 15 ++++ Week-3-Labs/src/objects/Sedan.java | 11 +++ Week-3-Labs/src/objects/Truck.java | 14 ++++ Week-3-Labs/src/objects/TvSeries.java | 16 ++++ Week-3-Labs/src/objects/UtilityVehicle.java | 14 ++++ Week-3-Labs/src/objects/Video.java | 13 ++++ Week-3-Labs/src/utils/Utils.java | 17 +++++ 17 files changed, 377 insertions(+) create mode 100644 Week-3-Labs/.gitignore create mode 100644 Week-3-Labs/.idea/.gitignore create mode 100644 Week-3-Labs/.idea/misc.xml create mode 100644 Week-3-Labs/.idea/modules.xml create mode 100644 Week-3-Labs/Week-3-Labs.iml create mode 100644 Week-3-Labs/src/Main.java create mode 100644 Week-3-Labs/src/interfaces/IntList.java create mode 100644 Week-3-Labs/src/objects/Car.java create mode 100644 Week-3-Labs/src/objects/IntArrayList.java create mode 100644 Week-3-Labs/src/objects/IntVector.java create mode 100644 Week-3-Labs/src/objects/Movie.java create mode 100644 Week-3-Labs/src/objects/Sedan.java create mode 100644 Week-3-Labs/src/objects/Truck.java create mode 100644 Week-3-Labs/src/objects/TvSeries.java create mode 100644 Week-3-Labs/src/objects/UtilityVehicle.java create mode 100644 Week-3-Labs/src/objects/Video.java create mode 100644 Week-3-Labs/src/utils/Utils.java diff --git a/Week-3-Labs/.gitignore b/Week-3-Labs/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/Week-3-Labs/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/Week-3-Labs/.idea/.gitignore b/Week-3-Labs/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/Week-3-Labs/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/Week-3-Labs/.idea/misc.xml b/Week-3-Labs/.idea/misc.xml new file mode 100644 index 0000000..6f29fee --- /dev/null +++ b/Week-3-Labs/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Week-3-Labs/.idea/modules.xml b/Week-3-Labs/.idea/modules.xml new file mode 100644 index 0000000..22121db --- /dev/null +++ b/Week-3-Labs/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Week-3-Labs/Week-3-Labs.iml b/Week-3-Labs/Week-3-Labs.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/Week-3-Labs/Week-3-Labs.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Week-3-Labs/src/Main.java b/Week-3-Labs/src/Main.java new file mode 100644 index 0000000..1b84a00 --- /dev/null +++ b/Week-3-Labs/src/Main.java @@ -0,0 +1,30 @@ +import objects.*; +import utils.Utils; + +import java.math.BigDecimal; + +public class Main { + public static void main(String[] args) { + IntArrayList intArrayList = new IntArrayList(); + IntVector intVector = new IntVector(); + + intVector.add(5); + } + + public static void vehicleInventory(){ + Sedan sedan = new Sedan("54239869", "Toyota", "Corolla", 15000); + Truck truck = new Truck("23452656", "Iveco", "2020", 43000, 2145.2); + UtilityVehicle utilityVehicle = new UtilityVehicle("3457567", "Citroen", "C4", 10000, true); + sedan.getInfo(); + truck.getInfo(); + utilityVehicle.getInfo(); + } + public static void videoStreaming(){ + TvSeries tvSeries = new TvSeries("Sex in the city", 120, 12); + Movie movie = new Movie("Titanic", 125, 7.5); + tvSeries.getInfo(); + movie.getInfo(); + } + + +} \ No newline at end of file diff --git a/Week-3-Labs/src/interfaces/IntList.java b/Week-3-Labs/src/interfaces/IntList.java new file mode 100644 index 0000000..8b21dc8 --- /dev/null +++ b/Week-3-Labs/src/interfaces/IntList.java @@ -0,0 +1,6 @@ +package interfaces; + +public interface IntList { + void add(int number); + void get(int id); +} diff --git a/Week-3-Labs/src/objects/Car.java b/Week-3-Labs/src/objects/Car.java new file mode 100644 index 0000000..d34d033 --- /dev/null +++ b/Week-3-Labs/src/objects/Car.java @@ -0,0 +1,17 @@ +package objects; + +public abstract class Car { + protected String vinNumber; + protected String make; + protected String model; + protected int mileage; + + public abstract void getInfo(); + + public Car(String vinNumber, String make, String model, int mileage) { + this.vinNumber = vinNumber; + this.make = make; + this.model = model; + this.mileage = mileage; + } +} diff --git a/Week-3-Labs/src/objects/IntArrayList.java b/Week-3-Labs/src/objects/IntArrayList.java new file mode 100644 index 0000000..715bb5e --- /dev/null +++ b/Week-3-Labs/src/objects/IntArrayList.java @@ -0,0 +1,78 @@ +package objects; + +import interfaces.IntList; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class IntArrayList implements IntList { + private boolean newArrayIsCreated = false; + //private int[] intArray = new int[10]; + int[] newArrayBigger; + private int[] intArray = {3,5,6,2,4,5,1,2,5,8}; + + @Override + public void add(int number) { + if (isFull(intArray)){ + cloneAndIncreaseSize(intArray, number); + for (int i : newArrayBigger){ + System.out.println( "Value: "+i); + } + }else { + for (int i = 0; i < intArray.length; i++) { + if (intArray[i]==0){ + intArray[i] = number; + i = intArray.length; + System.out.println("Index: " + i +" Is empty. New value:" + intArray[i] + ". "); + }else { + System.out.println("Index: " + i +" Value:" + intArray[i]); + } + } + } + } + + @Override + public void get(int id) { + if (newArrayIsCreated){ + if (newArrayBigger[id] == 0){ + System.out.println("Index "+ id + " is empty."); + }else { + System.out.println("Id: " + id + " Value: " + newArrayBigger[id]); + } + }else { + if (intArray[id] == 0){ + System.out.println("Index "+ id + " is empty."); + }else { + System.out.println("Id: " + id + " Value: " + intArray[id]); + } + } + + } + + + public boolean isFull(int[] array) { + for (int j : array) { + //Default value is 0 so its like be empty + if (j == 0) { + return false; + } + } + return true; + } + + public void cloneAndIncreaseSize(int[] intArray, int newValue){ + BigDecimal divisor = new BigDecimal(2); + BigDecimal actualSize = new BigDecimal(intArray.length); + actualSize = actualSize.divide(divisor, RoundingMode.HALF_UP); + int newSize = actualSize.intValue(); + newArrayBigger = new int[intArray.length + newSize]; + System.arraycopy(intArray,0,newArrayBigger, 0, intArray.length); + for (int i = 0; i < newArrayBigger.length; i++) { + if (newArrayBigger[i] == 0){ + newArrayBigger[i] = newValue; + i = newArrayBigger.length; + } + } + newArrayIsCreated = true; + } +} diff --git a/Week-3-Labs/src/objects/IntVector.java b/Week-3-Labs/src/objects/IntVector.java new file mode 100644 index 0000000..0c53575 --- /dev/null +++ b/Week-3-Labs/src/objects/IntVector.java @@ -0,0 +1,84 @@ +package objects; + +import interfaces.IntList; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class IntVector implements IntList { + + private boolean newArrayIsCreated = false; + private int[] intArray = new int[2]; + int[] newArrayBigger; + //private int[] intArray = {3,5, 4, 4, 7, 2}; + + + @Override + public void add(int number) { + if (isFull(intArray)){ + cloneAndIncreaseSize(intArray, number); + for (int i : newArrayBigger){ + System.out.println( "Value: "+i); + } + }else { + addingValueWithoutIncreaseSize(number); + for (int i : intArray){ + System.out.println("Value: "+i); + } + } + } + + public void addingValueWithoutIncreaseSize(int number){ + for (int i = 0; i < intArray.length; i++) { + if (intArray[i]==0){ + intArray[i] = number; + System.out.println("Index: " + i +" Is empty. New value:" + intArray[i] + ". "); + i = intArray.length; + }else { + System.out.println("Index: " + i +" Value:" + intArray[i]); + } + } + } + + @Override + public void get(int id) { + if (newArrayIsCreated){ + if (newArrayBigger[id] == 0){ + System.out.println("Index "+ id + " is empty."); + }else { + System.out.println("Id: " + id + " Value: " + newArrayBigger[id]); + } + }else { + if (intArray[id] == 0){ + System.out.println("Index "+ id + " is empty."); + }else { + System.out.println("Id: " + id + " Value: " + intArray[id]); + } + } + } + public boolean isFull(int[] array) { + for (int j : array) { + //Default value is 0 so its like be empty + if (j == 0) { + return false; + } + } + return true; + } + + public void cloneAndIncreaseSize(int[] intArray, int newValue){ + int multiple = 2; + int actualSize = intArray.length; + actualSize = actualSize * multiple; + int newSize = actualSize; + newArrayBigger = new int[newSize]; + System.arraycopy(intArray,0,newArrayBigger, 0, intArray.length); + for (int i = 0; i < newArrayBigger.length; i++) + if (newArrayBigger[i] == 0) { + newArrayBigger[i] = newValue; + i = newArrayBigger.length; + } + newArrayIsCreated = true; + } + +} diff --git a/Week-3-Labs/src/objects/Movie.java b/Week-3-Labs/src/objects/Movie.java new file mode 100644 index 0000000..e84008d --- /dev/null +++ b/Week-3-Labs/src/objects/Movie.java @@ -0,0 +1,15 @@ +package objects; + +public class Movie extends Video { + protected double rating; + + public Movie(String title, int duration, double rating) { + super(title, duration); + this.rating = rating; + } + + @Override + public void getInfo() { + System.out.println("Movie{" + "rating=" + rating + ", title='" + title + '\'' + ", duration=" + duration + '}'); + } +} diff --git a/Week-3-Labs/src/objects/Sedan.java b/Week-3-Labs/src/objects/Sedan.java new file mode 100644 index 0000000..a244875 --- /dev/null +++ b/Week-3-Labs/src/objects/Sedan.java @@ -0,0 +1,11 @@ +package objects; + +public class Sedan extends Car{ + public Sedan(String vinNumber, String make, String model, int mileage) { + super(vinNumber, make, model, mileage); + } + @Override + public void getInfo() { + System.out.println("Vehicle: Sedan\nVinNumber= " + this.vinNumber + "\nMake= " + this.make + "\nModel: " + this.model + "\nMileage: " + this.mileage ); + } +} diff --git a/Week-3-Labs/src/objects/Truck.java b/Week-3-Labs/src/objects/Truck.java new file mode 100644 index 0000000..bde8bc9 --- /dev/null +++ b/Week-3-Labs/src/objects/Truck.java @@ -0,0 +1,14 @@ +package objects; + +public class Truck extends Car{ + protected double towingCapacity; + public Truck(String vinNumber, String make, String model, int mileage, double towingCapacity) { + super(vinNumber, make, model, mileage); + this.towingCapacity = towingCapacity; + } + + @Override + public void getInfo() { + System.out.println("Vehicle: Sedan\nVinNumber= " + this.vinNumber + "\nmake= " + this.make + "\nModel: " + this.model + "\nMileage: " + this.mileage + "\nBound capacity: "+ this.towingCapacity); + } +} diff --git a/Week-3-Labs/src/objects/TvSeries.java b/Week-3-Labs/src/objects/TvSeries.java new file mode 100644 index 0000000..1407cc6 --- /dev/null +++ b/Week-3-Labs/src/objects/TvSeries.java @@ -0,0 +1,16 @@ +package objects; + +public class TvSeries extends Video { + protected int episodes; + + public TvSeries(String title, int duration, int episodes) { + super(title, duration); + this.episodes = episodes; + } + + @Override + public void getInfo() { + System.out.println("TvSeries{" + "episodes=" + episodes + ", title='" + title + '\'' + ", duration=" + duration + '}'); + } + +} diff --git a/Week-3-Labs/src/objects/UtilityVehicle.java b/Week-3-Labs/src/objects/UtilityVehicle.java new file mode 100644 index 0000000..4e2a973 --- /dev/null +++ b/Week-3-Labs/src/objects/UtilityVehicle.java @@ -0,0 +1,14 @@ +package objects; + +public class UtilityVehicle extends Car{ + protected boolean fourWheelDrive; + public UtilityVehicle(String vinNumber, String make, String model, int mileage, boolean fourWheelDrive) { + super(vinNumber, make, model, mileage); + this.fourWheelDrive = fourWheelDrive; + } + + @Override + public void getInfo() { + System.out.println("Vehicle: Sedan\nVinNumber= " + this.vinNumber + "\nMake= " + this.make + "\nModel: " + this.model + "\nMileage: " + this.mileage + "\nFour wheel drive: "+ this.fourWheelDrive); + } +} diff --git a/Week-3-Labs/src/objects/Video.java b/Week-3-Labs/src/objects/Video.java new file mode 100644 index 0000000..60dba72 --- /dev/null +++ b/Week-3-Labs/src/objects/Video.java @@ -0,0 +1,13 @@ +package objects; + +public abstract class Video { + protected String title; + protected int duration; + + public Video(String title, int duration) { + this.title = title; + this.duration = duration; + } + + public abstract void getInfo(); +} diff --git a/Week-3-Labs/src/utils/Utils.java b/Week-3-Labs/src/utils/Utils.java new file mode 100644 index 0000000..d2df5cd --- /dev/null +++ b/Week-3-Labs/src/utils/Utils.java @@ -0,0 +1,17 @@ +package utils; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class Utils { + public static double retrieveFormattedDecimal(BigDecimal number){ + return number.setScale(2, RoundingMode.HALF_UP).doubleValue(); + } + public static double retrieveNumberChangedSingnum(BigDecimal number){ + return number.setScale(1, RoundingMode.HALF_UP).negate().doubleValue(); + } + + public static int retrieveFormatToInt(BigDecimal number){ + return number.setScale(0,RoundingMode.HALF_UP).intValue(); + } +} From 948fda5f6654c1c71807f01a5ce79f5522a8b886 Mon Sep 17 00:00:00 2001 From: quispepa Date: Fri, 13 Sep 2024 00:53:50 +0200 Subject: [PATCH 2/2] Commit readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 82afa88..8a617d9 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,11 @@ Una vez que termines la tarea, envía un enlace URL a tu repositorio o tu solici - `get (int id)`: un método que recupera un elemento por su ID 2. Crea dos implementaciones de `IntList`: `IntArrayList` y `IntVector`. 3. `IntArrayList` debe almacenar números en un array con una longitud de 10 por defecto. Cuando se llama al método `add`, primero debes determinar si el array está lleno. Si lo está, crea un nuevo array que sea el 50% más grande, mueve todos los elementos al nuevo array y agregue el nuevo elemento. (Por ejemplo, un array de longitud 10 aumentaría a 15). +IntArrayList será más eficiente cuando sabemos que la obtención de datos será de manera lenta y controlado, ya que así malgastamos menos espacio en memoria. + 4. `IntVector` debe almacenar números en un arreglo con una longitud de 20 por defecto. Cuando se llama al método `add`, primero debes determinar si el array está lleno. Si lo está, crea un nuevo array que sea el doble del tamaño del array actual, mueve todos los elementos al nuevo array y agrega el nuevo elemento. (Por ejemplo, un array de longitud 10 aumentaría a 20). +IntVector será más eficiente si la cantidad de datos que tenemos es muy alta ya que nos ahorramos tiempo de ejecución añadiendo muchos datos en una sola pasada, en vez de estar repitiendolo poco a poco. + 5. En su `README.md`, incluye un ejemplo de cuándo `IntArrayList` sería más eficiente y cuándo `IntVector` sería más eficiente.