Este ejercicio es imposible

guigo
23 de Junio del 2006
Buenas,

El problema es la pregunta de un examen, he intentado hacerla varias veces y no se que le puede pasar. La pregunta es la siguiente:

1. Crear la clase HoraClase con los atributos: dia (clase DiaSemana (L, M, X, J, V) y hora(de la clase Hora (hora, minuto). Ademas crear la clase Horario que sera un array de objetos de tipo HoraClase.

Esto es lo que yo he hecho:

CLASE HORACLASE:

public class HoraClase{
private DiaSemana dia;
private Hora hora;

public HoraClase(){
}

public HoraClase(DiaSemana dia, Hora hora){
this.dia = dia;
this.hora = hora;
}

public void setDia(DiaSemana dia){
this.dia = dia;
}

public void setHora(Hora hora){
this.hora = hora;
}

public DiaSemana getDia(){
return dia;
}

public Hora getHora(){
return hora;
}

public String toString(){
return("Dia: " + dia + "nHora: " + hora);
}
}

CLASE DIASEMANA:

public class DiaSemana{
private String dia;

private DiaSemana(){
}

private DiaSemana(String dia){
this.dia = dia;
}

public String toString(){
return dia;
}

public static final DiaSemana L = new DiaSemana("Lunes");
public static final DiaSemana M = new DiaSemana("Martes");
public static final DiaSemana X = new DiaSemana("Miercoles");
public static final DiaSemana J = new DiaSemana("Jueves");
public static final DiaSemana V = new DiaSemana("Viernes");
}

CLASE HORA:

public class Hora{
private int hora;
private int min;

public Hora(){
}

public Hora(int hora, int min){
this.hora = hora;
this.min = min;
}

public void setHora(int hora){
this.hora = hora;
}

public void setMin(int min){
this.min = min;
}

public int getHora(){
return hora;
}

public int getMin(){
return min;
}

public String toString(){
return(hora + ":" + min);
}
}

CLASE HORARIO: !!!LA QUE FALLA!!!

public class Horario{
private HoraClase clases[];

public Horario(){
}

public Horario(HoraClase clase){
clases = new HoraClase[3];
clases[0].setDia(clase.getDia());
clases[0].setHora(clase.getHora());
clases[1].setDia(clase.getDia());
clases[1].setHora(clase.getHora());
clases[2].setDia(clase.getDia());
clases[2].setHora(clase.getHora());
}
}

CLASE PRUEBA HORARIO (MAIN):

public class PruebaHorario{
public static void main(String args[]){
DiaSemana dia1 = DiaSemana.L;
DiaSemana dia2 = DiaSemana.X;
DiaSemana dia3 = DiaSemana.V;
Hora hora1 = new Hora(10,30);
Hora hora2 = new Hora(11,30);
Hora hora3 = new Hora(12,30);
HoraClase clase1 = new HoraClase(dia1, hora1);
HoraClase clase2 = new HoraClase(dia2, hora2);
HoraClase clase3 = new HoraClase(dia3, hora3);
Horario horario = new Horario(clase1);
}
}

FIN

Bien pues este es el programa. El problema esta en el constructor de Horario.

No se que puede ser, se lo pregunte a la profesora y no tenia ni idea.

Alguien sabria que le pasa???

Mis conocimientos de java no son muy amplios y menos orientado a objetos.

Ante todo gracias por la ayuda que me podais ofrecer.

Un saludo.


lepard
23 de Junio del 2006
Bueno el programa está muy bien sólo hay un fallo, reconozco que es rebuscado, ahora te lo explico. Cuando crear un array de elementos de una clase, creas un array, pero luego cada elemento que contenga el array debe ser instaciado, si no es como si tuviese tres nulos. Esto es lo que no hacias en tu ejercicio.

/*CLASE HORARIO: !!!LA NO QUE FALLA!!!*/

public class Horario{
private HoraClase clases[];
public Horario(HoraClase clase){
clases = new HoraClase[3];
clases[0]=new HoraClase();// Instaciar el objeto
clases[0].setDia(clase.getDia());
clases[0].setHora(clase.getHora());
System.out.println(clases[0].getDia());
System.out.println(clases[0].getHora());
clases[1]=new HoraClase();
clases[1].setDia(clase.getDia());
clases[1].setHora(clase.getHora());
System.out.println(clases[1].getDia());
System.out.println(clases[1].getHora());
clases[2]=new HoraClase();
clases[2].setDia(clase.getDia());
clases[2].setHora(clase.getHora());
System.out.println(clases[2].getDia());
System.out.println(clases[2].getHora());

/*clases[1].setDia(clase.getDia());
clases[1].setHora(clase.getHora());
clases[2].setDia(clase.getDia());
clases[2].setHora(clase.getHora());*/
}
}

talivator
23 de Junio del 2006
lo que yo pude abservar que falla en esa clase es que estas colocando 2 constructores
uno
public Horario(){
}
y otra
public Horario(HoraClase clase){
//...
//...
}