A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Herança É-UM e TEM-UM Professora Lucélia Oliveira.

Apresentações semelhantes


Apresentação em tema: "Herança É-UM e TEM-UM Professora Lucélia Oliveira."— Transcrição da apresentação:

1 Herança É-UM e TEM-UM Professora Lucélia Oliveira

2 Herança (É-UM) A herança na orientação a objetos, ocorre quando uma classe herda as características (variáveis e métodos) definidas em outra classe, chamada de ancestral ou superclasse. O principal objetivo da herança é o reaproveitamento de código e conseqüentemente a redução de códigos reescritos desnecessariamente. Professora Lucélia Oliveira

3 Herança Por mais simples que seja uma aplicação em Java, praticamente todas usam a herança em seus códigos. Professora Lucélia Oliveira

4 Exemplo de Diagrama de Classes da UML Professora Lucélia Oliveira

5 A Classe Pessoa do diagrama apresentado no slide anterior: public class Pessoa { private String nome; public void setNome(String nome) { this.nome = nome; } public String getNome() { return (nome); } Professora Lucélia Oliveira A Classe Pessoa possui uma variável de instância (nome) e dois métodos (setNome e getNome) para manipular o seu conteúdo.

6 Classes PessoaFisica e PessoaJuridica public class PessoaFisica extends Pessoa { private String rg; public void setRg(String rg) { this.rg = rg; } public String getRg() { return (rg); } public class PessoaJuridica extends Pessoa { private String cnpj; public void setCnpj(String cnpj) { this.cnpj = cnpj; } public String getCnpj() { return (cnpj); } Professora Lucélia Oliveira As Classes PessoaFisica e PessoaJuridica estendem a funcionalidade da classe Pessoa adicionando uma variável em cada e dois métodos.

7 Classes Funcionario public class Funcionario extends PessoaFisica { private int cartao; public void setCartao(int cartao) { this.cartao = cartao; } public int getCartao() { return (cartao); } Professora Lucélia Oliveira A Classe Funcionario herda todas as características da classe PessoaFisica que, por sua vez, herda as características da classe Pessoa.

8 Se a superclasse Pessoa for alterada, essas alterações serão refletidas nas classes PessoaFisica, PessoaJuridica e Funcionario, sem a necessidade de alterar o código das classes, são como engrenagens que se encaixam umas nas outras. Professora Lucélia Oliveira

9 Classe que contém o método main() public class UsaFuncionario { public static void main(String args[]) { Funcionario funcionario = new Funcionario( ); funcionario.setNome("Samuel"); funcionario.setRg(" x"); funcionario.setCartao("FN100"); System.out.println(funcionario.getNome( )); System.out.println(funcionario.getRg( )); System.out.println(funcionario.getCartao( )); }} Professora Lucélia Oliveira

10 Na terminologia da OO, você pode dizer: Pessoa é a superclasse de PessoaFisica e PessoaJuridica; PessoaFisica é uma subclasse de Pessoa; Funcionario é uma subclasse de PessoaFisica; PessoaFisica é superclasse de Funcionario; PessoaFisica herda de Pessoa; Funcionario é derivado de PessoaFisica; PessoaFisica é derivada de Pessoa; Funcionario é um subtipo de PessoaFisica Professora Lucélia Oliveira

11 Relacionamento (TEM-UM) Os relacionamentos tem-um são baseados na utilização, em vez de herança. A classe A tem-um B ocorrerá quando o código da classe A apresentar uma referência a uma instância da classe B. Professora Lucélia Oliveira

12 Relacionamento (TEM-UM) Exemplo: Um cavalo É-UM animal. Um cavalo TEM-UMA rédea. E o código teria um formato assim: public class Animal{} public class Cavalo extends Animal{ private Redea minhaRedea; } public class Redea{...} Professora Lucélia Oliveira

13 Relacionamento (TEM-UM) Professora Lucélia Oliveira

14 O objetivo da ênfase no projeto apropriado é simples: redução de custos. O custo de distribuição de um sistema mal projetado é 10 vezes mais caro. Até os melhores projetistas que usam o modelo orientado a objetos cometem erros. Quando os erros são descobertos durante a fase de implementação de um projeto, a quantidade de códigos a ser reescrita pode fazer com que equipes de desenvolvimento tenham que começar tudo do zero. Professora Lucélia Oliveira

15 Polimorfismo O uso do polimorfismo pressupõe duas condições: a existência de herança entre as classes e a redefinição de métodos nas classes. Para caracterizar um polimorfismo, é necessário que as classes possuam métodos com a mesma assinatura, isto é, retorno, nome e argumentos, porém, com funcionalidades diferentes. Professora Lucélia Oliveira

16 Polimorfismo Utilizando o polimorfismo, uma classe mais genérica (uma superclasse) pode assumir diferentes comportamentos, gerando objetos diferentes dependendo da implementação do método. Professora Lucélia Oliveira

17 Exemplo: Vamos criar um método polimórfico chamado mostraClasse, que utilize, em todas as classes: – o mesmo nome: mostraClasse; – o mesmo retorno: void; – os mesmos argumentos: no caso nenhum ( ) public void mostraClasse( ) { System.out.println(“classe nome-da-classe”); } Professora Lucélia Oliveira

18 Agora vamos criar uma classe para executar os métodos polimórficos: package heranca; import javax.swing.JOptionPane; public class Polimorfismo { public static void main(String args[]){ Pessoa pessoa = null; String tip; int tipo; tip = JOptionPane.showInputDialog("Qual o construtor deseja utilizar? "+ "\n1- Pessoa\n2 - PessoaFisica\n3 - PessoaJuridica \n4 - Funcionario"); tipo = Integer.parseInt(tip); switch (tipo){ case 1: pessoa = new Pessoa(); break; case 2: pessoa = new PessoaFisica(); break; case 3: pessoa = new PessoaJuridica(); break; case 4: pessoa = new Funcionario(); break; default: System.out.println("Tipo desconhecido!"); } pessoa.mostraClasse(); } } Professora Lucélia Oliveira

19 Métodos Sobrecarregados Devem alterar a lista de argumentos; Podem alterar o tipo de retorno; Podem alterar o modificador de acesso; Professora Lucélia Oliveira


Carregar ppt "Herança É-UM e TEM-UM Professora Lucélia Oliveira."

Apresentações semelhantes


Anúncios Google