Apuntes DAM
Intermedio
Unas 24 horasProyecto 2 de 4

Gestión de una clínica veterinaria

Una clínica veterinaria quiere controlar sus pacientes (perros, gatos y animales exóticos), sus propietarios, las citas y los tratamientos. Cada tipo de animal tiene reglas distintas: vacunas obligatorias, cálculo de la dosis según el peso y precio de la consulta. Diseña el modelo orientado a objetos y una aplicación de consola para gestionarlo.

Java 21POOColeccionesPlantUML
Tu avance0/18 · 0 %

Objetivos de aprendizaje

  • •Modelar un dominio con clases, herencia, clases abstractas e interfaces
  • •Aplicar polimorfismo para evitar condicionales sobre el tipo
  • •Encapsular datos y validar invariantes en constructores y setters
  • •Usar listas y mapas con objetos propios (equals, hashCode, Comparator)

Requisitos mínimos

Fases sugeridas

  1. 1

    Modelo

  2. 2

    Clases del dominio

  3. 3

    Servicio y colecciones

  4. 4

    Interfaz de consola

Qué entregar

  • Código fuente organizado en paquetes (modelo, servicio, app)
  • Diagrama de clases (.puml e imagen) actualizado al código final
  • Documento breve con las decisiones de diseño

Para ir más allá

  • Persistencia en ficheros CSV al salir y al arrancar
  • Factura de una consulta con descuentos por propietario frecuente
  • Pruebas JUnit de las reglas de cada animal

Rúbrica de evaluación

CriterioPesoPara la máxima nota
Diseño orientado a objetos35 %Herencia solo donde hay «es un», composición donde hay «tiene un» y ningún switch sobre el tipo de animal
Encapsulación y validación20 %Ningún objeto puede quedar en un estado inválido
Colecciones20 %Colección adecuada a cada uso y equals/hashCode coherentes
Funcionalidad15 %Todas las operaciones y listados funcionan
Documentación10 %Diagrama fiel al código y decisiones justificadas

Úsala para autoevaluarte antes de entregar. Tu profesorado puede usar otros criterios.

Consejos y errores típicos

  • Si escribes if (animal instanceof Perro) para calcular algo, ese cálculo debería ser un método redefinido.
  • Diseña antes de programar: cambiar el diagrama cuesta minutos; cambiar el código, horas.