El dataset consta de varias propiedades de coches (como pueden ser fabricante, modelo, color, tamaño del motor, capacidad de combustible, etc).
├─ 📁 src: Contiene los diferentes archivos que forman parte del proyecto.
| ├─ 📦 fp.coches: Paquete que contiene los tipos del proyecto.
| | ├─ 📄 Coche.java
| | ├─ 📄 Concesionario.java
| | └─ 📄 FactoriaCoches.java
| ├─ 📦 fp.coches.test: Paquete que contiene las clases de test del proyecto.
| | ├─ 📄 TestCoche.java
| | ├─ 📄 TestConcesionario.java
| | └─ 📄 TestFactoriaCoches.java
| ├─ 📦 fp.common: Paquete que contiene los tipos auxiliares del proyecto.
| | ├─ 📄 ColorCoche.java
| | ├─ 📄 Motor.java
| | └─ 📄 TipoCoche.java
| └─ 📦 fp.utiles: Paquete que contiene las clases de utilidad.
| ├─ 📄 Checkers.java
| ├─ 📄 Fichero.java
| ├─ 📄 Mostrar.java
| └─ 📄 Parsers.java
├─ 📁 data: Contiene el dataset del proyecto.
| └─ 📄 coches.csv: Datos sobre coches de varios fabricantes.
└─ 📁 docs: Contiene la documentación del proyecto.
└─ 📄 README.md
: Documentación.
El dataset está compuesto por 20 columnas, con la siguiente descripción:
- Manufacturer: de tipo
String
, representa el nombre del fabricante. - Model: de tipo
String
, representa el modelo del vehículo. - Sales in thousands: de tipo
Integer
, representa el número de ventas en miles. - 4-year resale value: de tipo
Float/Double
, representa el valor de reventa a los cuatro años. - Vehicle type: de tipo
String
, representa el tipo de vehículo. - Price in thousands: de tipo
Float/Double
, representa el precio en miles del vehículo. - Engine size: de tipo
Float/Double
, representa el tamaño del motor en L. - Horsepower: de tipo Integer, representa la potencia del vehículo en CV.
- Wheelbase: de tipo
Float/Double
, representa la distancia entre los dos ejes de las ruedas. - Width: de tipo
Float/Double
, representa el ancho del vehículo. - Length: de tipo
Float/Double
, representa el largo del vehículo. - Curb weight: de tipo
Float/Double
, representa el peso en vacío del vehículo. - Fuel capacity: de tipo
Float/Double
, representa la capacidad de combustible del vehículo. - Fuel efficiency: de tipo
Integer
, representa la eficiencia del combustible. - Latest launch: de tipo
String
, representa el último lanzamiento del vehículo. - Color 1: de tipo
String
, representa el primer color disponible del vehículo. - Color 2: de tipo
String
, representa el segundo color disponible del vehículo. - Color 3: de tipo
String
, representa el tercer color disponible del vehículo. - Color 4: de tipo
String
, representa el cuarto color disponible del vehículo. - Color 5: de tipo
String
, representa el quinto color disponible del vehículo.
Tipo base con métodos básicos: Constructor/es, Getters & Setters, toString, equals, compareTo
PROPIEDADES:
Propiedad | Tipo | Descripción |
---|---|---|
fabricante | String |
consultable y modificable. |
modelo | String |
consultable y modificable. |
potencia | Integer |
consultable y modificable. |
tamañoMotor | Float |
consultable y modificable. |
tipo | TipoCoche |
consultable y modificable. |
precio | Integer |
consultable y modificable. |
salidaMercado | LocalDate |
consultable y modificable. |
listaColores | List<ColorCoche> |
consultable y modificable. |
CONSTRUCTORES:
- C1: Un parámetro por cada propiedad.
- C2: Sólo recibe como parámetros el fabricante, el modelo y la lista de colores.
RESTRICCIONES:
- R1: el precio no puede ser negativo.
- R2: la lista de colores no puede ser
null
.
CRITERIO DE IGUALDAD:
- Sirve para saber si dos objetos tipo Coche son iguales.
CRITERIO DE ORDENACIÓN:
- Compara el nombre del fabricante para ordenar por nombre de fabricante.
OTRAS OPERACIONES:
- tipoCocheParser: Convierte el tipo de vehículo para el toString (ej.)
TipoCoche.PASSENGER
a"Passenger"
. - salidaMercadoParser: Convierte el formato
YYYY-MM-dd
add/MM/YYYY
. - getFormatoCorto: Devuelve el toString en un formato más comprimido "one-line".
- toString: Formatea el tipo en un String legible.
- hashCode: Generea un hashcode.
Tipo contenedor de tipos Coche con métodos básicos (L58).
PROPIEDADES:
Propiedad | Tipo | Descripción |
---|---|---|
coches | Set<Coche> |
consultable y modificable. |
CONSTRUCTORES:
- C1: Un parámetro por cada propiedad.
- C2: Constructor vacío que devuelve un Set<Coche> vacío.
CRITERIO DE IGUALDAD:
- Sirve para saber si dos objetos tipo Concesionario son iguales.
OTRAS OPERACIONES:
- getNumeroCoches: Devuelve el número total de tipos Coche en coches.
- añadirCoche: Añade un tipo Coche a coches.
- eliminarCoche: Elimina un tipo Coche de coches.
- añadirColCoches: Añade una colección de tipos Coche a coches.
- existeCochePrecioMenor: Devuelve un
Boolean
que estrue
si existe un tipo Coche con un precio menor a uno dado. - getMediaLitros: Devuelve un
Integer
que es la media de capacidad del motor de los coches. - getCochesPorMarca: Devuelve una
List<Coche>
con los tipos Coche que sean de la marca dada. - getCochesPorFecha: Devuelve un
Map<LocalDate,Set<Coche>>
que agrupa los tipos Coche por fecha. - getNumeroCochesPorAnyo: Devuelve un
Map<Integer,Long>
que cuenta el número de tipos Coche y los agrupa por año. - toString: Formatea el tipo en un String legible.
- hashCode: Generea un hashcode.
MÉTODOS USANDO STREAMS
- existeCochePrecioMenorStream: Devuelve un
Boolean
que estrue
si existe un tipo Coche con un precio menor a uno dado. - getMediaLitrosStream: Devuelve un
Integer
que es la media de capacidad del motor de los coches. - getCochesPorMarcaStream: Devuelve una
List<Coche>
con los tipos Coche que sean de la marca dada. - getCocheMasCaroPorMarca: Devuelve un tipo
Coche
el cual tiene la propiedad Precio más alta de entre todos los de la marca dada. - getFiltroPrecioOrdenadoPorMarca: Devuelve una
List<Coche>
ordenada por orden natural y habiendo filtrado sus tiposCoche
anteriormente por un precio dado (siendo mayor o menor que este). - getCochesPorFechaStream: Devuelve un
Map<LocalDate, Set<Coche>>
agrupando los coches por su fecha de salida, es decir, la clave es la fecha y el valor el conjunto de coches de esa fecha. - getFabricantesDistintos: Devuelve una
List<String>
que contiene los nombres de los fabricantes distintos sin repetición. - getCochesMasCarosPorFecha: Devuelve un
Map<LocalDate, Coche>
donde la clave es la fecha de salida al mercado y el valor el coche más caro de esa fecha. - getCochesConMejorMotorPorFabricante: Devuelve un
SortedMap<String, List<Coche>>
donde la clave es el fabricante y el valor es la lista de coches ordenados por la comparación de orden natural de los motores. - getCocheMasCaro: Devuelve una String con el fabricante, modelo y fecha del coche más caro de todos.
Tipo para leer fichero CSV y parsear cadenas del CSV. MÉTODOS:
- leerCoches: Lee el fichero CSV y devuelve un tipo Concesionario.
- parseaCoches: Parsea un string tipo
"Fabricante;Modelo;Tamaño;Potencia;Capacidad;Eficiencia;Tipo;Precio;salidaMercado;listaColores"
para crear un tipo Coche.
Tipo auxiliar que funciona como subtipo de los tipos Coche para definir el Motor de los coches.
PROPIEDADES:
Propiedad | Tipo | Descripción |
---|---|---|
tamaño | Double |
consultable y modificable. |
potencia | Integer |
consultable y modificable. |
capacidad | Double |
consultable y modificable. |
eficiencia | Integer |
consultable y modificable. |
CONSTRUCTORES:
- C1: Un parámetro por cada propiedad.
- C2: Constructor a partir de String.
CRITERIO DE IGUALDAD:
- Sirve para saber si dos objetos tipo Motor son iguales.
CRITERIO DE ORDENACIÓN:
- Compara propiedad por propiedad de dos tipos Motor.
OTRAS OPERACIONES:
- toString: Formatea el tipo en un String legible.
- hashCode: Generea un hashcode.
Enumerado para el tipo de vehículo, si es Passenger o Car.
Enumerado para los colores.
Métodos para lanzar excepciones con mensajes de error custom.
Métodos para leer ficheros y manejar sus datos.
Método para mostrar n elementos de una colección.
Método para parsear algunos tipos.