Anda di halaman 1dari 5

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Facultad de Ingeniería de Sistemas e Informática


Escuela de Ingeniería de Sistemas
Curso: Algoritmia II
Prof. Robert Espinoza
Laboratorio de Herencia
TEMA: Herencia
 Implementación de una aplicación en Java
 Construcciones en múltiples clases Java
 Mejorar soluciones planteadas
DURACIÓN ESTIMADA : 01:40 horas.

I. OBJETIVOS
El presente laboratorio tiene por objetivos:
 Construir una Aplicación OO aplicando herencia (Vease ejemplos )
 Implementar múltiples clases
o Aplicar y reconocer Herencia y otras relaciones ya vistas.
o Construir objetos de la súper clase: (Se hereda atributos y métodos).
o Sobre escritura de atributos y métodos
 Aplicación a problemas concretos.

II. RESUMEN
En esta práctica usted implementa una Aplicación OO aplicando herencia utilizando múltiples clases utilizando en
lenguaje Java en el IDE JCreator o NetBeans y reforzando sus conocimientos en la implementación de
operaciones básicas de arreglos unidimensional.

III.CONSTRUCCION DE LA APLICACIÓN
Persona
1. Se requiere una aplicación OO mediante herencia
y otras relaciones para tener información de los
alumnos de la FISI de pre y pos grado.
Los alumnos de pre grado pueden llevar de 1 hasta
5 cursos de igual manera los alumnos de post
grado, además los alumnos son personas egresadas AlumnoPre
de educación secundaria registrados con los datos
de nombre, dirección y teléfono. Un curso tiene
atributos: código y número de créditos.
1
Las operaciones solicitadas son información de la
persona, de los alumnos con los cursos y créditos PruebaHerencia crea AlumnoPos
total.
Se pide implementar una aplicación de consola en
Java y el diagrama de clases de la aplicación. 1, 5

Curso

Clase Persona

class Persona{
String nombre;
private String direccion;
private String fono;
public Persona(String nom, String dir, String f){
nombre = nom;
direccion = dir;
fono = f;
}
public String getNombre(){
return nombre;
}

//Se define el metodo mostrarInfo


public void mostrarInfo(){
1
System.out.println("nombre : " + nombre);
System.out.println("direccion : " + direccion);
System.out.println("telefono : " + fono);
}
}

Clase Curso

class Curso{
private String codigo;
private int creditos;
public Curso(String sig, int cred){
codigo = sig;
creditos = cred;
}
public int getCreditos(){
return creditos;
}
public String getCodigo(){
return codigo;
}
}

Clase AlumnoPre que hereda de Persona

class AlumnoPre extends Persona{


private Curso[] cursos;
private int cantidadCursos;
private int maximaCantidadCursos;

public AlumnoPre(String nom, String dir, String f){


//Debemos construir los objetos de persona y de alumno
super(nom, dir, f); //Llama al constructor de la Super clase
cantidadCursos = 0;
maximaCantidadCursos = 6;
cursos = new Curso[maximaCantidadCursos];
}

//Se redefine el metodo mostrarInfo de la clase Persona


public void mostrarInfo(){
super.mostrarInfo();
System.out.println("Num cursos : " + cantidadCursos);
System.out.println("Num creditos : " + cantidadTotalCreditos());
}

public void asignaCurso(Curso c){


if (!tieneCurso(c)){
if ( cantidadCursos == maximaCantidadCursos ){
System.out.println("alumno " + nombre +
" NO PUEDE tener mas cursos ...");
}
else{
cursos[cantidadCursos] = c;
cantidadCursos++;
}
}
}
public boolean tieneCurso(Curso c){
boolean tiene = false;
int i;

for( i = 0; i < cantidadCursos; i++){


if (cursos[i] == c ){
tiene = true;
}

2
}
return tiene;
}

public int cantidadTotalCreditos(){


int c = 0, i;
for( i = 0; i < cantidadCursos; i++){
c = c + cursos[i].getCreditos();
}
return c;
}
}

Clase AlumnoPos que hereda de Persona

class AlumnoPos extends AlumnoPre{


private String carreraPregrado;
public AlumnoPos(String nom, String dir, String f, String carrera){
//Llama al contructorde la Super Clase
super(nom, dir, f);
carreraPregrado = carrera;
}
//Se redefine el metodo mostrarInfo de la clase AlumnoPre
public void mostrarInfo(){
super.mostrarInfo();
System.out.println("graduado en : " + carreraPregrado);
}
}

Clase PruebaHerencia

