Java - Ayuda con constuctores en java

 
Vista:

Ayuda con constuctores en java

Publicado por Meneth (3 intervenciones) el 11/05/2020 13:06:16
Hola.
Resulta que estoy con la programación orientada a objetos en java y tengo un problema con las clases y los objetos(Me salen errores por todas partes y me estoy volviendo loco, vamos)
tengo una clase llamada capítulo que tiene el siguiente constructor

1
2
3
4
5
6
7
8
9
public Capitulo(String titulo,String sinopsis,int valoracion_del_capitulo,int numero_del_capitulo,
                int numero_de_temporada,int duracion_del_capitulo){
    this.titulo=titulo;
    this.sinopsis=sinopsis;
    this.valoracion_del_capitulo=valoracion_del_capitulo;
    this.numero_del_capitulo=numero_del_capitulo;
    this.numero_de_temporada=numero_de_temporada;
    this.duracion_del_capitulo=duracion_del_capitulo;
}

y una clase llamada serie con una arraylist de la clase capítulo. Tengo que hacer un constructor de copia con los capitulos que duren entre 40 y 50 min. El problema es que de repente me da un error que antes no me daba no sé por qué, el error es el siguiente: "actual and formal argument lists differ in length"
No sé muy bien que quiere decir, el constructor está hecho bien creo.
Dejo el código de la clase serie aquí.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Constructor copia con capitulos de entre 40 y 50 min
public Serie(Serie s){
    Capitulo copia;
    this.capitulos=new ArrayList<>();
 
    Iterator<Capitulo> iter=s.capitulos.iterator();
    Capitulo objeto_capitulo;
 
    while(iter.hasNext()){
        objeto_capitulo=iter.next();
        if(objeto_capitulo.getDuracion()>=40 && objeto_capitulo.getDuracion()<=50){
            copia=new Capitulo(objeto_capitulo);
            this.capitulos.add(copia);
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 100
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con constuctores en java

Publicado por Bruno (43 intervenciones) el 11/05/2020 14:23:38
No soy un experto en Java pero me parece que un error es en la línea

1
this.capitulos=new ArrayList<>();

Supongo que debe ser así

1
this.capitulos = new ArrayList<Capitulo>();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con constuctores en java

Publicado por Meneth (3 intervenciones) el 11/05/2020 14:31:29
Muchas gracias por responder.
Probaré lo que me dices, pero de todas formas he visto que al hacer click en la sugerencia del error, me crea un nuevo constructor dentro de la clase Capítulo, de la siguiente forma y ya no da error:

1
2
3
Capitulo(Capitulo objeto_capitulo) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

Pero no entiendo bien el por qué de esto, se supone que al declarar en la clase Serie dentro del constructor de copia, la parte de

Capítulo objeto_capitulo;

yo entiendo que objeto_capítulo obtiene todos los atributos del constructor por defecto de la clase Capítulo, con lo cual no entiendo el por qué del error.
O no sé si me estoy haciendo un lío.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.783
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con constuctores en java

Publicado por Rodrigo (481 intervenciones) el 11/05/2020 16:34:10
Cuando incluyes una linea como:

1
Capítulo objeto_capitulo

lo que estas diciendo es que "objeto_capitulo" contendra una referencia a un objeto.
No creas objeto alguno.

No se si esta explicacion te sirva para entenderlo mejor:

Una referencia es como un papel en que escribes la direccion de una casa que tienes que visitar.
La referencia (el papel), no es la casa, si lo arrugas, no arrugas la casa. Si lo quemas, no quemas la casa, etc.

Las referencias no tienen ningun atributo de la clase a la que se refieren.
Son un mero papel.

Necesitas copiar la direccion de casas (objetos) alli, los que tienes que crear o se han creado previamente.

Cuando tienes este papel, el operador punto permite ir a la direccion y actuar sobre el objeto al que apuntan.

Cuando dices

1
casa.tocarTimbre();

significa, que el papel "casa" tiene una direccion de una casa, y al hacer "punto" vamos a la direccion guardada y ejecutamos el metodo tocarTimbre de esa casa.

Ahora el constructor.

Tu agregaste un constructor con 5 parametros, creo. No agregaste ningun otro constructor.
Entonces cuando crees una clase, lo unico valido seria hacer

1
new Capitulo( parametro1, parametro2,  parametro3, parametro4,  parametro5 )

Cualquier otra llamada no es valida, pues tu dijiste que el Capitulo se construye pasandole 5 parametros, no 1.
En esta instruccion

1
copia=new Capitulo(objeto_capitulo);

te aparece el error "actual and formal argument lists differ in length": parametros que se necesitan: 5, numero de parametros que pasaste 1

El editor que usas te ayudo y te agrego el constructor que te falta para que eso compile.
Agrega la logica ahi para crear un nuevo objeto, dado uno antiguo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con constuctores en java

Publicado por Meneth (3 intervenciones) el 12/05/2020 10:47:12
Gracias por responder.
Entiendo lo que me quieres decir, pero hay una cosa que no termino de entender.
Creo que se me olvidó comentar que estoy trabajando con ArrayList dentro de las clases.
Lo que no entiendo es que tengo un ejercicio resuelto de mi profesor, con la diferencia de que él tiene en su ejercicio las clases Principal, la clase Libro y la clase ColeccionLibros. Mirando su código he visto que tiene exactamente lo mismo que yo (obviamente en vez de Capítulo y Serie tiene Libro y ColeccionLibros, pero el ejercicio viene a ser el mismo), la única diferencia es que él ha declarado en la clase principal lo siguiente:

Libro objeto_libro;

y a él no le da ningún error. ¿Por qué teniendo lo mismo a él no le da error y a mi si?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.783
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con constuctores en java

Publicado por Rodrigo (481 intervenciones) el 12/05/2020 12:22:32
Tu error no estaba en la defiicion de la referencia.
Tu error estaba en invocar un constructor que no tenias.

Para que sea lo mismo y a tu profesor no le da error pero a ti si, tendrias que mostrar
que el esta invocando el constructor de copia, y nunca lo definio, pero definio otro con varios parametros como lo hiciste tu.

Si puedes mostrar eso, entonces efectivamente es lo mismo y no podria explicar sin ver el codigo
por que hay diferencias.

Si no muestras eso, estoy del lado del compilador y reclamo que intentas construir un objeto
y no has definido el constructor que te sirve para ello.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar