Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

[Duda] clase Gerente duplicacion de los atributos

Hola, Entonces con el hecho de optimizar el codigo en la clase Funcionario, queda sin efecto la clase Gerente sin embargo este se estructurara con otros atributos o la clase será eliminada?

public class Gerente {

    private String nombre;
    private String Documento;
    private double salario;


    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getDocumento() {
        return Documento;
    }
    public void setDocumento(String documento) {
        Documento = documento;
    }
    public double getSalario() {
        return salario;
    }
    public void setSalario(double salario) {
        this.salario = salario;
    } 

    public double getBonificacion () {
        return this.salario;
    }
5 respuestas

¡Hola Rafael! Espero te encuentres bien.

Primero, veo necesario aclarar ciertos conceptos que juegan un rol importante en este contexto. La herencia es un paradigma de la programación orientado a objetos que permite representar eventos, relaciones o situaciones de la vida real a través de la composición de objetos que pueden "heredar" atributos y funcionalidades pertenecientes a otros objetos.

En este caso, hay que aclarar que un Gerente, en estricto rigor, es un Funcionario. Entonces podemos decir que Gerente es una clase hija de la clase Funcionario, y que la clase Funcionario entonces es la clase padre de esta relación.

Pues bien, la clase Funcionario tiene ciertos atributos y funcionalidades. Puede tener nombre, documentoIdentidad, salario, etc. Y puede tener una funcionalidad o método como obtenerBonificacion. Ahora bien, como Funcionario es una clase padre, eso significa que sus clases hijas y puede tener varias (siendo una de ellas, la clase Gerente) todas heredarán estos atributos y funcionalidades, entonces la clase Funcionario es en esencia una clase abstracta y debería definirse como tal.

De cualquier modo, la clase hija Gerente está lejos de quedar sin efecto, ni mucho menos ser eliminada. Esta clase hereda las propiedades de la clase Funcionario y además cuenta con atributos y propiedades propias, como por ejemplo, la habilidad de ser una clase Autenticable. Sí, porque recordemos que no todos los Funcionarios pueden autenticarse en el sistema, pero si los Gerentes.

Hola Jorge, me quedo claro y ahora toma forma la imagen en relación al paradigma de herencia, entonces quiere decir que los atributos que están en la clase Gerente no son redundantes y ejercen una función activa en el código por ser descendiente de la clase Funcionario o por el contrario ¿ se esta generando un code Smells? muchas gracias por tan ilustrativa explicación lo aprecio mucho :-)

Exactamente Rafael, la clase Gerente no es redundante. La clase Gerente instanciará un objeto de tipo Gerente de esta manera:

Gerente pablo = new Gerente();

pablo.setNombre("Pablo");
pablo.setDocumentoIdentidad("18726374-4");
pablo.salario(5);   // Lo sé... pobre pablo :C... El gerente peor pagado...

int bonificacionPablo = pablo.getBonificacion();

...
...
...

pablo.autenticar("yosoypabloyestoymuytriste");

Como podrás observar, el objeto de pablo no solo puede hacer uso de su habilidad inherente de poder autenticar en el sistema con una clave muy difícil de averiguar, sino que además puede hacer gala de todos los atributos y funcionalidades propios de... así es, ¡Un Funcionario!

solución!

Excelente Jorge, le has puesto la cereza al pastel, muchas gracias por tus instrucciones! :-)

Gracias esta clarisimo,