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..c90834f --- /dev/null +++ b/.idea/lab-java-interfaces-and-abstract-classes-es.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ 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/README.md b/README.md index 82afa88..103cd3f 100644 --- a/README.md +++ b/README.md @@ -1,339 +1 @@ - -![logo_ironhack_blue 7](https://user-images.githubusercontent.com/23629340/40541063-a07a0a8a-601a-11e8-91b5-2f13e4e6b441.png) - -# LAB | Java Interfaces y clases abstractas - -## Introducción - -Acabamos de aprender cómo crear e implementar interfaces, así como cómo crear y extender clases abstractas, así que ahora practiquemos un poco. - -
- -## Requisitos - -1. Haz un fork de este repositorio. -2. Clona este repositorio. -3. Añade a tu instructor y a los calificadores de la clase como colaboradores de tu repositorio. Si no estás seguro de quiénes son los calificadores de tu clase, pregunta a tu instructor o consulta la presentación del primer día. -4. En el repositorio, crea un proyecto de Java y añade el código para las siguientes tareas. - -## Entrega - -Una vez que termines la tarea, envía un enlace URL a tu repositorio o tu solicitud de extracción en el campo de abajo. - -
- -## Instrucciones - -### Operaciones BigDecimal - -1. Usando [la documentación de BigDecimal](https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html), crea un método que acepte un `BigDecimal` y devuelva un `double` del número `BigDecimal` redondeado al centésimo más cercano. Por ejemplo, `4.2545` debería devolver `4.25`. -2. Usando [la documentación de BigDecimal](https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html), crea un método que acepte un `BigDecimal`, invierte el signo (si el parámetro es positivo, el resultado debería ser negativo y viceversa), redondea el número a la décima más cercana y devuelva el resultado. Por ejemplo, `1.2345` debería devolver `-1.2` y `-45.67` debería devolver `45.7`. - -
- -### Sistema de inventario de automóviles - -1. Supongamos que estás construyendo un sistema de inventario de automóviles. Todos los automóviles tienen un `vinNumber`, `make`, `model` y `mileage`. Pero ningún automóvil es solo un automóvil cualquiera. Cada automóvil puede ser un `Sedan`, un `UtilityVehicle` o un `Truck`. -2. Crea una clase abstracta llamada `Car` y define las siguientes propiedades y comportamientos: - - `vinNumber`: una `String` que representa el número de VIN del automóvil - - `make`: una `String` que representa la marca del automóvil - - `model`: una `String` que representa el modelo del automóvil - - `mileage`: un `int` que representa el kilometraje del automóvil - - `getInfo()`: un método que devuelve una `String` que contiene todas las propiedades del automóvil en un formato legible -3. Crea tres clases que extiendan `Car`: `Sedan`, `UtilityVehicle` y `Truck`. -4. Los objetos de `UtilityVehicle` deben tener una propiedad adicional `fourWheelDrive`, un `boolean` que representa si el vehículo tiene tracción en las cuatro ruedas. -5. Los objetos de `Truck` deben tener una propiedad adicional `towingCapacity`, un `double` que representa la capacidad de remolque del camión. - -
- -### Servicio de transmisión de vídeo - -1. Supón que está construyendo un servicio de transmisión de vídeo. Todos los videos son series de televisión o películas. -2. Crea una clase abstracta llamada `Video` y define las siguientes propiedades y comportamientos: - - `title`: un `String` que representa el título del video - - `duration`: un `int` que representa la duración del video en minutos - - `getInfo()`: un método que devuelve un `String` que contiene todas las propiedades del video en un formato legible -3. Crea dos clases que extiendan `Video`: `TvSeries` y `Movie`. -4. Los objetos `TvSeries` deben tener una propiedad adicional `episodes`, un `int` que representa el número de episodios en la serie. -5. Los objetos `Movie` deben tener una propiedad adicional `rating`, un `double` que representa la calificación de la película. - -
- -### Interfaz IntList - -1. Crea una interfaz `IntList` con los siguientes métodos: - - `add (int number)`: un método que agrega un nuevo número a la lista - - `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). -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). -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. - -
- -## FAQs (Preguntas frecuentes) - -
- -
- Estoy atascado y no sé cómo resolver el problema o por dónde empezar. ¿Qué debo hacer? - - - - Si estás atascado con tu código y no sabes cómo resolver el problema o por dónde empezar, debes dar un paso atrás y tratar de formular una pregunta clara y directa sobre el problema específico que enfrentas. El proceso que seguirás al tratar de definir esta pregunta te ayudará a limitar el problema y a encontrar soluciones potenciales. - - Por ejemplo, ¿no entiendes el concepto o estás recibiendo un mensaje de error que no sabes cómo arreglar? Por lo general, es útil intentar formular el problema de la manera más clara posible, incluyendo cualquier mensaje de error que estés recibiendo. Esto puede ayudarte a comunicar el problema a otras personas y, potencialmente, a obtener ayuda de tus compañeros o recursos en línea. - - Una vez que tengas una comprensión clara del problema, deberías poder comenzar a trabajar hacia la solución. - -
- -
- -
- ¿Cómo creo un proyecto Maven en IntelliJ? - - - - Para crear un proyecto Maven en IntelliJ, puedes seguir estos pasos: - - 1. Abre IntelliJ IDEA y haz clic en el botón "Create New Project". - 2. En el diálogo "New Project", selecciona "Maven" como el sistema de compilación. - 3. Especifica el nombre del proyecto. - 4. En la sección "Project Location", especifica una ubicación donde quieres guardar tu proyecto. - 5. Selecciona la casilla de verificación "Create Git repository" para inicializar el repositorio git al crear el proyecto. - 6. Haz clic en el botón "Create" para crear el proyecto Maven. - -
- -
- -
- ¿Cómo uso "BigDecimal" en Java para manejar números decimales precisos? - - - - `BigDecimal` es una clase en Java que proporciona soporte para números decimales precisos, lo que permite realizar operaciones aritméticas con precisión arbitraria. - - Aquí hay un ejemplo de cómo usar `BigDecimal` en un programa Java: - - ```java - import java.math.BigDecimal; - - public class BigDecimalExample { - public static void main(String[] args) { - BigDecimal a = new BigDecimal("0.1"); - BigDecimal b = new BigDecimal("0.2"); - BigDecimal c = a.add(b); - System.out.println("a + b = " + c); - } - } - ``` - - En este ejemplo, se crean objetos `BigDecimal` usando la palabra clave `new` y una representación String del número decimal. Luego se utiliza el método `add` para realizar operaciones aritméticas en los objetos `BigDecimal`, proporcionando resultados precisos. - - Es importante tener en cuenta que al crear un objeto `BigDecimal`, se recomienda usar el constructor String en lugar del constructor `double`. El constructor `double` no se recomienda para crear objetos `BigDecimal` porque el tipo de datos `double` tiene una precisión limitada y puede producir resultados inesperados. - - Además del método `add`, `BigDecimal` también proporciona otras operaciones aritméticas, como `subtract`, `multiply` y `divide`, así como métodos para redondear y dar formato al número decimal. - -
- -
- -
- ¿Cómo usar "setScale()", "RoundingMode" y "negate()" en Java con "BigDecimal"? - - - - `setScale()`, `RoundingMode` y `negate()` son métodos en la clase `BigDecimal` en Java que brindan funcionalidad adicional al trabajar con números decimales precisos. - - `setScale()` se utiliza para establecer la escala de un objeto `BigDecimal`, lo que determina la cantidad de lugares decimales a mantener. Por ejemplo: - - ```java - import java.math.BigDecimal; - - public class BigDecimalExample { - public static void main(String[] args) { - BigDecimal a = new BigDecimal("1.234567"); - BigDecimal b = a.setScale(4, BigDecimal.ROUND_HALF_UP); - System.out.println("a: " + a); - System.out.println("b: " + b); - } - } - ``` - - En este ejemplo, se usa `setScale()` para establecer la escala de `a` en 4 lugares decimales y el resultado se almacena en un nuevo objeto `BigDecimal`, `b`. El argumento `ROUND_HALF_UP` especifica el modo de redondeo a usar al establecer la escala. - - `RoundingMode` es una enumeración en Java que define los diferentes modos de redondeo que se pueden usar con `BigDecimal`. Por ejemplo: - - ```java - import java.math.BigDecimal; - import java.math.RoundingMode; - - public class BigDecimalExample { - public static void main(String[] args) { - BigDecimal a = new BigDecimal("1.234567"); - BigDecimal b = a.setScale(4, RoundingMode.HALF_UP); - System.out.println("a: " + a); - System.out.println("b: " + b); - } - } - ``` - - En este ejemplo, `RoundingMode.HALF_UP` se usa como el argumento de modo de redondeo en el método `setScale()`. - - `negate()` se utiliza para negar el valor de un objeto BigDecimal, convirtiendo un valor positivo en negativo y viceversa. Por ejemplo: - - ```java - import java.math.BigDecimal; - - public class BigDecimalExample { - public static void main(String[] args) { - BigDecimal a = new BigDecimal("1.234567"); - BigDecimal b = a.negate(); - System.out.println("a: " + a); - System.out.println("b: " + b); - } - } - ``` - - En este ejemplo, se utiliza `negate()` para negar el valor de `a` y almacenar el resultado en un nuevo objeto `BigDecimal`, `b`. - -
- -
- -
- ¿Qué es una clase abstracta en Java y cómo se utiliza? - - - - Una clase abstracta en Java es una clase que no se puede instanciar y se destina a ser heredada por otras clases. Las clases abstractas pueden contener métodos abstractos, que son métodos que se declaran pero no tienen un cuerpo. - - Una clase abstracta se utiliza como una clase base para proporcionar una interfaz y una implementación común a sus subclases. Las subclases de una clase abstracta deben implementar los métodos abstractos definidos en la clase abstracta. - - Aquí hay un ejemplo de una clase abstracta en Java: - - ```java - abstract class Shape { - int x, y; - // abstract method that subclasses must implement - abstract void draw(); - } - - class Circle extends Shape { - @Override - void draw() { - System.out.println("Drawing a circle"); - } - } - - class Square extends Shape { - @Override - void draw() { - System.out.println("Drawing a square"); - } - } - ``` - - En este ejemplo, la clase `Shape` es una clase abstracta que contiene un método abstracto `draw()`. Las clases `Circle` y `Square` son subclases de Shape e implementan el método `draw()`. - - Cuando una subclase implementa los métodos abstractos de su clase abstracta, hereda las propiedades y métodos de la clase abstracta, lo que facilita la implementación de funcionalidades comunes en múltiples clases. - -
- -
- -
- ¿Cómo implemento una interfaz en Java? - - - - En Java, una interfaz es un plano que describe los métodos que una clase debe implementar. Para implementar una interfaz, es necesario crear una clase que implemente la interfaz y proporcione una implementación para cada uno de sus métodos. - - Aquí hay un ejemplo de cómo implementar una interfaz en Java: - - ```java - interface Shape { - void draw(); - } - - class Circle implements Shape { - @Override - public void draw() { - System.out.println("Drawing a circle"); - } - } - - class Square implements Shape { - @Override - public void draw() { - System.out.println("Drawing a square"); - } - } - ``` - - En este ejemplo, la interfaz `Shape` define un solo método `draw()`. Las clases `Circle` y `Square` implementan la interfaz Shape proporcionando una implementación para el método `draw()`. - - Cuando una clase implementa una interfaz, debe implementar todos los métodos definidos en la interfaz. Si una clase no implementa todos los métodos, no se compilará. Las interfaces se pueden utilizar para imponer un conjunto común de métodos en un grupo de clases, lo que facilita la escritura de código que es intercambiable entre diferentes clases que implementan la misma interfaz. - -
- -
- -
- ¿Cuál es el propósito de "System.arraycopy()" en Java y cómo lo usamos? - - - - El método `System.arraycopy()` en Java se utiliza para copiar elementos de una array a otro. Es parte de la clase `System` y proporciona una alternativa más rápida al método tradicional de bucle for para copiar arrays. El método tiene la siguiente firma: - - ```java - public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) - ``` - - Aquí hay un ejemplo de cómo puede usar `System.arraycopy()`: - - ```java - int[] sourceArray = new int[] {1, 2, 3, 4, 5}; - int[] destinationArray = new int[5]; - System.arraycopy(sourceArray, 0, destinationArray, 0, sourceArray.length); - - System.out.println(Arrays.toString(destinationArray)); - ``` - - En este ejemplo, se utiliza `System.arraycopy()` para copiar los elementos de `sourceArray` a `destinationArray`. El primer argumento `src` es el array fuente, el segundo argumento `srcPos` es la posición de inicio en el array fuente, el tercer argumento `dest` es el array destino, el cuarto argumento `destPos` es la posición de inicio en el array destino y el quinto argumento `length` es la cantidad de elementos que se deben copiar. El resultado de este ejemplo sería `[1, 2, 3, 4, 5]`. - -
- -
- -
- No puedo enviar cambios a mi repositorio. ¿Qué debo hacer? - - - - Si no puedes enviar cambios a tu repositorio, aquí hay algunos pasos que puedes seguir: - - 1. Verifica tu conexión a internet: Asegúrate de que tu conexión a internet sea estable y funcione. - 2. Verifica la URL de tu repositorio: Asegúrate de estar usando la URL correcta de tu repositorio para enviar tus cambios. - 3. Revisa tus credenciales de Git: Asegúrate de que tus credenciales de Git estén actualizadas y correctas. Puedes revisar tus credenciales usando el siguiente comando: - - ```bash - git config --list - ``` - - 4. Actualiza tu repositorio local: Antes de enviar cambios, asegúrate de que tu repositorio local esté actualizado con el repositorio remoto. Puedes actualizar tu repositorio local usando el siguiente comando: - - ```bash - git fetch origin - ``` - - 5. Revisa posibles conflictos: Si hay conflictos entre tu repositorio local y el repositorio remoto, resuélvelos antes de enviar cambios. - 6. Envía cambios: Una vez que hayas resuelto los conflictos y actualizado tu repositorio local, puedes intentar enviar cambios nuevamente usando el siguiente comando: - - ```bash - git push origin - ``` - -
+IntArrayList should be used when you want to enter few numbers into the array. If you have a big list of numbers, use intVector instead, as this type of array increases its bounds exponentially and has more capacity. \ No newline at end of file diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/Main.class b/out/production/lab-java-interfaces-and-abstract-classes-es/Main.class new file mode 100644 index 0000000..13d2f49 Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/Main.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Car.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Car.class new file mode 100644 index 0000000..d80ceba Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Car.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Sedan.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Sedan.class new file mode 100644 index 0000000..96e372a Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Sedan.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Truck.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Truck.class new file mode 100644 index 0000000..a3fa64c Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/Truck.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/UtilityVehicle.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/UtilityVehicle.class new file mode 100644 index 0000000..929f0ba Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/carInventory/UtilityVehicle.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intArrayList.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intArrayList.class new file mode 100644 index 0000000..be27cc4 Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intArrayList.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intList.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intList.class new file mode 100644 index 0000000..588090a Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intList.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intVector.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intVector.class new file mode 100644 index 0000000..71c68d3 Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/intList/intVector.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/Movie.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/Movie.class new file mode 100644 index 0000000..114f5b0 Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/Movie.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/TvSeries.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/TvSeries.class new file mode 100644 index 0000000..195d902 Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/TvSeries.class differ diff --git a/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/Video.class b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/Video.class new file mode 100644 index 0000000..ec96e74 Binary files /dev/null and b/out/production/lab-java-interfaces-and-abstract-classes-es/classes/videoService/Video.class differ diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..f0315a4 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,118 @@ +import classes.videoService.*; +import classes.carInventory.*; +import classes.intList.*; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class Main { + public static void main(String[] args) { + BigDecimal number1 = new BigDecimal("3865.38537856736"); + System.out.println("Number " + number1 + " is rounded to " + roundToHundredth(number1)); + System.out.println("Number inverted: " + invertNumber(number1) + "\n"); + + Car car1 = new Sedan("4859HND", "L497397GS", 490); + Car car2 = new Truck("9583GHD", "Subaru", "583784W45B", 600, 2500); + Car car3 = new UtilityVehicle("9583GHD", "Subaru", "583784W45B", 600, false); + + System.out.println(car1.getInfo()); + System.out.println(car2.getInfo()); + System.out.println(car3.getInfo()); + + Video video1 = new Movie("Life of Pi", 25347870, 6.7); + Video video2 = new TvSeries("The Simpsons", 36000, 4500); + + System.out.println(video1.getInfo()); + System.out.println(video2.getInfo()); + + intList intArray1 = new intArrayList(); + intList intVector1 = new intVector(); + + intArray1.add(4); + intArray1.add(1); + intArray1.add(2); + intArray1.add(3); + intArray1.add(6); + intArray1.add(89); + intArray1.add(0); + intArray1.add(40); + intArray1.add(3); + intArray1.add(23); + intArray1.add(76); + intArray1.add(18); + + intArray1.get(0); + intArray1.get(1); + intArray1.get(2); + intArray1.get(3); + intArray1.get(4); + intArray1.get(5); + intArray1.get(6); + intArray1.get(7); + intArray1.get(8); + intArray1.get(9); + intArray1.get(10); + intArray1.get(11); + intArray1.get(12); // Empty index == 0 + + intVector1.add(45); + intVector1.add(34); + intVector1.add(68); + intVector1.add(3); + intVector1.add(57); + intVector1.add(8); + intVector1.add(0); + intVector1.add(0); + intVector1.add(0); + intVector1.add(34); + intVector1.add(28); + intVector1.add(24); + intVector1.add(245); + intVector1.add(247); + intVector1.add(2); + intVector1.add(13); + intVector1.add(-8); + intVector1.add(6); + intVector1.add(54); + intVector1.add(6); + intVector1.add(16); + + intVector1.get(0); + intVector1.get(1); + intVector1.get(2); + intVector1.get(3); + intVector1.get(4); + intVector1.get(5); + intVector1.get(6); + intVector1.get(7); + intVector1.get(8); + intVector1.get(9); + intVector1.get(10); + intVector1.get(11); + intVector1.get(12); + intVector1.get(13); + intVector1.get(14); + intVector1.get(15); + intVector1.get(16); + intVector1.get(17); + intVector1.get(18); + intVector1.get(19); + intVector1.get(20); + intVector1.get(21); // Last four indexes are empty == 0 + intVector1.get(22); + intVector1.get(23); + intVector1.get(24); + } + + public static double roundToHundredth(BigDecimal number) { + BigDecimal roundedNumber = number.setScale(2, RoundingMode.HALF_UP); + return roundedNumber.doubleValue(); + } + + public static double invertNumber(BigDecimal number) { + BigDecimal roundedNumber = number.setScale(1, RoundingMode.HALF_UP).negate(); + return roundedNumber.doubleValue(); + } + + +} diff --git a/src/classes/carInventory/Car.java b/src/classes/carInventory/Car.java new file mode 100644 index 0000000..74cf080 --- /dev/null +++ b/src/classes/carInventory/Car.java @@ -0,0 +1,52 @@ +package classes.carInventory; + +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) { + setVinNumber(vinNumber); + setMake(make); + setModel(model); + setMileage(mileage); + } + + 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; + } + + public String getInfo() { + return "Car Information:\nVin number: " + getVinNumber() + "\nMake: " + getMake() + + "\nModel: " + getModel() + "\nMileage: " + getMileage() + "\n-------------------\n"; + } +} diff --git a/src/classes/carInventory/Sedan.java b/src/classes/carInventory/Sedan.java new file mode 100644 index 0000000..5500426 --- /dev/null +++ b/src/classes/carInventory/Sedan.java @@ -0,0 +1,9 @@ +package classes.carInventory; + +public class Sedan extends Car { + + public Sedan(String vinNumber, String model, int mileage) { + super(vinNumber, "Sedan", model, mileage); + } + +} diff --git a/src/classes/carInventory/Truck.java b/src/classes/carInventory/Truck.java new file mode 100644 index 0000000..3cb049b --- /dev/null +++ b/src/classes/carInventory/Truck.java @@ -0,0 +1,30 @@ +package classes.carInventory; + +public class Truck extends Car { + private double towingCapacity; + + public Truck(String vinNumber, String make, String model, int mileage) { + super(vinNumber, make, model, mileage); + towingCapacity = 1000; + } + + public Truck(String vinNumber, String make, String model, int mileage, double towingCapacity) { + super(vinNumber, make, model, mileage); + setTowingCapacity(towingCapacity); + } + + public double getTowingCapacity() { + return towingCapacity; + } + + public void setTowingCapacity(double towingCapacity) { + this.towingCapacity = towingCapacity; + } + + @Override + public String getInfo() { + return "Truck Information:\nVin number: " + getVinNumber() + "\nMake: " + getMake() + + "\nModel: " + getModel() + "\nMileage: " + getMileage() + "\nTowing Capacity: " + + getTowingCapacity() + "\n-------------------\n"; + } +} diff --git a/src/classes/carInventory/UtilityVehicle.java b/src/classes/carInventory/UtilityVehicle.java new file mode 100644 index 0000000..167ff58 --- /dev/null +++ b/src/classes/carInventory/UtilityVehicle.java @@ -0,0 +1,30 @@ +package classes.carInventory; + +public class UtilityVehicle extends Car { + private boolean fourWheelDrive; + + public UtilityVehicle(String vinNumber, String make, String model, int mileage) { + super(vinNumber, make, model, mileage); + this.fourWheelDrive = false; + } + + public UtilityVehicle(String vinNumber, String make, String model, int mileage, boolean fourWheelDrive) { + super(vinNumber, make, model, mileage); + setFourWheelDrive(fourWheelDrive); + } + + public boolean isFourWheelDrive() { + return fourWheelDrive; + } + + public void setFourWheelDrive(boolean fourWheelDrive) { + this.fourWheelDrive = fourWheelDrive; + } + + @Override + public String getInfo() { + return "Utility Vehicle Information:\nVin number: " + getVinNumber() + "\nMake: " + getMake() + + "\nModel: " + getModel() + "\nMileage: " + getMileage() + "\nIs Four Wheel Drive?: " + + isFourWheelDrive() + "\n-------------------\n"; + } +} diff --git a/src/classes/intList/intArrayList.java b/src/classes/intList/intArrayList.java new file mode 100644 index 0000000..7418dd5 --- /dev/null +++ b/src/classes/intList/intArrayList.java @@ -0,0 +1,72 @@ +package classes.intList; + +public class intArrayList implements intList { + private int arrayLength; + private int[] intArray; + private int usedIndex; + + public intArrayList() { + setArrayLength(10); + intArray = new int[arrayLength]; + setUsedIndex(0); + } + + public int getArrayLength() { + return arrayLength; + } + + public void setArrayLength(int arrayLength) { + this.arrayLength = arrayLength; + } + + public int[] getIntArray() { + return intArray; + } + + public void setIntArray(int[] intArray) { + this.intArray = intArray; + } + + public int getUsedIndex() { + return usedIndex; + } + + public void setUsedIndex(int usedIndex) { + this.usedIndex = usedIndex; + } + + @Override + public void add(int number) { + int oldLength = intArray.length; + for (int i = usedIndex; i <= oldLength; i++) { + if (i == arrayLength) { + int newLength = arrayLength + (arrayLength / 2); + setArrayLength(newLength); + int[] newIntArray = new int[newLength]; + for (int x = 0; x < oldLength; x++) { + newIntArray[x] = intArray[x]; + if (x == (oldLength - 1)) { + newIntArray[x+1] = number; + } + } + setIntArray(newIntArray); + usedIndex++; + } + else { + intArray[i] = number; + usedIndex++; + break; + } + } + } + + @Override + public void get(int id) { + if (id < arrayLength && id >= 0) { + System.out.println("The number in the array is " + intArray[id]); + } + else { + System.out.println("Index out of bounds."); + } + } +} diff --git a/src/classes/intList/intList.java b/src/classes/intList/intList.java new file mode 100644 index 0000000..ed365b7 --- /dev/null +++ b/src/classes/intList/intList.java @@ -0,0 +1,6 @@ +package classes.intList; + +public interface intList { + void add(int number); + void get(int id); +} diff --git a/src/classes/intList/intVector.java b/src/classes/intList/intVector.java new file mode 100644 index 0000000..957910d --- /dev/null +++ b/src/classes/intList/intVector.java @@ -0,0 +1,72 @@ +package classes.intList; + +public class intVector implements intList { + private int vectorLength; + private int[] intVector; + private int usedIndex; + + public intVector() { + setVectorLength(20); + intVector = new int[vectorLength]; + setUsedIndex(0); + } + + public int getVectorLength() { + return vectorLength; + } + + public void setVectorLength(int vectorLength) { + this.vectorLength = vectorLength; + } + + public int[] getIntVector() { + return intVector; + } + + public void setIntVector(int[] intVector) { + this.intVector = intVector; + } + + public int getUsedIndex() { + return usedIndex; + } + + public void setUsedIndex(int usedIndex) { + this.usedIndex = usedIndex; + } + + @Override + public void add(int number) { + int oldLength = intVector.length; + for (int i = usedIndex; i <= oldLength; i++) { + if (i == vectorLength) { + int newLength = vectorLength * 2; + setVectorLength(newLength); + int[] newIntArray = new int[newLength]; + for (int x = 0; x < oldLength; x++) { + newIntArray[x] = intVector[x]; + if (x == (oldLength - 1)) { + newIntArray[x+1] = number; + } + } + setIntVector(newIntArray); + usedIndex++; + } + else { + intVector[i] = number; + usedIndex++; + break; + } + } + } + + @Override + public void get(int id) { + if (id < vectorLength && id >= 0) { + System.out.println("The number in the vector is " + intVector[id]); + } + else { + System.out.println("Index out of bounds."); + } + } +} diff --git a/src/classes/videoService/Movie.java b/src/classes/videoService/Movie.java new file mode 100644 index 0000000..aa58ace --- /dev/null +++ b/src/classes/videoService/Movie.java @@ -0,0 +1,28 @@ +package classes.videoService; + +public class Movie extends Video { + private double rating; + + public Movie(String title, int duration, double rating) { + super(title, duration); + setRating(rating); + } + + public double getRating() { + return rating; + } + + public void setRating(double rating) { + if (rating < 0 || rating > 10) { + this.rating = 0; + } + else { + this.rating = rating; + } + } + + @Override + public String getInfo() { + return "Title: " + getTitle() + "\nDuration: " + getDuration() + "\nRating: " + getRating() + "\n----------------\n"; + } +} diff --git a/src/classes/videoService/TvSeries.java b/src/classes/videoService/TvSeries.java new file mode 100644 index 0000000..7b1a5a4 --- /dev/null +++ b/src/classes/videoService/TvSeries.java @@ -0,0 +1,28 @@ +package classes.videoService; + +public class TvSeries extends Video { + private int episodes; + + public TvSeries(String title, int duration, int episodes) { + super(title, duration); + setEpisodes(episodes); + } + + public int getEpisodes() { + return episodes; + } + + public void setEpisodes(int episodes) { + if (episodes < 1) { + this.episodes = 1; + } + else { + this.episodes = episodes; + } + } + + @Override + public String getInfo() { + return "Title: " + getTitle() + "\nDuration: " + getDuration() + "\nEpisodes: " + getEpisodes() + "\n----------------\n"; + } +} diff --git a/src/classes/videoService/Video.java b/src/classes/videoService/Video.java new file mode 100644 index 0000000..e3f9ffd --- /dev/null +++ b/src/classes/videoService/Video.java @@ -0,0 +1,31 @@ +package classes.videoService; + +public abstract class Video { + private String title; + private int duration; + + public Video(String title, int duration) { + setTitle(title); + setDuration(duration); + } + + 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; + } + + public String getInfo() { + return "Title: " + getTitle() + "\nDuration: " + getDuration() + "\n----------------\n"; + } +}