Acabamos de aprender cómo crear e implementar interfaces, así como cómo crear y extender clases abstractas, así que ahora practiquemos un poco.
- Haz un fork de este repositorio.
- Clona este repositorio.
- 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.
- En el repositorio, crea un proyecto de Java y añade el código para las siguientes tareas.
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.
- Usando la documentación de BigDecimal, crea un método que acepte un
BigDecimaly devuelva undoubledel númeroBigDecimalredondeado al centésimo más cercano. Por ejemplo,4.2545debería devolver4.25. - Usando la documentación de BigDecimal, 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.2345debería devolver-1.2y-45.67debería devolver45.7.
- Supongamos que estás construyendo un sistema de inventario de automóviles. Todos los automóviles tienen un
vinNumber,make,modelymileage. Pero ningún automóvil es solo un automóvil cualquiera. Cada automóvil puede ser unSedan, unUtilityVehicleo unTruck. - Crea una clase abstracta llamada
Cary define las siguientes propiedades y comportamientos:vinNumber: unaStringque representa el número de VIN del automóvilmake: unaStringque representa la marca del automóvilmodel: unaStringque representa el modelo del automóvilmileage: unintque representa el kilometraje del automóvilgetInfo(): un método que devuelve unaStringque contiene todas las propiedades del automóvil en un formato legible
- Crea tres clases que extiendan
Car:Sedan,UtilityVehicleyTruck. - Los objetos de
UtilityVehicledeben tener una propiedad adicionalfourWheelDrive, unbooleanque representa si el vehículo tiene tracción en las cuatro ruedas. - Los objetos de
Truckdeben tener una propiedad adicionaltowingCapacity, undoubleque representa la capacidad de remolque del camión.
- Supón que está construyendo un servicio de transmisión de vídeo. Todos los videos son series de televisión o películas.
- Crea una clase abstracta llamada
Videoy define las siguientes propiedades y comportamientos:title: unStringque representa el título del videoduration: unintque representa la duración del video en minutosgetInfo(): un método que devuelve unStringque contiene todas las propiedades del video en un formato legible
- Crea dos clases que extiendan
Video:TvSeriesyMovie. - Los objetos
TvSeriesdeben tener una propiedad adicionalepisodes, unintque representa el número de episodios en la serie. - Los objetos
Moviedeben tener una propiedad adicionalrating, undoubleque representa la calificación de la película.
- Crea una interfaz
IntListcon los siguientes métodos:add (int number): un método que agrega un nuevo número a la listaget (int id): un método que recupera un elemento por su ID
- Crea dos implementaciones de
IntList:IntArrayListyIntVector. IntArrayListdebe almacenar números en un array con una longitud de 10 por defecto. Cuando se llama al métodoadd, 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).IntVectordebe almacenar números en un arreglo con una longitud de 20 por defecto. Cuando se llama al métodoadd, 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).- En su
README.md, incluye un ejemplo de cuándoIntArrayListsería más eficiente y cuándoIntVectorsería más eficiente.
- IntArrayList es más eficiente en escenarios donde el crecimiento de la lista es moderado o poco predecible. Al crecer solo un 50%, utiliza menos memoria en escenarios donde no es necesario un gran buffer de memoria adicional. Es ideal para casos de uso en los que los incrementos de memoria deben ser más conservadores y el tamaño de la lista no se escala exponencialmente.
- IntVector es más adecuado para situaciones donde se espera que la lista crezca rápidamente o de manera significativa. Al duplicar su tamaño, reduce el número de veces que se necesita redimensionar, lo cual puede ser beneficioso en términos de rendimiento cuando las operaciones de adición son muy frecuentes y el tamaño final de la lista es considerablemente grande.