viernes, 13 de diciembre de 2019

Herencia

Podemos utilizar una Clase para pasar todos sus atributos y métodos a otra. La primera se llama superclase o padre y la segunda hija. En Java no existe herencia múltiple, sino de una sola Clase a otra, y así sucesivamente.
Por ejemplo, tenemos una Clase Persona, con los atributos:
Fecha fechaNacimiento;
String poblacionNacimiento;
String nombre;
String apellidos;
String domicilio;
String telefono;

Y unos métodos setters y getters que modifican y visualizan los atributos anteriores.

Si queremos crear la Clase Alumno hija de la anterior bien completada se entiende, tendrá todos los atributos y métodos de la Clase Persona, pero le podremos añadir los que queramos, para ello necesitamos añadir una palabra a la Clase hija: extends, en la cabecera de la definición de la Clase hija:
public class Alumno extends Persona {   };

y un método: super( ), con los parámetros materiales que tenga el método constructor de la superclase, pues hace sus veces. Este método se debe incluir en el método constructor de la Clase hija y además en primer lugar. La Clase Alumno,  heredará los atributos y métodos de la Clase Persona o padre o superclase, y la completamos con los atributos y métodos que necesitemos. Tendremos también, seguramente, que completar el constructor.
De la Clase Persona podríamos extender otras Clases como Profesor, y de ésta otras, según nos interese. Pero toda Clase  extendida heredará todos los parámetros y métodos de su Clase madre, aunque podamos modificarlos, y hacer, con el casting, utilizar uno u otros de las Clases superiores.

jueves, 12 de diciembre de 2019

Secuencias enlazadas. La clase Nodo

Un nodo es una estructura de Java que asocia un dato de una Clase con el enlace o referencia al siguiente nodo.

public class NodoCF{//Dos datos tipo String, una referencia al siguiente NodoCF y un contador, //variable entera de Clase
    String nombre;//Hemos elegido los miembros elegidos por el CF del Psoe, por ser públicos.
    String ciudad;
    NodoCF siguiente;
    static int k;

    public NodoCF(String n,String c){//El primer constructor solo introduce el nombre y la ciudad del //primero de la lista
      this.nombre = n;
      this.ciudad = c;
      this.siguiente = null;//como es el primer nodo construido no hay referencia a otro.
    }

     public NodoCF(String n, String c, NodoCF s){//El segundo constructor permite introducir el //nombre y la ciudad de los siguientes de la lista
      this.nombre = n;
      this.ciudad = c;
      this.siguiente = s;//como ya hay un nodo construido hay referencia a él, 
      //de modo consecutivo se utiliza repetitivamente este constructor.
    }
    
    public String toString(){//Este método permite listarlos, pero en el orden inverso al que se han //introducido
    NodoCF aux = this.siguiente; String st = null; k=1;  
    while(aux!=null){
        st= k+".- "+aux.nombre+" ("+aux.ciudad+")";
        System.out.println(st);
        aux = aux.siguiente;k++;
    } 
    return st;
    }
}


public class ProgramCF{//Programa que construye secuencialmente la lista y los escribe// en pantalla.
   
    public static void main(String[] arg){
       NodoCF sec = new NodoCF("Juan Cornejo López ","Andalucía");
        sec = new NodoCF("Joan Jesús Ros Piles ","Valencia",sec);
        sec = new NodoCF("Sergio Gutiérrez Prieto ","CLM",sec);
        sec = new NodoCF("Marisol Mateos Nogales ","Extremadura",sec);
        sec = new NodoCF("Miguel Ángel Morales Quicios ","Euskadi" ,sec);
        sec = new NodoCF("Ana Sánchez Hernandez ","CyL",sec);
        sec = new NodoCF("Gonzalo Caballero Miguez ","Galicia",sec);
        sec = new NodoCF("Gimena Llamedo González ","Asturias",sec);
        sec = new NodoCF("Carmen Barahona Prol ","Madrid",sec);
        sec = new NodoCF("Mª José Camps Orfila ","Baleares",sec);
        sec = new NodoCF("Sabrina Moh Abdelkader ","Melilla",sec);
        sec = new NodoCF(" ","",sec);
        sec.toString();      
    }
}

En pantalla: (Al revés)

1.- Sabrina Moh Abdelkader  (Melilla)
2.- Mª José Camps Orfila  (Baleares)
3.- Carmen Barahona Prol  (Madrid)
4.- Gimena Llamedo González  (Asturias)
5.- Gonzalo Caballero Miguez  (Galicia)
6.- Ana Sánchez Hernandez  (CyL)
7.- Miguel Ángel Morales Quicios  (Euskadi)
8.- Marisol Mateos Nogales  (Extremadura)
9.- Sergio Gutiérrez Prieto  (CLM)
10.- Joan Jesús Ros Piles  (Valencia)
11.- Juan Cornejo López  (Andalucía)

Esta estructura de filas secuenciales permite manejar infinidad de datos.