Autor: Javier Guerra
Status: Finalizado
Versión: 1.0.5
Fecha: 2023-02-12
La aplicación gestiona la discografía de un artista musical dado (Artist
). Cada artista tiene una discografía de distintos tipos de medios (Analog
, Digital
). Cada tipo de medio puede tener distintos formatos (enum MediaFormat
).
Cada medio contiene una lista de canciones (Song
), y cada canción puede ser de un tipo (enum MusicGenre
).
La interfaz MediaInterface
es implementada en la clase Media
de la que heredan las clases Analog
y Digital
. Cada una de estas dos clases tiene propiedades y métodos propios además de los comunes indicados en la clase padre.
Las clases Analog
y Digital
sobreescriben los métodos equals()
, hashCode()
y toString()
;
Se implementa un servicio de gestión de medios de un artista (MediaServiceImpl
) y su interfaz (M̀ediaService
) que es accedido desde el controlador MediaController
que contiene los métodos relacionados con las opciones del menú de la aplicación.
Se utiliza una estructura de datos como base de datos en memoria (HashSet
). Los datos iniciales de ejemplo se aprovisionan en la clase ArtistRepository
que es usada por el servicio MediaServiceImpl
.
La aplicación ofrece un menú por consola cuyas opciones son implementadas en M̀ediaController
, y solicita datos al usuario que son leídos mediante la clase Scanner
que es usada en la clase ConsoleInput
:
Opciones del menú:
- Listar todos los medios
- Buscar un medio por su id
- Buscar medios por su tipo
- Crear un nuevo medio
- Actualizar un medio por su id
- Borrar un medio por su id
- Salir
Se han creado funciones de apoyo a las opciones de menú para lectura por consola (ConsoleInput
):
- Obtener un entero largo positivo
- Obtener un entero largo positivo por rango máximo y mínimo
- Obtener una cadena de caracteres
- Obtener un booleano para Sí/No
- Obtener la pulsación de la tecla Intro
- Imprimir un título (Main)
Otras funciones de apoyo están implementadas en MediaController
y en MediaServiceImpl
:
Se genera la documentación de la aplicación con JavaDoc
en la carpeta doc.
Se incluye CHANGELOG.md
con los cambios de versión.
Sobre el código fuente: GNU GENERAL PUBLIC LICENSE Version 3
Artículos informativos elaborados por el autor relacionados con esta práctica: