Parte 1 [Agenda y Contactos]
Para dar continuidad a la Actividad 7, vamos a crear una agenda de contactos. En esta actividad, implementaremos una clase Contacto y una clase Agenda que gestionará una lista de contactos. La agenda permitirá agregar, eliminar y mostrar contactos, así como guardar y cargar la lista de contactos desde un archivo.
De tal manera que nuestras clases deberán de verse de la siguiente manera:
Contacto.java
package com.example.agenda;
import java.io.Serializable;
public class Contact implements Serializable {
private String name;
private String lastName;
private String phoneNumber;
private String email;
public Contact(String name, String lastName, String phoneNumber, String email) {
this.name = name;
this.lastName = lastName;
this.phoneNumber = phoneNumber;
this.email = email;
}
@Override
public String toString() {
return ("%s, %s, %s, %s")
.formatted(name.trim(), lastName.trim(),
phoneNumber.trim(), email.trim());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Agenda.java
package com.example.agenda;
import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
public class Agenda implements Serializable {
private static final String FILE_PATH = "archivos/";
private final ArrayList<Contact> contacts;
public Agenda() {
contacts = new ArrayList<>();
if (new File("archivos/Contactos.agd").exists())
loadAgenda();
}
public ArrayList<Contact> getContacts() {
return contacts;
}
public int getContactCount() {
return contacts.size();
}
public Contact getContact(int index) {
if (index >= 0 && index < contacts.size()) {
return contacts.get(index);
} else {
return null;
}
}
public void addContact(Contact contact) {
contacts.add(contact);
JOptionPane.showMessageDialog(null,
"El contacto ha sido agregado a la agenda",
"Contacto añadido",
JOptionPane.INFORMATION_MESSAGE);
}
public void removeContact(Contact contact) {
if (contacts.remove(contact)) {
JOptionPane.showMessageDialog(null,
"El contacto ha sido eliminado de la agenda",
"Contacto eliminado",
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null,
"El contacto no se encuentra en la agenda",
"Error al eliminar contacto",
JOptionPane.ERROR_MESSAGE);
}
}
public void saveAgenda() {
try (FileOutputStream fos =
new FileOutputStream(FILE_PATH + "Contactos.agd");
ObjectOutputStream oos =
new ObjectOutputStream(fos)) {
oos.writeObject(this);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void loadAgenda() {
try (FileInputStream fis =
new FileInputStream(FILE_PATH + "Contactos.agd");
ObjectInputStream ois =
new ObjectInputStream(fis)) {
Agenda agenda = (Agenda) ois.readObject();
contacts.clear();
contacts.addAll(agenda.getContacts());
} catch (IOException | ClassNotFoundException e) {
//throw new RuntimeException(e);
contacts.clear();
}
}
}
Last modified: 21 May 2025