Vous êtes sur la page 1sur 22

Universidad Nacional Mayor de San Marcos

Facultad de Ingeniera de Sistemas e Informtica


E.A.P. de Ingeniera de Sistemas
Algortmica II

GUIA D DE LABORATORIO
RELACIONES ENTRE CLASES
COMPOSICION AGREGACION - ASOCIACION
Objetivo:
Aplicar los conceptos de la Programacin Orientada a Objetos.
Aplicar las definiciones de Relaciones entre clases.
Descripcin:
A continuacin se presentan varias clases. Cada clase contiene mtodos de tipo SET
y GET, y mtodos operacionales. Los mtodos operacionales son mtodos que
implementan las operaciones FUNCIONALIDADES del objeto.
En esta gua de Laboratorio se va a trabajar con las clases Alumno, Profesor,
ArregloDeAlumno, ArregloDeProfesor, Matricula. El objetivo es comprender como se
relacionan estas clases. El alumno debe encontrar el mecanismo que utilizan las
clases para el envi de datos; as como las referencias entre objetos. Al finalizar
esta gua, cada alumno comprender cuando, donde, como y por que se
instancian objetos.
Recordar que nos encontramos en un entorno Orientado a Objetos. Eso quiere decir
que cada clase tiene atributos y mtodos PROPIOS de su correspondiente objeto
real. Se pide analizar el cdigo desarrollado, e implementar todas las
funcionalidades.
Clase Alumno
A continuacin se presenta la clase Alumno, que define los atributos y mtodos ms
importantes de un objeto real Alumno, obtenidos mediante el proceso de la
ABSTRACCIN.
Por ejemplo: el Alumno Juan Perez Perez
Cdigo
Nombre

ALU100
JUAN PEREZ PEREZ

La clase Alumno implementa un mtodo constructor por defecto, un mtodo


constructor COPIA, varios mtodos de tipo SET y GET, un mtodo llamado
devolverDatosAlumno() y al mtodo toString(). Es importante recalcar que la
clase Alumno declara un arreglo de objetos de tipo Profesor Profesor P[] el cual
servir para GUARDAR las referencias de los objetos de tipo Profesor. Es decir con
este arreglo de Profesores, tratamos de representar la ASOCIACION entre UN
ALUMNO y CERO o MUCHOS PROFESORES. Por ello, se ha implementado 2 mtodos
relacionados a este propsito: (1) setProfesor(Profesor prof) y (2) getProfesor(int
indice)

Pasos a seguir 1:

Algortmica II

Gua D de Laboratorio Relaciones entre clases

1. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo


Integrado.
2. Generar el archivo Alumno.class (Proceso de Compilacin)

Nota:
Las clases utilizan los mtodos de la clase Base.java, que se encuentra en el
paquete ClasesBase

