Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

[Duda] Sobreescribir setDuracionEnMinutos() en lugar de getDuracionEnMinutos()

Creo que lo correcto sería hacer eso ya que getDuracionEnMinutos() solo devuelve el valor establecido y el método que realmente lo establece (o que debería de hacerlo) es setDuracionEnMinutos(). Incluso lo que hace Génesys contradice las propias definiciones de getters y setters. Eso opino yo no sé qué opinen.

3 respuestas

Hola Yahadad,

Entiendo tu confusión, y es un punto muy interesante el que mencionas. En el contexto de la programación orientada a objetos, los métodos get y set tienen roles específicos. Los métodos get se utilizan para recuperar el valor de una propiedad, mientras que los métodos set se utilizan para establecer o modificar el valor de una propiedad.

En el caso que describes, parece que hay una necesidad de calcular la duración total de una serie basada en varios factores, como el número de temporadas, episodios por temporada y minutos por episodio. Por lo tanto, es más apropiado sobrescribir el método getDuracionEnMinutos() en la clase Serie para realizar este cálculo, en lugar de simplemente devolver un valor almacenado. Esto se debe a que el método getDuracionEnMinutos() en este caso no solo está recuperando un valor, sino que está calculando un valor basado en otros atributos de la clase.

El método setDuracionEnMinutos(), por otro lado, no necesitaría ser sobrescrito porque su función es simplemente establecer un valor, y en este caso, el valor que se quiere establecer es el resultado de un cálculo, no un valor que se recibe externamente.

Aquí tienes un ejemplo simplificado de cómo podrías implementar esto:

public class Serie extends Titulo {
    private int temporadas;
    private int episodiosPorTemporada;
    private int minutosPorEpisodio;

    @Override
    public int getDuracionEnMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }
}

En este ejemplo, el método getDuracionEnMinutos() se sobrescribe para calcular la duración total de la serie en minutos. Esto refleja el comportamiento esperado de un método get, que es proporcionar información relevante y precisa sobre el objeto.

Espero que esto aclare un poco más el uso de get y set en este contexto. ¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Hola Yahadad,

Entiendo tu confusión, y es un punto muy interesante el que mencionas. En el contexto de la programación orientada a objetos, los métodos get y set tienen roles específicos. Los métodos get se utilizan para recuperar el valor de una propiedad, mientras que los métodos set se utilizan para establecer o modificar el valor de una propiedad.

En el caso que describes, parece que hay una necesidad de calcular la duración total de una serie basada en varios factores, como el número de temporadas, episodios por temporada y minutos por episodio.

Por lo tanto, es más apropiado sobrescribir el método getDuracionEnMinutos() en la clase Serie para realizar este cálculo, en lugar de simplemente devolver un valor almacenado.

Esto se debe a que el método getDuracionEnMinutos() en este caso no solo está recuperando un valor, sino que está calculando un valor basado en otros atributos de la clase.

El método setDuracionEnMinutos(), por otro lado, no necesitaría ser sobrescrito porque su función es simplemente establecer un valor, y en este caso, el valor que se quiere establecer es el resultado de un cálculo, no un valor que se recibe externamente.

Aquí tienes un ejemplo simplificado de cómo podrías implementar esto:

public class Serie extends Titulo {
    private int temporadas;
    private int episodiosPorTemporada;
    private int minutosPorEpisodio;

    @Override
    public int getDuracionEnMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }
}

En este ejemplo, el método getDuracionEnMinutos() se sobrescribe para calcular la duración total de la serie en minutos. Esto refleja el comportamiento esperado de un método get, que es proporcionar información relevante y precisa sobre el objeto.

Espero que esto aclare un poco más el uso de get y set en este contexto. ¡Espero haber ayudado y buenos estudios!

Ya entendí, entonces:

  1. La superclase Titulo es la que crea el getter getDuracionEnMinutos, luego este getter lo heredan las clases Serie y Pelicula.
  2. En las clases Titulo y Pelicula este getter sigue realizando su función principal la cual es regresar el valor del atributo DuracionEnMinutos el cual es establecido de manera controlada por el setter setDuracionEnMinutos.
  3. Aquí es donde viene lo interesante: getDuracionEnMinutos se sobrescribe en la subclase Serie pero aquí va a actuar como un método propio de Serie y ya no propiamente como un getter. Perderá su función principal (regresar el valor del atributo DuracionEnMinutos de la superclase Titulo que fue establecido por setDuracionEnMinutos).

Así ya tiene más lógica lo que comentan y así lo entiendo mejor. ¿Qué opinan de mi conclusión? Igual es correcto todo lo que comentan. Gracias por atender mi duda, ingeniera Brenda e ingeniero Luis.