Está en la página 1de 6

1

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


PROGRAMACIN II
PROFESOR: HUGO CALDERN

PRCTICA DE LABORATORIO 6

CONSTRUCTORES Y HERENCIA

PRIMERA PARTE

1) Crear un proyecto RegistroDeportistas sin Main Class


2) Crear un paqute Aplicacion y otro paquete Clases, en el paquete Aplicacin estar las clases
principal y en el paquete Clases est las clases para aplicarlas.
3) Creamos la clase Ejm1Persona en el paquete clases y creamos la clase principal Ejm1Prueba
en el paquete Aplicacin, con los siguientes cdigo respectivamente.

package Clases;

public class Ejm1Persona {


private String nombre;

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}
public String toString(){
return "Nombre:"+nombre+"\n";
}
}

package Aplicacion;
import Clases.Ejm1Persona;

public class Ejm1Prueba {


public static void main(String[] args) {
Ejm1Persona Persona = new Ejm1Persona();
System.out.print("Nombre:"+Persona.getNombre()+"\n");
Persona.setNombre("David");
System.out.print("Nombre:"+Persona.getNombre()+"\n");
//Tambien podemos usar toString() definida en la clase
System.out.print("usando el mtodo toString \n");
System.out.print(Persona);
}
}
2

a) Observe y explique el comportamiento de inicializacin cuando se instancia, en este caso


cuando no se ha implementado el constructor.
b) Observe y explique la forma de dar mensaje cuando no est implementada el mtodo
toString()
c) Invocando el mtodo toString() implementada, explique su funcionamiento.

4) Crear la clase Ejm2Persona en el paquete clases con el mismo cdigo de la clase Ejm1Persona
y adicionar como primer mtodo el constructor con el siguiente cdigo.

public Ejm2Persona(String nombre) {


super();
this.nombre = nombre;
}

Crear tambin la clase principal Ejm2Prueba en el paquete Aplicacin, modificando el


main con el siguiente cdigo:

package Aplicacion;
import Clases.Ejm2Persona;

public class Ejm2Prueba {


public static void main(String[] args) {
Ejm2Persona Persona = new Ejm2Persona("Hugo");
System.out.print(Persona);
Persona.setNombre("David");
System.out.print(Persona);
}
}

a) Compare y explique entre el ejemplo 1 y el ejemplo 2 en cuanto a los constructores


b) Observe que ahora estamos usando el mtodo toString().
3

5) Herencia, teniendo la clase padre Persona y la clase hija Deportista, ver los siguientes grficos.

a) Crear la clase Ejm3Persona en el paquete Clases con el mismo cdigo de la clase


Ejm2Persona.
b) Crear la clase Ejm3Deportista en el paquete Clases con el siguiente cdigo
package Clases;

public class Ejm3Deportista extends Ejm3Persona {


public Ejm3Deportista(String nombre) {
super(nombre);
}
}

c) Crear tambin la clase principal Ejm3Prueba en el paquete Aplicacin, modificando el


main con el siguiente cdigo:
package Aplicacion;
import Clases.Ejm3Persona;
import Clases.Ejm3Deportista;

public class Ejm3Prueba {


public static void main(String[] args) {
Ejm3Persona Persona1 = new Ejm3Persona("Juan Perez");
System.out.print(Persona1);
Ejm3Deportista Persona2 = new Ejm3Deportista("Maria Lopez");
System.out.print(Persona2);
}
}
4

d) Analice la clase Ejm3Deportista que hereda de la clase Ejm3Persona


e) Analice el constructor de la clase Ejm3Deportista super().
f) Observe la clase principal Ejm3Prueba donde se instancia para la Persona1 con la clase
padre Ejm3Persona.
g) Observe la clase principal Ejm3Prueba donde se instancia para la Persona2 con la clase
hijo Ejm3Deportista

6) Herencia, modificando comportamiento del hijo


a) Crear la clase Ejm4Persona en el paquete Clases con el mismo cdigo de la clase
Ejm3Persona.
b) Crear la clase Ejm4Deportista en el paquete Clases con el mismo cdigo del
Ejm3Deportista y agregue el siguiente cdigo a esta clase:

public Ejm4Deportista(String nombre, String deporte) {


super(nombre);
nombredeporte = deporte;
}
public String getDeporte() {
return nombredeporte;
}
public void setDeporte(String deporte) {
nombredeporte = deporte;
}

c) Crear tambin la clase principal Ejm4Prueba en el paquete Aplicacin, modificando el


main con el siguiente cdigo:
package Aplicacion;
import Clases.Ejm4Persona;
import Clases.Ejm4Deportista;
public class Ejm4Prueba {
public static void main(String[] args) {
Ejm4Persona Persona1 = new Ejm4Persona("Juan Perez");
System.out.print(Persona1);
Ejm4Deportista Persona2 = new Ejm4Deportista("Maria Lopez");
System.out.print(Persona2);
Ejm4Deportista Persona3 = new Ejm4Deportista("Julia Aron","Voly");
System.out.print(Persona3);
}
}
5

d) Analice la clase Ejm4Deportista que hereda de la clase Ejm4Persona


e) Analice el constructor de la clase Ejm4Deportista super().
f) Observe recarga de constructores, uno con dos parmetros y otro con un slo parmetro
f) Observe la clase principal Ejm3Prueba donde se instancia para la Persona1 con la clase
padre Ejm4Persona.
g) Observe la clase principal Ejm4Prueba donde se instancia para la Persona2 con la clase
hijo Ejm4Deportista invocando al constructor con un slo parmetro.
h) Observe la clase principal Ejm4Prueba donde se instancia para la Persona3 con la clase
hijo Ejm4Deportista invocando al constructor con dos parmetros.

7) Herencia utilizando this; copie las clases del Ejm4* a Ejm5* tanto en el paquete aplicacin y en
el paquete Clases, seguidamente modifique en la clase main del Ejm5Prueba,
- En el constructor recargado con dos parmetros : en vez de super(nombre) a this(nombre)
- En todo los casos en vez de nombredeporte = deporte a this.nombredeporte = deporte
Observe que tanto super como this con formas de invocar al superclase como modificacin del
comportamiento del hijo, est claro que son ambas forma de usar valen de forma excluyente,
adems this no aplica al constructor principal de la clase Ejm5Deportista ya que sera recursivo.

SEGUNDA PARTE

1) Definir una clase Asalariado que nos permita representar a todos los trabajadores de la firma. A
partir de esa clase, definiremos dos subclases EmpleadoProduccion y EmpleadoDistribucion
que representan a los trabajadores de dicha firma que trabajan en las divisiones de produccin y
distribucin respectivamente. Los trabajadores de produccin trabajan por turnos (Maana,
Tarde, Noche). Los de distribucin tienen asignada una zona (o regin) donde deben distribuir
los productos, pero no trabajan por turnos.
6

TERCERA PARTE
1) Analice el ejemplo de la siguiente URL
http://stackoverflow.com/questions/3767365/super-in-java

También podría gustarte