La clase Alumno
package Matricula;
import javax.swing.JOptionPane;
public class Alumno {
private String codigo;
private String nombre;
private Profesor P[];
private int indiceProfesor;
public Alumno() {
this.codigo = "A1234";
this.nombre = "Perez Lopez, Juan";
this.P = new Profesor[5];
this.indiceProfesor = 0;
}
public Alumno(Alumno other) {
if(this != other) {
this.codigo = other.codigo;
this.nombre = other.nombre;
this.P = other.P;
this.indiceProfesor = other.indiceProfesor;
}
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setProfesores(Profesor[] P) {
this.P = P;
}
public void setIndiceProfesor(int indiceProfesor) {
this.indiceProfesor = indiceProfesor;
}
public String getCodigo() {
return (this.codigo);
}
Prof. Arn Elas Herrera Ponte

Pg. 2

Algortmica II

Gua D de Laboratorio Relaciones entre clases

public String getNombre() {


return (this.nombre);
}
public Profesor[] getProfesores() {
return (this.P);
}
public int getIndiceProfesor() {
return (this.indiceProfesor);
}
public String toString() {
String sep = System.getProperty("line.separator");
StringBuffer buffer = new StringBuffer();
buffer.append(sep);
buffer.append("codigo = ");
buffer.append(codigo);
buffer.append(sep);
buffer.append("nombre = ");
buffer.append(nombre);
buffer.append(sep);
return buffer.toString();
}
public String devolverDatosAlumno(){
return codigo + " - " + nombre;
}
public void setProfesor(Profesor prof){
if(indiceProfesor < P.length){
this.P[indiceProfesor] = prof;
indiceProfesor++;
JOptionPane.showMessageDialog(null,"Ingreso del Profesor con xito",
"Asociando al Alumno con un profesor",
JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null,"No se puede ingresar mas Profesores\n"+
"Se ha alcanzado el lmite mximo de profesores por alumno",
"Ttulo",
JOptionPane.INFORMATION_MESSAGE);
}
}
public Profesor getProfesor(int indice){
return P[indice];
}
}

Clase Profesor
A continuacin se presenta la clase Profesor, que define los atributos y mtodos
ms importantes de un objeto real Profesor, obtenidos mediante el proceso de la
ABSTRACCIN.
Por ejemplo: el Profesor Johnny Reyes Reyes
Prof. Arn Elas Herrera Ponte

Pg. 3

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Cdigo
Nombre

PRO510
JOHNNY REYES REYES

La clase Profesor implementa un mtodo constructor por defecto, un mtodo


constructor COPIA, varios mtodos de tipo SET y GET, un mtodo llamado
devolverDatosProfesor() y al mtodo toString(). Es importante recalcar que la
clase Profesor declara un arreglo de objetos de tipo Alumno Alumno A[] el cual
servir para GUARDAR las referencias de los objetos de tipo Alumno. Es decir con
este arreglo de Alumnos, tratamos de representar la ASOCIACION entre UN
PROFESOR y CERO o MUCHOS ALUMNOS. Por ello, se ha implementado 2 mtodos
relacionados a este propsito: (1) setAlumno(Alumno alu) y (2) getAlumno(int
indice)

Pasos a seguir 2:
3. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
4. Generar el archivo Profesor.class (Proceso de Compilacin)

La clase Profesor
package Matricula;
import javax.swing.JOptionPane;
public class Profesor {
private String codigo;
private String nombre;
private Alumno A[];
private int indiceAlumno;
public Profesor() {
this.codigo = "P1000";
this.nombre = "Ramos Reyes, Jose";
this.A = new Alumno[5];
this.indiceAlumno = 0;
}
public Profesor(Profesor other) {
if(this != other) {
this.codigo = other.codigo;
this.nombre = other.nombre;
this.A = other.A;
this.indiceAlumno = other.indiceAlumno;
}
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setAlumnos(Alumno[] A) {
Prof. Arn Elas Herrera Ponte

Pg. 4

Algortmica II

Gua D de Laboratorio Relaciones entre clases

this.A = A;
}
public void setIndiceAlumno(int indiceAlumno) {
this.indiceAlumno = indiceAlumno;
}
public String getCodigo() {
return (this.codigo);
}
public String getNombre() {
return (this.nombre);
}
public Alumno[] getAlumnos() {
return (this.A);
}
public int getIndiceAlumno() {
return (this.indiceAlumno);
}
public String toString() {
String sep = System.getProperty("line.separator");
StringBuffer buffer = new StringBuffer();
buffer.append(sep);
buffer.append("codigo = ");
buffer.append(codigo);
buffer.append(sep);
buffer.append("nombre = ");
buffer.append(nombre);
buffer.append(sep);
return buffer.toString();
}
public String devolverDatosProfesor(){
return codigo + " - " + nombre;
}
public void setAlumno(Alumno alu){
if(indiceAlumno < A.length){
this.A[indiceAlumno] = alu;
indiceAlumno++;
JOptionPane.showMessageDialog(null,"Ingreso del Alumno con xito",
"Asociando al Profesor con un Alumno",
JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null,"No se puede ingresar mas Alumnos\n"+
"Se ha alcanzado el lmite mximo de alumnos por profesor",
"Ttulo",
JOptionPane.INFORMATION_MESSAGE);
}
}
public Alumno getAlumno(int indice){
return A[indice];
}
Prof. Arn Elas Herrera Ponte

Pg. 5

Algortmica II

Gua D de Laboratorio Relaciones entre clases

}
Clase ArregloDeAlumno
A continuacin se presenta la clase ArregloDeAlumno, que define los atributos y
mtodos ms importantes de un arreglo de objetos real Alumno, obtenidos
mediante el proceso de la ABSTRACCIN. Los mtodos del auto son:
public ArregloDeAlumno(ArregloDeProfesor profesores){ }
Este es un mtodo Constructor por parmetros. Recibe por parmetro a una
referencia de la clase ArregloDeProfesor.
public int getCantidadDeAlumnos(){ }
Este mtodo devuelve la cantidad de objetos de tipo Alumno que se han
almacenado en el ArrayList.
public boolean verificarSiYaExisteElCodigo(String codigo){ }
PARA IMPLEMENTAR
Este mtodo verifica si ya existe un Alumno con dicho codigo.
Este mtodo es IMPORTANTISIMO.
Siempre se deber usar este mtodo para VERIFICAR la existencia de un Alumno.
public Alumno registrarDatosDelNuevoAlumno(String codigo){ }
Este mtodo instancia a un objeto de tipo Alumno, luego se van ingresan por
teclado el valor de sus atributos, para finalmente RETORNAR la referencia a dicho
objeto.
public void aadirNuevoAlumno(){ .. }
Este mtodo aade un nuevo objeto de tipo Alumno al ArrayList llamado
arregloAlumno.
public int devolverIndiceDelAlumnoEnElArreglo(String codigo){ .. }
Este mtodo recibe por parmetro una variable de tipo String y recorre el ArrayList
para verificar si existe el valor de dicha variable. Si lo encuentra, entonces
RETORNAR el indice (posicion) de dicho objeto. Si NO lo encuentra, entonces
RETORNA el valor de -1.
public Alumno getAlumnoPorIndice(int indice){ .. }
Este mtodo devuelve un objeto de tipo Alumno.
RETORNA una copia del objeto que se encuentra en el ArrayList llamado
arregloAlumno. Antes de devolver se hace un CASTING de tipo Alumno.
public void mostrarDatosDelAlumno(int indice){ }
Este mtodo muestra el valor de los atributos de un objeto de tipo Alumno.
Obtenemos un objeto de tipo Alumno que se encuentra en 'indice' del ArrayList
'arregloAlumno'. Luego verificamos si dicho Alumno esta ASOCIADO a algun
Profesor, si la respuesta es positiva entonces mostramos los datos de sus
Profesores (Siempre y cuando TENGA PROFESORES).
public void mostrarDatosDeLosAlumnos(){ ... }
Este mtodo se recorre el ArrayList llamado 'arregloAlumno' para mostrar los datos
de cada objeto de tipo Alumno.
public void mostrarListadoDeProfesores(){ }
Este mtodo recorre el arreglo de Profesores. Se muestra en una lnea los datos de
cada objeto de tipo Profesor.
public int pedirSeleccionarAUnProfesor(){ }
Prof. Arn Elas Herrera Ponte

Pg. 6

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Este mtodo devuelve la posicin del Profesor SELECCIONADO. Al final del mtodo
se tiene que RESTAR 1, porque el ndice del arreglo empieza en CERO.
public void asociarAlumnoConSuProfesor(){ }
Este mtodo permite ASOCIAR (asignar) UN Alumno y UNO o Varios profesores.
Para ello ingresamos el cdigo del Alumno.
Validamos SI existe el cdigo del Alumno. Si el cdigo SI EXISTE, obtenemos el
ndice del Profesor que ha sido seleccionado para la asociacin.
Obtenemos el ndice del Alumno que se encuentra en el ArrayList.
Obtenemos una COPIA del objeto de tipo Alumno que se encuentra en el ArrayList.
ASOCIAMOS un nuevo PROFESOR con el Alumno, es decir, hacemos guardar la
REFERENCIA del objeto dentro del arreglo de objetos de tipo Profesor que se
encuentra dentro de la clase Alumno.
REEMPLAZAMOS (CHANCAMOS) en el mismo ndice con el objeto de tipo Alumno
llamado 'auxiliar' YA MODIFICADO
public void menu(){ }
Este mtodo muestra un MENU de opciones relacionadas a la clase.
Permite interactuar con el USUARIO.

Pasos a seguir 3:
5. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
6. Generar el archivo ArregloDeAlumno.class (Proceso de Compilacin)

La clase ArregloDeAlumno
package Matricula;
import javax.swing.JOptionPane;
import java.util.ArrayList;
import ClasesBase.Base;
public class ArregloDeAlumno {
//Declaracion de Atributos
private ArrayList arregloAlumno;
private ArregloDeProfesor arregloProfesor;
//Declaracion de Mtodos
//Mtodo Constructor por parmetros
public ArregloDeAlumno(ArregloDeProfesor profesores){
//Instanciamos un objeto de tipo ArrayList para
//almacenar a objetos de tipo Alumno
arregloAlumno = new ArrayList();
//Hacemos referencia al Arreglo de Profesores
//que se encuentra en la clase Matricula
arregloProfesor = profesores;
}
//Este mtodo devuelve la cantidad de objetos de tipo Alumno
//que se han almacenado en el ArrayList
public int getCantidadDeAlumnos(){
return arregloAlumno.size();
}
Prof. Arn Elas Herrera Ponte

Pg. 7

Algortmica II

Gua D de Laboratorio Relaciones entre clases

//Este mtodo verifica si ya existe un Alumno con dicho codigo


public boolean verificarSiYaExisteElCodigo(String codigo){
//Para implementar...
return true;
}
//Este mtodo instancia a un objeto de tipo Alumno
//luego se van ingresan por teclado el valor de sus atributos
//para RETORNAR la referencia a dicho objeto
public Alumno registrarDatosDelNuevoAlumno(String codigo){
String dato;
Alumno alu = new Alumno();
alu.setCodigo( codigo );
dato = Base.ingresarDato("Ingrese el nombre del Alumno:");
alu.setNombre( dato );
return alu;
}
//Este mtodo aade un nuevo objeto de tipo Alumno
public void aadirNuevoAlumno(){
String dato;
dato = Base.ingresarDato("Ingrese el codigo del Alumno:");
if(verificarSiYaExisteElCodigo( dato )){
arregloAlumno.add( registrarDatosDelNuevoAlumno(dato) );
JOptionPane.showMessageDialog(null,"Registro de datos realizado con xito.",
"Nuevo Alumno",
JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null,"El cdigo ingresado YA existe.",
"Cdigo repetido",
JOptionPane.INFORMATION_MESSAGE);
}
}
//Este mtodo recibe por parmetro una variable de tipo String y
//recorre el ArrayList para verificar si existe el valor de dicha variable
//Si lo encuentra, entonces RETORNAR el indice (posicion) de dicho objeto
//Si NO lo encuentra, entonces RETORNA el valor de -1
public int devolverIndiceDelAlumnoEnElArreglo(String codigo){
int indice = -1;
for(int i = 0; i<arregloAlumno.size(); i++){
Alumno aux = (Alumno)arregloAlumno.get(i);
if(aux!=null){
if(aux.getCodigo().equals(codigo)){
return i;
}
}
}
return indice;
}
//Este mtodo devuelve un objeto de tipo Alumno
//RETORNA una copia del objeto que se encuentra en el ArrayList
public Alumno getAlumnoPorIndice(int indice){
//Hacemos un CASTING de tipo Alumno
Prof. Arn Elas Herrera Ponte

Pg. 8

Algortmica II

Gua D de Laboratorio Relaciones entre clases

return (Alumno)arregloAlumno.get(indice);
}
//Este mtodo muestra el valor de los atributos de un objeto de tipo Alumno
public void mostrarDatosDelAlumno(int indice){
//Obtenemos un objeto de tipo Alumno
//que se encuentra en 'indice' del ArrayList 'arregloAlumno'
Alumno aux = getAlumnoPorIndice(indice);
int cantidadProfesores = aux.getIndiceProfesor();
System.out.println("********************");
System.out.println("* DATOS DEL ALUMNO *");
System.out.println("********************");
System.out.println(aux.toString());
//Mostramos los datos de sus Profesores
//siempre y cuando TENGA PROFESORES
if(cantidadProfesores > 0){
System.out.println("***************************");
System.out.println("* DATOS DE SUS PROFESORES *");
System.out.println("***************************");
for(int i=0; i<cantidadProfesores; i++){
System.out.println("*************************");
System.out.println("* DATOS DEL PROFESOR "+(i+1)+" *");
System.out.println("*************************");
Profesor prof = aux.getProfesor(i);
System.out.println(prof.toString());
}
System.out.println("*************************\n");
}
}
//Este mtodo se recorre el ArrayList llamado 'arregloAlumno'
//para mostrar los datos de cada objeto de tipo Alumno
public void mostrarDatosDeLosAlumnos(){
if(arregloAlumno.size() > 0){
for (int i = 0; i<arregloAlumno.size(); i++){
mostrarDatosDelAlumno(i);
}
}else{
JOptionPane.showMessageDialog(null,"No existen Alumnos regsitrados.",
"Ttulo",
JOptionPane.INFORMATION_MESSAGE);
}
}
//Este mtodo recorre el arreglo de Profesores
//Se muestra en una linea los datos de cada objeto de tipo Profesor
public void mostrarListadoDeProfesores(){
Profesor prof = null;
for(int i=0; i<arregloProfesor.getCantidadDeProfesores(); i++){
prof = arregloProfesor.getProfesorPorIndice(i);
System.out.println((i+1) + ".- " + prof.devolverDatosProfesor());
}
}
//Este mtodo devuelve la posicion del Profesor SELECCIONADO
public int pedirSeleccionarAUnProfesor(){
Prof. Arn Elas Herrera Ponte

Pg. 9

Algortmica II

Gua D de Laboratorio Relaciones entre clases

String dato;
int opcion;
do{
System.out.println("Lista de Profesores Activos");
mostrarListadoDeProfesores();
dato = JOptionPane.showInputDialog("Ingrese el nmero del Profesor:");
opcion = Integer.parseInt(dato);
}while(opcion<1||opcion>arregloProfesor.getCantidadDeProfesores());
//A 'opcion' le RESTAMOS 1, porque el indice del arreglo empieza en CERO
return (opcion-1);
}
//Este mtodo permite ASOCIAR (asignar) UN Alumno y UNO o Varios profesores
public void asociarAlumnoConSuProfesor(){
//Ingresamos el cdigo del Alumno
String dato = Base.ingresarDato("Ingrese el codigo del Alumno:");
int indice, opcion;
//Validamos SI existe el cdigo del Alumno
if(verificarSiYaExisteElCodigo( dato )){
//Obtenemos el indice del Profesor
opcion = pedirSeleccionarAUnProfesor();
//Obtenemos el indice del Alumno que se encuentra en el ArrayList
indice = devolverIndiceDelAlumnoEnElArreglo(dato);
//Obtenemos una COPIA del objeto de tipo Alumno
//que se encuentra en el ArrayList
Alumno auxiliar = (Alumno)arregloAlumno.get(indice);
//ASOCIAMOS un nuevo PROFESOR con el Alumno
//es decir, hacemos guardar la REFERENCIA del objeto
//dentro del arreglo de objetos de tipo Profesor
//que se encuentra dentro de la clase Alumno
auxiliar.setProfesor(arregloProfesor.getProfesorPorIndice(opcion));
//REEMPLAZAMOS (CHANCAMOS) en el mismo indice
//con el objeto de tipo Alumno llamado 'auxiliar' YA MODIFICADO
arregloAlumno.set(indice,auxiliar);
JOptionPane.showMessageDialog(null,"Se ha ASOCIADO Un Alumno y Un Profesor",
"Asociar",
JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null,"No existe el cdigo del Alumno.",
"Ingreso de datos",
JOptionPane.WARNING_MESSAGE);
}
}
//Este mtodo muestra un MENU de opciones relacionadas a la clase
//Permite interactuar con el USUARIO
public void menu(){
int opcion;
String arregloOpciones[] = {"1.- Aadir Nuevo Alumno",
"2.- Mostrar Datos de los Alumnos",
"3.- Salir"};
do{
opcion = Base.pintarMenu(arregloOpciones);
switch(opcion){
case 1: aadirNuevoAlumno();
break;
case 2: mostrarDatosDeLosAlumnos();
break;
Prof. Arn Elas Herrera Ponte

Pg. 10

Algortmica II

Gua D de Laboratorio Relaciones entre clases


}

}while(opcion!=arregloOpciones.length);
}
}

Clase ArregloDeProfesor
A continuacin se presenta la clase ArregloDeProfesor, que define los atributos y
mtodos ms importantes de un arreglo de objetos real Profesor, obtenidos
mediante el proceso de la ABSTRACCIN. Los mtodos del auto son:
public ArregloDeProfesor(){ }
Este es un mtodo Constructor por defecto. Instanciamos un objeto de tipo
ArrayList para almacenar a objetos de tipo Profesor.
public void hacerReferenciaAlArregloDeAlumnos(ArregloDeAlumno alumnos){ }
Hacemos referencia al Arreglo de Alumnos que se encuentra en la clase Matricula.
public int getCantidadDeProfesores(){ }
Este mtodo devuelve la cantidad de objetos de tipo Profesor que se han
almacenado en el ArrayList.
public boolean verificarSiYaExisteElCodigo(String codigo){ }
PARA IMPLEMENTAR
Este mtodo verifica si ya existe un Profesor con dicho cdigo.
Este mtodo es IMPORTANTISIMO.
Siempre se deber usar este mtodo para VERIFICAR la existencia de un Profesor.
public Profesor registrarDatosDelNuevoProfesor(String codigo){ }
Este mtodo instancia a un objeto de tipo Profesor, luego se van ingresan por
teclado el valor de sus atributos, para finalmente RETORNAR la referencia a dicho
objeto.
public void aadirNuevoProfesor(){ .. }
Este mtodo aade un nuevo objeto de tipo Profesor al ArrayList llamado
arregloProfesor.
public int devolverIndiceDelProfesorEnElArreglo (String codigo){ .. }
Este mtodo recibe por parmetro una variable de tipo String y recorre el ArrayList
para verificar si existe el valor de dicha variable. Si lo encuentra, entonces
RETORNAR el indice (posicion) de dicho objeto. Si NO lo encuentra, entonces
RETORNA el valor de -1.
public Profesor getProfesorPorIndice(int indice){ .. }
Este mtodo devuelve un objeto de tipo Profesor.
RETORNA una copia del objeto que se encuentra en el ArrayList llamado
arregloProfesor. Antes de devolver se hace un CASTING de tipo Profesor.
public void mostrarDatosDelProfesor(int indice){ }
Este mtodo muestra el valor de los atributos de un objeto de tipo Profesor.
Obtenemos un objeto de tipo Profesor que se encuentra en 'indice' del ArrayList
'arregloProfesor'. Luego verificamos si dicho Profesor esta ASOCIADO a algn
Alumno, si la respuesta es positiva entonces mostramos los datos de sus Alumnos
(Siempre y cuando TENGA ALUMNOS).
public void mostrarDatosDeLosProfesores(){ ... }
Prof. Arn Elas Herrera Ponte

Pg. 11

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Este mtodo se recorre el ArrayList llamado 'arregloProfesor' para mostrar los datos
de cada objeto de tipo Profesor.
public void asociarProfesorConSuAlumno(){ }
PARA IMPLEMENTAR
Este mtodo debe permitir asociar un Profesor con CERO o MUCHOS Alumnos. Para
ello es importante contar con Alumnos registrados.
public void menu(){ }
Este mtodo muestra un MENU de opciones relacionadas a la clase.
Permite interactuar con el USUARIO.

Pasos a seguir 4:
7. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
8. Generar el archivo ArregloDeProfesor.class (Proceso de Compilacin)

La clase ArregloDeProfesor
package Matricula;
import javax.swing.JOptionPane;
import java.util.ArrayList;
import ClasesBase.Base;
public class ArregloDeProfesor {
//Declaracion de Atributos
private ArrayList arregloProfesor;
private ArregloDeAlumno arregloAlumno;
//Declaracion de Mtodos
//Mtodo Constructor por defecto
public ArregloDeProfesor(){
//Instanciamos un objeto de tipo ArrayList para
//almacenar a objetos de tipo Profesor
arregloProfesor = new ArrayList();
}
public void hacerReferenciaAlArregloDeAlumnos(ArregloDeAlumno alumnos){
//Hacemos referencia al Arreglo de Alumnos
//que se encuentra en la clase Matricula
arregloAlumno = alumnos;
}
//Este mtodo devuelve la cantidad de objetos de tipo Profesor
//que se han almacenado en el ArrayList
public int getCantidadDeProfesores(){
return arregloProfesor.size();
}
//Este mtodo verifica si ya existe un Profesor con dicho codigo
public boolean verificarSiYaExisteElCodigo(String codigo){
//Para implementar...
return true;
}

Prof. Arn Elas Herrera Ponte

Pg. 12

Algortmica II

Gua D de Laboratorio Relaciones entre clases

//Este mtodo instancia a un objeto de tipo Profesor


//luego se van ingresan por teclado el valor de sus atributos
//para RETORNAR la referencia a dicho objeto
public Profesor registrarDatosDelNuevoProfesor(String codigo){
String dato;
Profesor prof = new Profesor();
prof.setCodigo( codigo );
dato = Base.ingresarDato("Ingrese el nombre del Profesor:");
prof.setNombre( dato );
return prof;
}
//Este mtodo aade un nuevo objeto de tipo Profesor
public void aadirNuevoProfesor(){
String dato;
dato = Base.ingresarDato("Ingrese el codigo del Profesor:");
if(verificarSiYaExisteElCodigo( dato )){
arregloProfesor.add( registrarDatosDelNuevoProfesor(dato) );
JOptionPane.showMessageDialog(null,"Registro de datos realizado con xito.",
"Nuevo Profesor",
JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null,"El cdigo ingresado YA existe.",
"Cdigo repetido",
JOptionPane.INFORMATION_MESSAGE);
}
}
//Este mtodo recibe por parmetro una variable de tipo String y
//recorre el ArrayList para verificar si existe el valor de dicha variable
//Si lo encuentra, entonces RETORNAR el indice (posicion) de dicho objeto
//Si NO lo encuentra, entonces RETORNA el valor de -1
public int devolverIndiceDelProfesorEnElArreglo(String codigo){
int indice = -1;
for(int i = 0; i<arregloProfesor.size(); i++){
Profesor aux = (Profesor)arregloProfesor.get(i);
if(aux!=null){
if(aux.getCodigo().equals(codigo)){
return i;
}
}
}
return indice;
}
//Este mtodo devuelve un objeto de tipo Profesor
//RETORNA una copia del objeto que se encuentra en el ArrayList
public Profesor getProfesorPorIndice(int indice){
//Hacemos un CASTING de tipo Profesor
return (Profesor)arregloProfesor.get(indice);
}
//Este mtodo muestra el valor de los atributos de un objeto de tipo Alumno
public void mostrarDatosDelProfesor(int indice){
//Obtenemos un objeto de tipo Profesor
//que se encuentra en 'indice' del ArrayList 'arregloProfesor'
Prof. Arn Elas Herrera Ponte

Pg. 13

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Profesor aux = (Profesor)arregloProfesor.get(indice);


int cantidadAlumnos = aux.getIndiceAlumno();;
System.out.println("**********************");
System.out.println("* DATOS DEL PROFESOR *");
System.out.println("**********************");
System.out.println(aux.toString());
//Mostramos los datos de sus Profesores
//siempre y cuando TENGA PROFESORES
if(cantidadAlumnos > 0){
System.out.println("************************");
System.out.println("* DATOS DE SUS ALUMNOS *");
System.out.println("************************");
for(int i=0; i<cantidadAlumnos; i++){
System.out.println("***********************");
System.out.println("* DATOS DEL ALUMNO "+(i+1)+" *");
System.out.println("***********************");
Alumno alu = aux.getAlumno(i);
System.out.println(alu.toString());
}
System.out.println("*************************\n");
}
}
//Este mtodo se recorre el ArrayList llamado 'arregloProfesor'
//para mostrar los datos de cada objeto de tipo Profesor
public void mostrarDatosDeLosProfesores(){
if(arregloProfesor.size() > 0){
for (int i = 0; i<arregloProfesor.size(); i++){
mostrarDatosDelProfesor(i);
}
}else{
JOptionPane.showMessageDialog(null,"No existen Profesores regsitrados.",
"Ttulo",
JOptionPane.INFORMATION_MESSAGE);
}
}
//Este mtodo permite ASOCIAR (asignar) UN Profesor y UNO o Varios Alumnos
public void asociarProfesorConSuAlumno(){
//Para implementar...
}
//Este mtodo muestra un MENU de opciones relacionadas a la clase
//Permite interactuar con el USUARIO
public void menu(){
int opcion;
String arregloOpciones[] = {"1.- Aadir Nuevo Profesor",
"2.- Mostrar Datos de los Profesores",
"3.- Salir"};
do{
opcion = Base.pintarMenu(arregloOpciones);
switch(opcion){
case 1: aadirNuevoProfesor();
break;
Prof. Arn Elas Herrera Ponte

Pg. 14

Algortmica II

Gua D de Laboratorio Relaciones entre clases


case 2: mostrarDatosDeLosProfesores();
break;
}

}while(opcion!=arregloOpciones.length);
}
}
Clase Matricula
Esta clase declara dos atributos: (1) ArregloDeProfesor profesores y (2)
ArregloDeAlumno alumnos. Los cuales almacenarn los datos del programa. Esta
clase implementa los siguientes mtodos.
public Matricula(){ }
Est es el mtodo constructor por defecto.
Instancia los objetos profesores y alumnos, cada uno de los cuales almacenaran un
conjunto de objetos Profesor y Alumno respectivamente.
public void menu(){ }
PARA IMPLEMENTAR
Este mtodo muestra un MENU de opciones relacionadas a la clase.
Permite interactuar con el USUARIO.

Pasos a seguir 5:
9. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
10. Generar el archivo Matricula.class (Proceso de Compilacin)

La clase Matricula
package Matricula;
import javax.swing.JOptionPane;
import ClasesBase.Base;
public class Matricula {
private ArregloDeProfesor profesores;
private ArregloDeAlumno alumnos;
public Matricula(){
profesores = new ArregloDeProfesor();
alumnos = new ArregloDeAlumno(profesores);
profesores.hacerReferenciaAlArregloDeAlumnos(alumnos);
}
public void menu(){
int opcion;
String arregloOpciones[] = {"1.- Mantenimiento del Profesor",
"2.- Mantenimiento del Alumno",
"3.- Asociar Alumno con su Profesor",
"4.- Asociar Profesor con su Alumno",
"5.- Salir"};
Prof. Arn Elas Herrera Ponte

Pg. 15

Algortmica II

Gua D de Laboratorio Relaciones entre clases

do{
opcion = Base.pintarMenu(arregloOpciones);
switch(opcion){
case 1:
profesores.menu();
break;
case 2:
alumnos.menu();
break;
case 3:
alumnos.asociarAlumnoConSuProfesor();
break;
case 4:
//PARA IMPLEMENTAR
break;
}
}while(opcion != arregloOpciones.length);
}
}

Prof. Arn Elas Herrera Ponte

Pg. 16

Algortmica II

Gua D de Laboratorio Relaciones entre clases

EJECUCIN del Programa


Se muestra el men de opciones
1.- Mantenimiento del Profesor
2.- Mantenimiento del Alumno
3.- Asociar Alumno con su Profesor
4.- Asociar Profesor con su Alumno
5.- Salir
Ingrese su opcion:
Se ingresa la opcin
1
Se muestra un nuevo men de opciones
1.- Aadir Nuevo Profesor
2.- Mostrar Datos de los Profesores
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
1
Se ingresan los datos del PROFESOR
Ingrese el codigo del Profesor:PRO510
Ingrese el nombre del Profesor:JOHNNY REYES REYES

Se muestra de nuevo el men de opciones


1.- Aadir Nuevo Profesor
2.- Mostrar Datos de los Profesores
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
1
Se ingresan los datos del PROFESOR
Ingrese el codigo del Profesor:PRO511
Ingrese el nombre del Profesor:MARIA FLORES FLORES

Prof. Arn Elas Herrera Ponte

Pg. 17

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Se muestra de nuevo el men de opciones


1.- Aadir Nuevo Profesor
2.- Mostrar Datos de los Profesores
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
2
**********************
* DATOS DEL PROFESOR *
**********************
codigo = PRO510
nombre = JOHNNY REYES REYES
**********************
* DATOS DEL PROFESOR *
**********************
codigo = PRO511
nombre = MARIA FLORES FLORES
Se ingresa la opcin
1.- Aadir Nuevo Profesor
2.- Mostrar Datos de los Profesores
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
3
Se muestra el men de opciones INICIAL
1.- Mantenimiento del Profesor
2.- Mantenimiento del Alumno
3.- Asociar Alumno con su Profesor
4.- Asociar Profesor con su Alumno
5.- Salir
Ingrese su opcion:
Se ingresa la opcin
2
Se muestra un nuevo men de opciones
1.- Aadir Nuevo Alumno
2.- Mostrar Datos de los Alumnos
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
1
Se ingresan los datos del ALUMNO
Ingrese el codigo del Alumno:ALU001
Ingrese el nombre del Alumno:LUZ ALEGRE ALEGRIA

Prof. Arn Elas Herrera Ponte

Pg. 18

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Se muestra de nuevo men de opciones


1.- Aadir Nuevo Alumno
2.- Mostrar Datos de los Alumnos
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
2
********************
* DATOS DEL ALUMNO *
********************
codigo = ALU001
nombre = LUZ ALEGRE ALEGRIA
Se muestra de nuevo men de opciones
1.- Aadir Nuevo Alumno
2.- Mostrar Datos de los Alumnos
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
3
Se muestra el men de opciones INICIAL
1.- Mantenimiento del Profesor
2.- Mantenimiento del Alumno
3.- Asociar Alumno con su Profesor
4.- Asociar Profesor con su Alumno
5.- Salir
Ingrese su opcion:
Se ingresa la opcin
3
Se ingresa el cdigo del Alumno al cual se va a ASOCIAR un Profesor
Ingrese el codigo del Alumno:ALU001
Lista de Profesores Activos
1.- PRO510 - JOHNNY REYES REYES
2.- PRO511 - MARIA FLORES FLORES

Prof. Arn Elas Herrera Ponte

Pg. 19

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Se muestra el men de opciones INICIAL


1.- Mantenimiento del Profesor
2.- Mantenimiento del Alumno
3.- Asociar Alumno con su Profesor
4.- Asociar Profesor con su Alumno
5.- Salir
Ingrese su opcion:
Se ingresa la opcin
3
Se ingresa el cdigo del Alumno al cual se va a ASOCIAR un Profesor
Ingrese el codigo del Alumno:ALU001
Lista de Profesores Activos
1.- PRO510 - JOHNNY REYES REYES
2.- PRO511 - MARIA FLORES FLORES

Prof. Arn Elas Herrera Ponte

Pg. 20

Algortmica II

Gua D de Laboratorio Relaciones entre clases

Se muestra el men de opciones INICIAL


1.- Mantenimiento del Profesor
2.- Mantenimiento del Alumno
3.- Asociar Alumno con su Profesor
4.- Asociar Profesor con su Alumno
5.- Salir
Ingrese su opcion:
Se ingresa la opcin
2
Se muestra de nuevo men de opciones
1.- Aadir Nuevo Alumno
2.- Mostrar Datos de los Alumnos
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
2
********************
* DATOS DEL ALUMNO *
********************
codigo = ALU001
nombre = LUZ ALEGRE ALEGRIA
***************************
* DATOS DE SUS PROFESORES *
***************************
*************************
* DATOS DEL PROFESOR 1 *
*************************
codigo = PRO510
nombre = JOHNNY REYES REYES
*************************
* DATOS DEL PROFESOR 2 *
*************************

Prof. Arn Elas Herrera Ponte

Pg. 21

Algortmica II

Gua D de Laboratorio Relaciones entre clases

codigo = PRO511
nombre = MARIA FLORES FLORES
*************************
Se muestra de nuevo men de opciones
1.- Aadir Nuevo Alumno
2.- Mostrar Datos de los Alumnos
3.- Salir
Ingrese su opcion:
Se ingresa la opcin
3
Se muestra el men de opciones INICIAL
1.- Mantenimiento del Profesor
2.- Mantenimiento del Alumno
3.- Asociar Alumno con su Profesor
4.- Asociar Profesor con su Alumno
5.- Salir
Ingrese su opcion:
Se ingresa la opcin
5
Process completed.

Prof. Arn Elas Herrera Ponte

Pg. 22

Vous aimerez peut-être aussi