Forma de entrega¶
Consideraciones generales¶
Utilicen el paquete base ar.unrn.agenda.
No olviden crear un main que permita el uso de la Agenda.
Contacto¶
Representa un contacto inmutable e individual en la agenda, representado por los siguientes atributos: Nombre, Apellido, dirección de email, fecha de nacimiento y fecha de último contacto.
Comportamiento a implementar:
Constructor parametrizado.
Igualdad y
hashCodeOverride de
toStringy una sobrecarga con opciones de formato.Comparablecon un criterio base de ordenamiento.Un
Comparatorpor cada atributo, llamado por ejemploporApellido.Un método estático para crear un
Contactoaleatorio.
Clase Agenda¶
Gestiona la colección de objetos Contacto, opcionalmente utilizando los Arreglo creados en el TP anterior.
Atributos:
El conjunto de
Contacto, en la lista de comportamiento se indicajava.util.List, pero puede ser algúnArregloEl propietario (como
Contacto)
Comportamiento:
public Agenda(): Constructor que inicializa la lista interna de contactos (e.g.,this.contactos = new java.util.ArrayList<>();).public void agregarContacto(Contacto contacto): Añade unContactoa la lista. Debería validar que elContactono sea nulo y que no tenga duplicados.public boolean eliminarContacto(String email): Elimina elContactocuyo email coincide con el dado. Devuelvetruesi se encontró y eliminó,falseen caso contrario.public java.util.List<Contacto> buscarContactoPorNombre(String nombre): Busca y devuelve una lista deContactos que coinciden con el nombre dado. Puede haber múltiples contactos con el mismo nombre.public Contacto buscarContactoPorEmail(String email): Busca y devuelve elContactocuyo email coincide con el dado.Sin alterar el orden interno de la agenda:
public java.util.List<Contacto> listarContactosOrdenadosPorNombreApellido()public java.util.List<Contacto> listarContactosOrdenadosPorApellidoNombre()public java.util.List<Contacto> listarContactosOrdenadosPorFechaDeNacimiento()
public int cantidadTotalDeContactos(): Retorna el número de contactos en la agenda (contactos.size()).public boolean verificarExistenciaDeContacto(String email): Verifica si existe un contacto con el email dado.public void limpiarAgenda(): Elimina todos los contactos de la lista (contactos.clear()).
Opcionales¶
Implementar una clasificación de contactos¶
Esta representa una categoría o tipo para un contacto (ej: “Personal”, “Trabajo”, “Familia”).
La Agenda debe de poder crear conjuntos agrupados por estas categorías.
Implementar GrupoContactos¶
Que representa una colección nombrada de contactos dentro de la agenda (ej: “Amigos de la infancia”, “Equipo de proyecto”).
Implementar agregar / quitar / contiene
Almacenamiento persistente¶
Guarden a disco la Agenda de forma que la información pueda ser accedida luego de que el programa se cierra.