class THerencia{
public static void main(String[] args){
Curso c1 = new Curso("202021", 6);
Curso c2 = new Curso("202023", 5);
Curso c3 = new Curso("202026", 4);
Curso c4 = new Curso("207127", 12);

Persona p1=new Persona("Adan", "Av. Wilson 1800", "019939123");


AlumnoPre a1=new AlumnoPre("Edith", "Paseo Colon 234", "019922124");
AlumnoPos ap1=new AlumnoPos("Juan","Av Arequipa 2323", "019931125",
"Ing Sistemas");

a1.asignaCurso(c1);
a1.asignaCurso(c2);
a1.asignaCurso(c3);

ap1.asignaCurso(c1);
ap1.asignaCurso(c4);

p1.mostrarInfo();
System.out.println();

a1.mostrarInfo();
System.out.println();

ap1.mostrarInfo();
//Que pasa si:
System.out.println("\n...!\n");
Persona p2=p1;
Persona p3=a1;
Persona p4=ap1;

//¿Que se muestra y porque?


p2.mostrarInfo();

3
System.out.println();
p3.mostrarInfo();
System.out.println();
p4.mostrarInfo();
}
}

2. Diagrama de clases Alumno, véase implementación y complete el diagrama

Persona PruebaPersona

AlumnoPre

class Persona{
String nombre;
private String direccion;
private String fono;

public Persona(String nom, String dir, String f){


nombre = nom;
direccion = dir;
fono = f;
}

public String getNombre(){


return nombre;
}

public String getDireccion(){


return direccion;
}
//Se define el metodo mostrarInfo
public void mostrarInfo(){
System.out.println("nombre : " + nombre);
System.out.println("direccion : " + direccion);
System.out.println("telefono : " + fono);
}
}

class AlumnoPre extends Persona{


private String cod;

public AlumnoPre(String nom, String dir, String f, String codigo){


//Debemos construir los objetos de persona y de alumno
super(nom, dir, f); //Llama al constructor de la Super clase
cod=codigo;
}
//Se redefine el metodo mostrarInfo de la clase Persona
public void mostrarInfo(){
super.mostrarInfo();
System.out.println("Codigo : " + cod);
}
}

class PruebaPersona{
public static void main(String[] args){
Persona p1 = new Persona("Adan", "Av. Wilson 1800", "019939123");

4
AlumnoPre a1 = new AlumnoPre("Edith", "Paseo Colon 234", "019922124",
"2011340");

System.out.println("Direc Persona :"+p1.getDireccion());


System.out.println("Direc Alumno :"+a1.getDireccion());
p1.mostrarInfo();
System.out.println();

a1.mostrarInfo();
System.out.println();

//Que pasa si:


System.out.println("\n...!\n");
Persona p2=p1;
Persona p3=a1;

//¿Que se muestra y porque?


p2.mostrarInfo();
System.out.println();
p3.mostrarInfo();
}
}
3. Implemente una aplicación orientada a objetos a partir de las clases (transporte) que se muestra y al menos dos
subclases para cada una agregando atributos y métodos adecuadamente.

Terrestre Marítimo Aéreo

4. Implemente una aplicación que permita gestionar a la escuela, la lista de alumnos matriculados en un determinado
curso.
Clases: persona, alumno, curso, aula, matricula.
El número de alumnos que se pueden matricular es variable, pero debido a la capacidad de las aulas de laboratorio,
el máximo es de 20 alumnos por curso
Cada alumno tiene los datos de código, nombre , escuela y dirección.
Cuando un alumno se matricule se debe comprobar que no se pretende matricular un alumno con el mismo código.
La interacción del administrador o usuario del curso será a través de una interfaz de consola basada en menú.
Funcionalidades y requisitos:
Matricular
4.1 El usuario selecciona la opción matricular alumno
4.2 Se comprueba si hay vacantes, si no hay se muestra mensaje apropiado y finaliza
4.3 La aplicación permite ingresar el código del alumno. Si no existe, se da un mensaje apropiado
4.4 Se ingresa los datos de cursos a matricular
4.5 La aplicación consistencia el código de matrícula, si existe termina y finaliza dando un mensaje apropiado
4.6 La aplicación agrega al alumno al curso
Buscar alumno
4.7 El usuario selecciona la opción buscar alumno
4.8 La aplicación permite ingresar el código de alumno
4.9 La aplicación busca entre los alumnos matriculados :
4.9.1 Si lo encuentra muestra datos del alumno
4.9.2 Si no encuentra muestra “no encontrado”
4.10 El usuario termina la opción
Ver datos de curso
4.11 El usuario selecciona la opción ver datos del curso
4.12 La aplicación muestra la relación de alumnos matriculados
4.13 El usuario termina la opción

Se pide realizar el diseño de diagramas de clase de la aplicación e implementar el diseño realizado.

Anda mungkin juga menyukai