Filtro CPL Polarizado ventajas

Herencia en Java - Persona Alumno Maestro

Herencia en Java con ejemplo:

Clase Java Persona

Clase Java Alumno

Clase Java Maestro

Utilice el siguiente diagrama para crear las siguientes clases:

Clase Java Persona, Clase Java Alumno que extienda (o herede) de Persona y Clase Maestro que extienda tambien de la clase Persona.

 

Contruya un unico arreglo de objetos dinámico para almacenar objetos de las tres clases (Persona, Alumno, y Maestro).

Elabore una interfaz como la que se muestra a continuación y de funcionalidad a cada botón de la siguiente forma.

    Al seleccionar agregar algún tipo de persona, deberá aparecer un nuevo formulario solicitando los datos especificos de cada clase. Utilice un formulario diferente para cada clase.

    Al seleccionar la opcion detalles, deberá mostrar todos los datos del objeto seleccionado en un nuevo formulario. 


Colocare el codigo mas importante y el restante lo dejare en un link para que lo descarguen como proyecto de NetBeans.

 

 

Clase Persona:
  
    
 public class Persona {
    private String nombre;
    private int edad;

    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }
    ...
   
 
Clase Alumno:
  
    
 public class Alumno extends Persona {
    private String  matricula;
    private float beca;
    private String carrera;

    public Alumno(String nombre, int edad,String matricula, float beca, String carrera) {
        super(nombre, edad);//mandamos nombre y edad a la clase padre
        this.matricula=matricula;
        this.beca = beca;
        this.carrera = carrera;
    } 
    ...
   
 
Clase Maestro:
  
    
 public class Maestro extends Persona {
    private String id;
    private float salario;
    private String categoria;

    public Maestro(String id,  String nombre, int edad,float salario, String categoria) {
        super(nombre, edad);
        this.id = id;
        this.salario = salario;
        this.categoria = categoria;
    }  
    ...
   
 
Creamos una clase PrincipalClass.java, esta nos servirá para manupular todos los registros de las tres clases y poder almacenarlos en un arreglo.
  
    
 public class PrincipalClass {

    ArrayList listaPersonas = new ArrayList();
      
    /*
    **Agrega un objeto de tipo Alumno al arreglo listaPersonas
    */
    public void agregarAlumno(
            String nombre, int edad, String matricula, float beca, String carrera){
       listaPersonas.add(new Alumno(nombre, edad,matricula,beca,carrera));
    }
    
    /*
    **Agrega un objeto de tipo Maestro al arreglo listaPersonas
    */
    public void agregarMaestro(
            String id,  String nombre, int edad,float salario, String categoria){
        Maestro maestro = new Maestro(id,nombre,edad,salario,categoria);
        listaPersonas.add(maestro);
    }
    
    /*
    **Metodo que retorna todos los objetos almacenados en el arreglo listaPersonas
    */
    public ArrayList obtenerPersonas(){
        return listaPersonas;
    }
    
    /*
    **Metodo que recibe el id seleccionado de la tabla para eliminarlo
    */
    public void eliminar(int id){
        listaPersonas.remove(id);
    }
    
    /**
     * Metodo que actualiza los datos del alumno seleccionado
     * @param id del arreglo que se quiere actualizar
     * @param nombre
     * @param edad
     * @param matricula
     * @param beca
     * @param carrera 
     */
    public void modificarAlumno(
            int id,String nombre, int edad, String matricula, float beca, String carrera){
        listaPersonas.set(id, new Alumno(nombre, edad,matricula,beca,carrera));
    }
    
    /**
     * Metodo que actualiza los datos del Maestro seleccionado
     * @param id del arreglo que se quiere actualizar
     * @param idd del maestro
     * @param nombre
     * @param edad
     * @param salario
     * @param categoria 
     */
    public void modificarMaestro(
            int id,String idd,  String nombre, int edad,float salario, String categoria){
        listaPersonas.set(id, new Maestro(idd,nombre,edad,salario,categoria));
    }
    
    /**
     * 
     * @return retorna el total de registros que hay en el arreglo
     */
    public int size(){
        return listaPersonas.size();
    }
}  
   
 
Ahora ya podemos agregar, editar, y mostrar los datos. Lo haremos desde una interfaz grafica como lo indica al principio. Creamos un JFrame principal
En esta parte creamos un objeto de tipo PrincipalClass
  
    
 public class FrmPrincipal extends javax.swing.JFrame {

    PrincipalClass registro = new PrincipalClass();

 
    /**
     * Creates new form FrmPrincipal
     */
    public FrmPrincipal() {
        initComponents();
      
    }  
    
    /***
    **Este medodo recibe el arreglo de datos que se han ingresado en el JFrame ya sea de alumno o maestro
    **
    /
    public void registro(PrincipalClass registro) {
        this.registro = registro;

    }
    
    /*
    ** Recorremos el arreglo para ver si hay datos y cargarlos en la tabla del JFrame principal
    */
    public void mostrarRegistros(){
        DefaultTableModel modelo = (DefaultTableModel) tblDatos.getModel();
        modelo.setRowCount(0);//limpiamos tabla
        if(registro.size() >= 1){
            ArrayList person = registro.obtenerPersonas();
            for(int i = 0; i < registro.size();i++){
                String tipo = "";
                if(person.get(i) instanceof Maestro){//comparamos si el objeto es de tipo Maestro
                    tipo = "Maestro";
                }else{// de lo contrario entonces es Alumno
                    tipo = "Alumno";
                }
                modelo.addRow(new String[]{
                    person.get(i).getNombre(),
                    String.valueOf(person.get(i).getEdad()),
                    tipo
                });
            }
        }
    }
   
 
Le cambiamos un poco el diseño a como se menciona al inicio pero no hay problema. Cuando se de click en Agregar/Alumno se desplegara otro JFrame para pedir los datos al cliente
El constructor de este JFrame recibe un objeto de la ventana principal y otro objeto de tipo PrincipalClass. En boton de Guardar simplemente manda a llamar el metodo de agregarAlumno, le mandamos el registro a la ventana principal, haciendo uso del metodo registro() y luego mostramos los registros en la tabla.
  
    
 public class AgregarAlumnos extends javax.swing.JDialog {
    FrmPrincipal parent;
    PrincipalClass registro;
    
    /**
     * Creates new form AgregarAlumnos
     */
    public AgregarAlumnos(FrmPrincipal parent, PrincipalClass registro) {
        
        initComponents();
        this.parent = parent;
        this.registro = registro;
    }  
    
    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String matricula = txtMatricula.getText();
        String nombre = txtNombre.getText();
        int edad = Integer.parseInt(txtEdad.getText());
        float beca = Float.parseFloat(txtBeca.getText());
        String carrera = txtCarrera.getText();
        //System.out.println(""+id+" "+nombre+" "+edad+" "+salario+" "+categoria);
        registro.agregarAlumno(nombre, edad, matricula,beca, carrera);
        this.setVisible(false);

        parent.registro(registro);
        parent.mostrarRegistros();
        
    }   
  
Espero me de a entender.
Les dejo el link de descarga del proyecto completo.
Descargar archivo  

Comentarios