I Suponga que tenemos la siguiente simple clase para
representar cursos. class Curso { private String sigla; private int creditos;
public Curso(String sig, int cred)
{ sigla = sig; creditos = cred; }
public int Creditos()
{ return creditos; }
public String Sigla()
{ return sigla; } }
Jorge Pérez – Programación Orientada a Objetos en JAVA 52 / 57
Arreglos de objetos
I Supangamos queremos tener una clase Alumno a la que
podamos asignarle varios objetos de tipo Curso. I La clase Alumno deberı́a contener un arreglo de objetos Cursos. I Tal como definı́amos arreglos para tipos simples en JAVA podemos hacer arreglos de objetos. I Por ejemplo, para crear un arreglo llamado cursos de 5 (referencias a) cursos debemos hacer: Curso[] cursos = new Curso[5];
I Ahora podrı́amos a cada curso[i] asignarle un objeto de tipo
curso, ya sea uno previamente creado, o uno nuevo Curso c1 = new Curso("ing1310", 10); cursos[0] = c1; cursos[2] = c1; cursos[1] = new Curso("ing1320", 15);
Jorge Pérez – Programación Orientada a Objetos en JAVA 53 / 57
Arreglos de objetos Curso c1 = new Curso("ing1310", 10); cursos[0] = c1; cursos[2] = c1; cursos[1] = new Curso("ing1320", 15);
I Despues de que creamos un arreglo de objetos y asignamos
ciertos objetos a cada componente, podemos usar los métodos/atributos de cada objeto tal como un objeto cualquiera. I Dado que por ejemplo cursos[1] es un objeto de la clase Curso podemos hacer cursos[1].Creditos();
para obtener los créditos del curso con ı́ndice 1.
I Siguiendo el ejemplo anterior, qué imprime este trozo de código?: System.out.println(cursos[2].Creditos()); System.out.println(cursos[1].Creditos()); System.out.println(cursos[0].Creditos());
Jorge Pérez – Programación Orientada a Objetos en JAVA 54 / 57
Arreglos de objetos I Ahora podriamos tener una clase Alumno como la siguiente: class Alumno { String nombre;
private Curso[] cursos;
private int cantidadCursos;
private int maximaCantidadCursos;
public Alumno(String nom)
{ nombre = nom; cantidadCursos = 0; maximaCantidadCursos = 6; cursos = new Curso[maximaCantidadCursos]; }
....
I Donde maximaCantidadCursos indica la máxima cantidad
permitida de cursos que puede tener asignado un alumno, y I cantidadCursos representa la cantidad de cursos que actualmente tiene adignado el alumno. Jorge Pérez – Programación Orientada a Objetos en JAVA 55 / 57 Arreglos de objetos
I Ejercicio: complete la clase Alumno con los siguientes
métodos: I public boolean TieneCurso(Curso c) que entrega true si el alumno ya tiene asignado un curso en particular, y false en otro caso. I public void AsignaCurso(Curso c) para asignar un nuevo curso al alumno. I public int CantidadTotalCreditos() que entrega la cantidad total de créditos del alumno. I public void ImprimeListaCursos() para imprimir una lista de toda la info de los cursos asignados al alumno. I public void EliminaCurso(Curso c) para eliminar un curso particular, previamente asignado al alumno (este método es difı́cil porque se debe mantener la consistencia interiro del objeto).
Jorge Pérez – Programación Orientada a Objetos en JAVA 56 / 57