Baixe o app para aproveitar ainda mais
Prévia do material em texto
Orientação a Objetos ghelfer@unisc.br Herança, reescrita e polimorfismo Existe uma maneira, em Java, de relacionarmos uma classe de tal maneira que uma delas herda tudo que a outra tem. Isto é uma relação de classe mãe e classe filha. No caso ao lado, gostaríamos de fazer com que o Gerente tivesse tudo que um Funcionario tem, gostaríamos que ela fosse uma extensão de Funcionario. Fazemos isto através da palavra chave extends. Herança de classes Herança de classes Herança de classes A nomenclatura mais encontrada é que Funcionario é a superclasse de Gerente, e Gerente é a subclasse de Funcionario. Neste caso, todo Gerente é um Funcionário. Podemos concluir assim que Funcionario é classe mãe de Gerente e Gerente é classe filha de Funcionario. Herança de classes A classe Gerente herda todos os atributos e métodos da classe mãe, no nosso caso, a Funcionario. Ela também herda os atributos e métodos privados, porém não consegue acessá-los diretamente. No Java, quando herdamos um método, podemos alterar seu comportamento. Podemos reescrever (reescrever, sobrescrever, override) este método. Exemplo: Todo fim de ano, os funcionários recebem uma bonificação. Os funcionários em geral recebem 10% do valor do salário e os gerentes,15%. Reescrita de Método Se executarmos simplesmente o código acima, gerentes receberão 500.0, ou seja, 10%, desobedecendo a regra. Neste caso, criamos o mesmo método getBonificacao() de Funcionário na classe Gerente, só que agora aplicando os 15%. Depois de reescrito, não podemos mais chamar o método antigo que fora herdado da classe mãe Reescrita de Método Agora sim, se executarmos o código acima, gerentes receberão 750.00, ou seja, 15%, de acordo com a regra. Ao utilizar a reescrita, caso seja necessário acessar o método da classe mãe, para não ter que copiar e colocar o conteúdo desse método e depois incluir alguma informação extra, utilizamos o método super(). Exemplo: Método Super A novidade, aqui, é a palavra chave super, fazendo referência a classe mãe. Método Super Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas. Polimorfismo No exemplo acima conseguimos passar um Gerente para um método que recebe um Funcionario como argumento. Pense como numa porta na agência bancária com o seguinte aviso: "Permitida a entrada apenas de Funcionários". Um gerente pode passar nessa porta? Sim, pois Gerente não deixa de ser um Funcionario. Polimorfismo Como tiramos proveito do polimorfismo? Imagine uma classe de relatório: Ao instanciar Relatorio e chamar o método Imprime, devido ao argumento ser do tipo classe mãe, todas as outras herdadas dela terão impressos seus dados. Polimorfismo 1- Reproduza todos os algoritmos dessa apresentação. 2 - Cria uma Classe Pessoa, contendo os atributos encapsulados, com seus respectivos seletores (getters) e modificadores (setters), e ainda o construtor padrão e pelo menos mais uma opção de construtor conforme sua percepção. Atributos: String nome; String endereço; String telefone; 3. Considere, como subclasse da classe Pessoa (desenvolvida no exercício anterior) a classe Fornecedor. Considere que cada instância da classe Fornecedor tem, para além dos atributos que caracterizam a classe Pessoa, os atributos valorCredito (correspondente ao crédito máximo atribuído ao fornecedor) e valorDivida (montante da dívida para com o fornecedor). Implemente na classe Fornecedor, para além dos usuais métodos seletores e modificadores, um método obterSaldo() que devolve a diferença entre os valores dos atributos valorCredito e valorDivida. Depois de implementada a classe Fornecedor, crie um programa adequado que lhe permita verificar o funcionamento dos métodos implementados na classe Fornecedor e os herdados da classe Pessoa. Exercícios 4- Resolva a seguinte situação utilizando os conceitos aprendidos. Uma empresa quer manter o registro da vida acadêmica de todos os funcionários, o modelo deve contemplar o registro das seguintes informações, de forma incremental: a) Para o funcionário que não estudou, apenas o nome e o código funcional; b) Para o funcionário que concluiu o ensino básico, a escola; c) Para o funcionário que concluiu o ensino médio, a escola; d) Para o funcionário que concluiu a graduação, a Universidade; 5- Estenda o modelo implementado no exercício anterior de forma que todo funcionário possua uma renda básica de R$ 1000,00 e: a) Com a conclusão do ensino básico a renda total é renda básica acrescentada em 10%; b)Com a conclusão do ensino médio a renda total é a renda do nível anterior acrescentada em 25%; c) Com a conclusão da graduação a renda total é a renda do nível anterior acrescentada em 50%; d) Todos os cálculos são efetuados sempre sobre a última renda obtida. 6- Crie um método estático Imprime numa classe Relatorio que faça a impressão de todos os cargos e salários. Depois de implementado tudo, crie um programa adequado que lhe permita verificar o funcionamento dos métodos implementados. Exercícios
Compartilhar