/java_cp1_javier_guerra

Discografía: Caso práctico 1 del curso de Java + Spring

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Caso práctico 1

Tema de libre elección: Discografía

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ú:

  1. Listar todos los medios
  2. Buscar un medio por su id
  3. Buscar medios por su tipo
  4. Crear un nuevo medio
  5. Actualizar un medio por su id
  6. Borrar un medio por su id
  7. 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.

Licencias

Sobre el código fuente: GNU GENERAL PUBLIC LICENSE Version 3

Saber más

Artículos informativos elaborados por el autor relacionados con esta práctica: