Estructura del diagrama:
<<abstract>> Usuario
- nombre : String
- correo : String
- contraseña : String
+ getNombre() : String
+ setCorreo(String) : void
+ getTipo() : String (abstract)
Administrador UsuarioRegular
- nivelAcceso : int (sin atributos nuevos)
+ getNivelAcceso() + getTipo(): String
+ getTipo() : String
GUI (Principal)
---------------------
- listaUsuarios : ArrayList<Usuario>
- PanelUsuarios (clase interna)
CODIGO:
PAQUETE USUARIOS
package Usuarios;
public abstract class Usuario {
protected String nombre;
protected String correo;
protected String contraseña;
public Usuario(String nombre, String correo, String contraseña) {
[Link] = nombre;
[Link] = correo;
[Link]ña = contraseña;
}
// Getters y setters
public String getNombre() { return nombre; }
public void setNombre(String nombre) { [Link] = nombre; }
public String getCorreo() { return correo; }
public void setCorreo(String correo) { [Link] = correo; }
public String getContraseña() { return contraseña; }
public void setContraseña(String contraseña) { [Link]ña = contraseña; }
public abstract String getTipo();
}
//Clase usuario Regular
package Usuarios;
public class UsuarioRegular extends Usuario {
public UsuarioRegular(String nombre, String correo, String contraseña) {
super(nombre, correo, contraseña);
}
@Override
public String getTipo() {
return "Regular";
}
}
//Clase Administrador DONDE USO LA PALABRA SUPER
package Usuarios;
public class Administrador extends Usuario {
private int nivelAcceso;
public Administrador(String nombre, String correo, String contraseña, int
nivelAcceso) {
super(nombre, correo, contraseña); // uso de 'super'
[Link] = nivelAcceso;
}
public int getNivelAcceso() {
return nivelAcceso;
}
public void setNivelAcceso(int nivelAcceso) {
[Link] = nivelAcceso;
}
@Override
public String getTipo() {
return "Administrador";
}
}
PAQUETE GUI
//Clase PanelUsuario encargada de la interfaz grafica
package GUI;
public class PanelUsuarios {
}
//Clase Principal
package GUI;
import [Link];
import Usuarios.*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
public class Principal extends JFrame {
private ArrayList<Usuario> listaUsuarios = new ArrayList<>();
public Principal() {
setTitle("Gestion de Usuarios");
setSize(500, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
add(new PanelUsuarios());
setVisible(true);
}
class PanelUsuarios extends JPanel {
public PanelUsuarios() {
setLayout(new GridLayout(6, 1));
JButton agregar = new JButton("Agregar Usuario");
JButton mostrar = new JButton("Mostrar Usuarios");
JButton editar = new JButton("Editar Usuario");
JButton eliminar = new JButton("Eliminar Usuario");
[Link](e -> {
String tipo = [Link]("Tipo (admin/regular):");
String nombre = [Link]("Nombre:");
String correo = [Link]("Correo:");
String contraseña = [Link]("Contraseña:");
if ("admin".equalsIgnoreCase(tipo)) {
int nivel = [Link]([Link]("Nivel de
acceso:"));
[Link](new Administrador(nombre, correo, contraseña,
nivel));
} else {
[Link](new UsuarioRegular(nombre, correo, contraseña));
}
[Link](null, "Usuario agregado.");
});
[Link](e -> {
StringBuilder sb = new StringBuilder();
for (Usuario u : listaUsuarios) {
[Link]([Link]()).append(": ")
.append([Link]()).append(", ")
.append([Link]()).append("\n");
}
[Link](null, [Link]());
});
// Los botones editar y eliminar pueden implementarse de forma similar
add(agregar);
add(mostrar);
add(editar);
add(eliminar);
}
}
//Main
public static void main(String[] args) {
new Principal();
}
}