You are on page 1of 3

Guin de la prctica

El fichero Persona.java contiene una clase simple que representa a una persona. Realiza las siguientes tareas creando cada fichero segn la siguiente jerarqua: . |__ PruebaHerencia.java |__ herencia |__ clasebase |__ Persona.java |__ clasesderivadas1 |__Estudiante.java |__Trabajador.java |__ clasesderivadas2 |__EBachillerato.java |__EUniversidad.java |__TEPublica.java |__TEPrivada.java

Crea dos clases en el mismo fichero Persona.java que hereden de persona: Estudiante y Trabajador. A la primera le aades un dato miembro privado "idEstudiante" y a la segunda "idTrabajador". Crea otra dos clases, una EBachillerato, y otra EUniversidad, que hereden a su vez de Estudiante. La primera tendr otro dato miembro privado "instituto", la segunda "universidad". De igual forma, crea otras dos TEPublica, TEPrivada, que hereden de Trabajador. En esta ocasin, en ficheros separados. Dota a estas clases con un dato miembro "empresa" y "organismo", respectivamente. No escribas ningn mtodo en estas clases. Desde una clase que implemente el mtodo main, llamada PruebaHerencia, crea objetos de cada una de las clases y observa cmo se construyen. Accede al dato miembro "nombre" desde cada uno de los objetos qu ocurre? Cambia el modificador de mbito de nombre a protected y vuelve a probar ahora qu pasa en esta ocasin? Llama a los mtodos de la clase Persona a travs de los objetos del resto de clases (por ejemplo, muestra el nombre de la persona). Cambia el modificador de mbito del mtodo asignarNombre de la clase Persona a private. Llama desde cualquier objeto que has creado a este mtodo. Crea un nuevo constructor para cada clase, que tenga tantos argumentos como informacin necesite para inicializar un objeto (por ejemplo, EUniversidad tendr nombre, idEstudiante y universidad). Utiliza super para llamar al constructor de la

clase base e introduce una sentencia de escritura para posteriormente poder apreciar cmo se van llamando los constructores. Crea objetos con estos nuevos constructores.

Sobreescribe en cada clase el mtodo mostrar que muestra por la salida estndar la informacin completa de cada objeto, e invcalo en el mtodo main cmo puedo hacer uso del mtodo de la clase base si ya lo he sobreescrito? Crea dos objetos de la clase TEPublica con diferente identificador de trabajador y lugar de trabajo puedes invocar el mtodo "mismosNombres" con un objeto como receptor y otro como argumento. Construye un objeto de la clase EUniversidad (mediante el constructor con argumentos de la clase) y asgnaselo a otro objeto de la clase Estudiante. Mediante este ltimo objeto, invoca al mtodo "mostrar" qu mtodo se llama realmente? El de la clase EUniversidad o el de la clase Estudiante? Implementa un nuevo mtodo en la clase EUniversidad, asignarUniversidad, que modifique el dato miembro "universidad" por el valor que se le pase como argumento. Siguiendo con el ejemplo anterior, invoca al mtodo mediante el objeto de la clase Estudiante qu ocurre? Por qu?

Sobre paquetes... Un paquete no es ms que una coleccin de clases que han sido agrupadas juntas en un mismo directorio y se les ha dado un nombre de paquete. Las clases en el paquete se ubican en un fichero separado nombrado como la clase. La nica diferencia a como lo hemos hecho hasta ahora es que cada fichero tiene la siguiente lnea especial al principio del fichero: package nombre_del_paquete; El nombre del paquete consiste en palabras en minscula normalmente separadas por puntos. Por ejemplo: package general.utilidades; Cualquier programa o definicin de clase que haga uso de una de las clases del paquete deber incluir la sentencia import al comienzo: import general.utilidades.*; Un nombre de un paquete le dice al compilador dnde encontrar las clases del paquete, por lo que deben existir los directorios de igual nombre que los includos entre ".", a partir del directorio base (que debe estar definido en la variable de entorno CLASSPATH):

general/utilidades/ Siguiendo el ejemplo anterior, crea los siguientes paquetes y compila todos ellos, ejecutando la clase PruebaHerencia: El fichero Persona.java pertenecer al paquete herencia.clasebase. Estudiante.java y Trabajador.java a herencia.clasebase.clasesderivadas1 EBachillerato.java, EUniversidad.java, TEPublica.java y TEPrivada.java lo harn a herencia.clasebase.clasesderivadas2.