Programação Orientada por Objetos

Tamanho: px
Começar a partir da página:

Download "Programação Orientada por Objetos"

Transcrição

1 PPROG Paradigmas da Programação Programação Orientada por Objetos Herança de Classes Polimorfismo Classes Abstratas (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2015/16) 1/72

2 PPROG Sumário Geral Mecanismos de Reutilização de Código Herança de Classes Polimorfismo Classes Abstratas Classe Object Nelson Freire (ISEP DEI-PPROG 2015/16) 2/72

3 PPROG Sumário Geral Mecanismos de Reutilização de Código Herança de Classes Polimorfismo Classes Abstratas Classe Object Nelson Freire (ISEP DEI-PPROG 2015/16) 3/72

4 Reutilização de Código Mecanismos de Reutilização de Código Sumário Interesse Tipos de Mecanismos Nelson Freire (ISEP DEI-PPROG 2015/16) 4/72

5 Reutilização de Código Interesse dos Mecanismos de Reutilização de Código Redução do esforço de programação redução dos custos de produção de software Uma das vantagens da POO Como? Programa novo obtido programando Não todo o programa Apenas uma pequena parte nova sobre código existente (reutilização) Código Novo Código Existente Programa Novo Concretamente Baseada na construção de classes novas a partir de classes existentes Nelson Freire (ISEP DEI-PPROG 2015/16) 5/72

6 Reutilização de Código Composição Tipos de Mecanismos de Reutilização de Código Permite criar uma classe composta por outras classes (CA) Classe Nova (CN) CA1 CA2 CN contém CA1 e CA2 Classes agregadas (CA) estão ao mesmo nível CA1 CA2 Herança Permite criar uma classe que herda (acrescenta) outras classes Classe Nova (CN) CH1 CH2 CN contém CH2 contém CH1 Classes herdadas (CH) estão em níveis diferentes CH1 CH2 Nelson Freire (ISEP DEI-PPROG 2015/16) 6/72

7 PPROG Sumário Geral Mecanismos de Reutilização de Código Herança de Classes Polimorfismo Classes Abstratas Classe Object Nelson Freire (ISEP DEI-PPROG 2015/16) 7/72

8 Herança Noções Básicas Noção de Herança de Classes Superclasse e Subclasse de uma Classe Relacionamento É-UM Hierarquia de Classes Hierarquia de Especialização Herança Transitiva Tipos de Herança em POO Simples Múltipla Java Hierarquia Simples Classe Object Declaração de uma Subclasse Tipos de Membros de uma Subclasse Membros Herdados Acessíveis Inacessíveis Membros Locais Definidos Redefinidos (ou Reescritos) Sumário Java (continuação) Referência super Acesso a Membros Reescritos Distinguir Métodos Locais de Métodos Herdados Invocação super() Acesso a Construtores da Superclasse Nelson Freire (ISEP DEI-PPROG 2015/16) 8/72

9 Herança Noção de Herança Mecanismo Permite criar uma nova classe por herança (ou extensão) de uma classe existente // 1 em Java Nova classe Herda membros de instância de uma classe existente Variáveis de Instância Métodos de Instância Acrescenta novos membros particulares Classe Existente Nova Classe Membros de instância de uma classe existente + Membros Novos Classe Existente Pessoa Características comuns de pessoas Nova Classe Trabalhador Características: comuns de pessoas + específicas de trabalhador s de características Comuns de pessoas: nome e data de nascimento Específicas de trabalhador: salário e empresa Nelson Freire (ISEP DEI-PPROG 2015/16) 9/72

10 Herança Superclasse e Subclasse de uma Classe A B Superclasse de B Subclasse de A + Genérica Especialização Generalização + Específica Subclasse da classe A Classe que herda a classe A // classe derivada de A Mais específica do que A i.e., é uma especialização de A // contém mais membros: métodos e/ou variáveis Classe Trabalhador herda classe Pessoa Pessoa Superclasse da classe B Trabalhador Classe herdada pela classe B Mais genérica do que B // contém menos membros: métodos e/ou variáveis Classe Pessoa é herdada pela classe Trabalhador Nelson Freire (ISEP DEI-PPROG 2015/16) 10/72

11 Herança Tipo de Relacionamento entre Superclasse Suas subclasses Relacionamento É-UM(A) (IS-A) Trabalhador é uma Pessoa Superclasse Pessoa É-UMA Especialização + Genérica Generalização Subclasse Trabalhador + Específica Interesse Determinar o uso do mecanismo de herança Nelson Freire (ISEP DEI-PPROG 2015/16) 11/72

12 Herança Noção Estrutura de classes organizadas em diferentes níveis Construção permitida pelo mecanismo da herança Classes Níveis inferiores: subclasses Níveis superiores: superclasses Superclasses e Subclasses podem ser Diretas // nível imediato Indiretas Hierarquia de Classes 1/3 A B C D E F G Hierarquia de Classes (Simples) Superclasse de todas as subclasses Superclasse direta de B, C e D D é superclasse directa de F e G Subclasse direta de A F/G: subclasses diretas de D e indiretas de A Nelson Freire (ISEP DEI-PPROG 2015/16) 12/72

13 Herança Hierarquia de Classes 2/3 Hierarquia de Especialização de Classes Qualquer subclasse é uma especialização das suas superclasses Topo da hierarquia: classe mais genérica // membros comuns a todas as subclasses Base da hierarquia: classes mais específicas // membros particulares Sentido Topo Base Há especialização de classes A + Genérica B C D Especialização E F G Hierarquia de Classes (Simples) + Específicas Nelson Freire (ISEP DEI-PPROG 2015/16) 13/72

14 Herança Hierarquia de Classes 3/3 de uma hierarquia de classes de uma aplicação sobre contas bancárias As subclasses são especializações da superclasse Conta (classe genérica) Superclasse Conta: possui variáveis e métodos comuns a todos os tipos de contas Subclasses: acrescentam variáveis e métodos específicos Declaração de atributo sublinhado significa atributo de classe (static) Nelson Freire (ISEP DEI-PPROG 2015/16) 14/72

15 Herança Noção Herança acima da superclasse direta Herança Transitiva Uma classe herda membros de instância Da sua superclasse Esta, por sua vez, herda da sua superclasse E, assim sucessivamente, até ao topo da hierarquia F herda de A, porque herda de D e esta, por sua vez, herda de A A Herança Transitiva F D Herda diretamente de A Herda diretamente de D e indiretamente de A Legenda: indireta direta Herança Transitiva Nelson Freire (ISEP DEI-PPROG 2015/16) 15/72

16 Herança Tipos de Herança em POO Tipos de Herança em POO (Programação Orientada por Objetos ) Simples Múltipla A Herança Simples Uma classe apenas pode herdar diretamente de outra classe Java Única permitida em hierarquias de classes Herança Múltipla Uma classe pode herdar diretamente de múltiplas classes B C D E F Herança Simples X G Classe Z Y W Permitida pelo C++ Java Não permite em hierarquias de classes Permite em hierarquias de interfaces T U Z Herança Múltipla V Nelson Freire (ISEP DEI-PPROG 2015/16) 16/72

17 Herança Classe Object Classe Java mais Genérica Está no topo de todas as hierarquias de classes Java Superclasse de todas as classes Qualquer classe em Java é subclasse, pelo menos, de Object Pessoa Object Carro Membros Comuns a todas as classes Java Interessam a todas as classes s de Métodos tostring equals Trabalhador Hierarquia de Classes Java Nome Object Objeto... é característica comum a todas as classes Nelson Freire (ISEP DEI-PPROG 2015/16) 17/72

18 Herança Sintaxe Declaração de uma Subclasse [modificador de acesso] [final] class subclasse extends superclasse {... } [...] = opcional modificador de acesso public private protected sem modificador = package final Classe não pode ser herdada É considerada classe completa Não há especializações public final class String... {... } public class SubString extends String {... } Classe String public class Trabalhador extends Pessoa {... } Pessoa Trabalhador... Nelson Freire (ISEP DEI-PPROG 2015/16) 18/72

19 Herança Em Java Tipos de Membros de Classes Qualquer classe herda código Pelo menos da classe Object Então, relativamente à Herança, qualquer classe tem dois tipos de membros Herdados Locais Membros Herdados Membros Locais Membros Herdados Definidos nas suas superclasses Classe Membros Locais Definidos na própria classe Nelson Freire (ISEP DEI-PPROG 2015/16) 19/72

20 Herança Membros Herdados 1/3 Definição Membros de instância definidos nas superclasses de uma classe (até à classe Object) Apenas, variáveis e métodos de instância Membros Herdados Variáveis de Instância Métodos de Instância Membros Locais Classe Membros não Herdados Membros de classe // variáveis e métodos de classe Mas podem estar acessíveis // p. ex., os métodos de classe públicos Construtores Porque não são membros de uma classe Mas podem estar acessíveis Através da invocação super() // abordada mais adiante Nelson Freire (ISEP DEI-PPROG 2015/16) 20/72

21 Herança Relativamente ao acesso, podem ser Acessíveis Inacessíveis Membros Herdados 2/3 Acesso depende (em Java) Package da sua classe Nível de acesso (visibilidade) public // acessível protected // acessível package (sem modificador) // acessível se classe pertencer à package da superclasse (direta) private // inacessível Membros Herdados Variáveis de Instância Inacessíveis (sendo privados) Métodos de Instância Acessíveis Inacessíveis Membros Locais Classe Nelson Freire (ISEP DEI-PPROG 2015/16) 21/72

22 Herança Conceitos diferentes: herdar e aceder Membros Herdados 3/3 Um membro pode ser herdado... mas pode não estar acessível à subclasse : método de instância privado Um membro pode estar acessível... e não ser herdado : membros de classe públicos Para simplificar a programação Podemos considerar herdado o que está acessível Membros Herdados Variáveis de Instância Inacessíveis (sendo privados) Métodos de Instância Acessíveis Inacessíveis Membros Locais Classe Nelson Freire (ISEP DEI-PPROG 2015/16) 22/72

23 Herança Definição Membros especificados na própria classe Variáveis Instância Classe Métodos Instância Classe Membros Locais 1/8 Membros Herdados Membros Locais Variáveis de Instância Variáveis de de Classe Relativamente à definição, podem ser Definidos Redefinidos (Override ou Reescritos) Métodos de Instância Definidos Redefinidos Métodos de Classe Definidos Redefinidos Classe Nelson Freire (ISEP DEI-PPROG 2015/16) 23/72

24 Herança Membros Locais 2/8 Membros Locais Definidos Cujas definições residem apenas na própria classe Classe X Definições inexistentes nas suas superclasses Classe Y metodo() Definido Membro Local Definido Membros Locais Redefinidos São redefinições de membros das superclasses Interesse Quando os membros de superclasses não são apropriados para uma subclasse Método tostring() herdado, pelo menos, da classe Object Suportado pelo Mecanismo da Sobreposição (Overriding) Mais pormenores nos próximos slides Classe X metodo1() Classe Y metodo1() metodo2() Definido Redefinido Definido Membro Local Reescrito Nelson Freire (ISEP DEI-PPROG 2015/16) 24/72

25 Herança Requisitos de Método Redefinido (1/5) Assinatura Igual ao do método definido i.e, mesmo nome e mesma lista de tipos de parâmetros Membros Locais 3/8 Classe A private static int metodo1(long x, String s) public static Pessoa metodo2(int x, float y) public double metodo3(string s) Definidos Superclasse Pessoa Classe B public static int metodo1(long a, String b) public static Trabalhador metodo2(int z, float w) public double metodo3(string s) Redefinidos Subclasse Trabalhador Nelson Freire (ISEP DEI-PPROG 2015/16) 25/72

26 Herança Requisitos de Método Redefinido (2/5) Tipo de retorno Depende da visibilidade (nível de acesso) do método definido Inacessível Pode ser qualquer tipo Membros Locais 4/8 Acessível Desde Java 5, também pode ser qualquer subtipo (subclasse) do tipo de retorno da definição do método Tipos de retorno primitivos, definido e redefinido, têm de ser iguais s Classe A private static int metodo1(long x, String s) public static Pessoa metodo2(int x, float y) public double metodo3(string s) Definidos Superclasse Pessoa Classe B public static long metodo1(long a, String b) public static Trabalhador metodo2(int z, float w) public double metodo3(string s) Redefinidos Subclasse Trabalhador Nelson Freire (ISEP DEI-PPROG 2015/16) 26/72

27 Herança Requisitos de Método Redefinido (3/5) Membros Locais 5/8 Nível de acesso (visibilidade) Depende da visibilidade do método definido Inacessível Método redefinido pode especificar qualquer nível de acesso Acessível Regra geral Método redefinido não pode diminuir o nível de acesso do método definido Método Definido public protected package Método Redefinido public protected ou public qualquer, excepto private Slide seguinte Nelson Freire (ISEP DEI-PPROG 2015/16) 27/72

28 Herança Requisitos de Método Redefinido (4/5) Membros Locais 6/8 Nível de acesso (visibilidade) Classe A private static int metodo1(long x, String s) public static Pessoa metodo2(int x, float y) protected int metodo4(string s) Definidos Classe B public static int metodo1(long a, String b) public static Trabalhador metodo2(int z, float w) public int metodo4(string s) Redefinidos Nelson Freire (ISEP DEI-PPROG 2015/16) 28/72

29 Herança Requisitos de Método Redefinido (5/5) Membros Locais 7/8 Métodos declarados final Não podem ser redefinidos Classe A... public final int metodo_x(long x){...} public static final String metodo_y() {... }... Métodos Definidos Classe B... public final int metodo_x(long x){...} public static final String metodo_y() {... }... Métodos Redefinidos Nelson Freire (ISEP DEI-PPROG 2015/16) 29/72

30 Herança Variável Redefinida (classe/instância) Membros Locais 8/8 Definição Variável com o mesmo nome de variável definida nas suas superclasses Definição local Esconde (hidden) a definição da variável acessível Irrelevante para variáveis privadas Nelson Freire (ISEP DEI-PPROG 2015/16) 30/72

31 Herança Referência super 1/2 Definição Referência da superclasse (direta) da classe da instância-recetora de uma mensagem Interesse Invocar um membro de instância herdado e acessível da superclasse direta Particularmente útil para acesso a métodos que foram sobrepostos super.tostring() // invoca método tostring() da superclasse super não se deve aplicar a variáveis e métodos de classe public class Trabalhador extends Pessoa { } private double salario; private String empresa;... public String tostring () { }... // baseado no tostring() da superclasse return String.format("%s Salário:%s, Empresa:%s", super.tostring(), salario, empresa); Nelson Freire (ISEP DEI-PPROG 2015/16) 31/72

32 Herança Não pode ser usada de forma encadeada super.super.metodo(); // expressão ilegal Outro interesse de super Distinguir dois tipos de métodos de instância Herdados da superclasse direta // com prefixo super Locais da classe // sem prefixo super Referência super 2/2 Nelson Freire (ISEP DEI-PPROG 2015/16) 32/72

33 Herança Invocação super() 1/2 Sintaxe super(lista_parâmetros); // lista pode ser vazia Interesse Uso Acesso aos construtores da superclasse (direta) para inicialização das suas variáveis de instância Só em construtores Obrigatoriamente a 1ª instrução do construtor public class Trabalhador extends Pessoa { // variável de instância local (própria) private double salario; } // construtor public Trabalhador( String nome, double salario) { super( nome ); // garante inicialização das variáveis de instância da superclasse this.salario = salario; } Nelson Freire (ISEP DEI-PPROG 2015/16) 33/72

34 Herança Invocação super() 2/2 Quando não é declarado Compilador adiciona automaticamente super() aos construtores // super sem parâmetros Criação de instância de subclasse Obriga chamada em cadeia dos construtores de todas as suas superclasses Nelson Freire (ISEP DEI-PPROG 2015/16) 34/72

35 PPROG Sumário Geral Mecanismos de Reutilização de Código Herança de Classes Polimorfismo Classes Abstratas Classe Object Nelson Freire (ISEP DEI-PPROG 2015/16) 35/72

36 Polimorfismo Classe é Tipo de Dados Tipo Referência Tipo e Subtipo Referência Tipo Referência Estático Dinâmico Conversão de Tipos Referência Tipos Referência Compatíveis Tipos de Conversão Upcasting Downcasting Tipos Referência da mesma Variável Um Estático Múltiplos Dinâmicos Sumário Procura de Métodos Tipos de Procura Estática Dinâmica Determinação do Tipo Dinâmico de uma Variável Operador instanceof Noção de Polimorfismo Programação Genérica Classe Object Vantagens Mecanismo de Sobreposição de Métodos (Overriding) Nelson Freire (ISEP DEI-PPROG 2015/16) 36/72

37 Polimorfismo Classe é também Tipo de Dados Classe é Tipo de Dados Tipo referência Variável deste tipo guarda referência de instância // referência = endereço de memória Pessoa p = new Pessoa("Nico"); Classe Pessoa especifica tipo da variável p Variável p guarda referência de instância Pessoa RAM... p referência Stack Instância... Nico... atributo N Heap Porque define Conjunto de instâncias que podem ser atribuídas a variável // instâncias: dados de programa Conjunto de operações sobre essas instâncias // operações: métodos instância Nelson Freire (ISEP DEI-PPROG 2015/16) 37/72

38 Polimorfismo Tipo Referência Tipo e Subtipo Referência Especificado por Classe Interface // próxima aula Subtipo de Tipo Referência Tipo especificado por classe Tipo de uma subclasse Trabalhador é subtipo de Pessoa Superclasse Pessoa Tipo Pessoa Subclasse Trabalhador Tipo Trabalhador Subtipo de Pessoa Tipo e Subtipo Nelson Freire (ISEP DEI-PPROG 2015/16) 38/72

39 Polimorfismo Tipo Referência Estático Dinâmico Tipo Estático e Tipo Dinâmico Tipo Estático Considerado pelo compilador Tempo de compilação (compile-time) // tradução do código fonte para código executável Tempo de programação no Netbeans // verificação sintática do programa fonte Tipo declarado Pessoa p; // tipo estático da variável p = Pessoa // tipo declarado Tipo Dinâmico Considerado em tempo de execução (run-time) p = new Pessoa(); // tipo dinâmico da variável p = Pessoa p = new Trabalhador(); // tipo dinâmico da variável p = Trabalhador Nelson Freire (ISEP DEI-PPROG 2015/16) 39/72

40 Polimorfismo Requisito Tipos compatíveis // (tipo_2) tipo _1 tipo_1 e tipo_2 compatíveis Tipos Referência Compatíveis Tipos // Ex: tipo Pessoa Respetivos Subtipos // Ex: subtipo Trabalhador Mesmo ramo da hierarquia Variável Tipo // Pessoa p1, p2 = new Pessoa(), p3 = new Pessoa(); Pode guardar objetos de subtipos // p1 = new Trabalhador(); Subtipo // Trabalhador t; Justificação Conversão de Tipos Referência 1/3 Pode guardar objetos do tipo // t = (Trabalhador) p2; Pessoa Trabalhador Possuem métodos semelhantes // Ex: Pessoa e Trabalhador possuem ambos getnome() Aplicam-se Objetos do Tipo //... p2.getnome() // invoca getnome() de Pessoa // p2 = (Pessoa) t; // conversão Objetos do Subtipo //... p2.getnome() // invoca getnome() de Trabalhador // t = new Trabalhador(); //... t.getnome() // invoca getnome() de Trabalhador // t = (Trabalhador) p3; // conversão //... t.getnome(); // invoca getnome() de Pessoa Nelson Freire (ISEP DEI-PPROG 2015/16) 40/72

41 Polimorfismo Conversão Upcasting Conversão de Tipos Referência 2/3 Subtipo Tipo Superclasse Subclasse Pessoa Trabalhador Tipo Pessoa Tipo Trabalhador Subtipo de Pessoa Upcasting Downcasting Tipo e Subtipo Conversão de Tipos Pessoa p = new Pessoa(); Trabalhador t = new Trabalhador(); p = t; String nome = p.getnome(); // p guarda referência de objeto do mesmo tipo // p guarda referência de objeto de um subtipo // executado getnome() de Trabalhador Conversão Implícita Não precisa de ser declarada // Ex: p = t em vez de p = (Pessoa) t Conversão de tipos segura Não provoca erros de execução Porque todos os métodos do tipo são possuídos pelo subtipo // Ex: Trabalhador e Pessoa Nelson Freire (ISEP DEI-PPROG 2015/16) 41/72

42 Polimorfismo Conversão Downcasting Conversão de Tipos Referência 3/3 Tipo Subtipo Superclasse Subclasse Pessoa Trabalhador Tipo Pessoa Tipo Trabalhador Subtipo de Pessoa Upcasting Downcasting Tipo e Subtipo Pessoa p = new Pessoa(); Trabalhador t = new Trabalhador(); t = (Trabalhador) p; String nome = t.getnome(); String empresa = t.getempresa(); Conversão de Tipos // p guarda referência de objeto do mesmo tipo // t guarda referência de objeto de um tipo // executado getnome() de Pessoa // gera erro de execução ; p não possui getempresa() Conversão explícita (declarada) Compilador passa responsabilidade para programador Conversão de tipos insegura Pode provocar erros de execução Porque tipo, geralmente, não possui todos métodos do subtipo // Ex: Pessoa e Trabalhador Nelson Freire (ISEP DEI-PPROG 2015/16) 42/72

43 Polimorfismo Variável Tipo Referência Tem um tipo estático Pode ter múltiplos tipos dinâmicos Tipos Referência da mesma Variável Classe Pessoa Tipo Pessoa Tipo Estático Tipo declarado Único tipo considerado pelo compilador // não se altera Pessoa p; // tipo estático de p = Pessoa p = new Trabalhador(); // tipo estático de p = Pessoa Subclasse Trabalhador Tipo e Subtipo Subtipo Trabalhador Tipos Dinâmicos Considerados em tempo de execução p = new Trabalhador(); // tipo p: estático = Pessoa e dinâmico = Trabalhador de variável com diferentes tipos dinâmicos Pessoa p; p = new Pessoa(); p = new Trabalhador(); // p é do tipo dinâmico Pessoa // p mantêm-se do tipo dinâmico Pessoa // p passa a ser do tipo dinâmico Trabalhador Nelson Freire (ISEP DEI-PPROG 2015/16) 43/72

44 Polimorfismo Procura de Métodos 1/2 Redefinição de métodos permite a uma classe Possuir múltiplos métodos de instância com a mesma assinatura Um redefinido + outros herdados Ou apenas herdados Aceder a múltiplos métodos de classe com a mesma assinatura, das suas superclasses Questão Como é procurado o método a executar entre vários alternativos? instânciab.metodo1(12, 23.4f) // método1 da classe B ou de A? B.metodo2("Mensagem") // método2 da classe B ou de A? Classe A public Pessoa metodo1(int x, float y) public static int metodo2(string s) Definidos Classe Pessoa Classe B public Trabalhador metodo1(int z, float w) public static int metodo2(string s) Redefinidos Subclasse Trabalhador Nelson Freire (ISEP DEI-PPROG 2015/16) 44/72

45 Polimorfismo Tipos de Procura Procura de Métodos 2/2 Estática // em tempo de compilação (compile-time) pelo compilador // em tempo de programação no Netbeans pelo compilador Dinâmica // em tempo de execução (run-time) Procura Estática Métodos de Classe Métodos de Instância Procura Dinâmica Métodos de Instância Métodos de Classe Métodos de Instância Métodos de uma Classe Nelson Freire (ISEP DEI-PPROG 2015/16) 45/72

46 Polimorfismo Algoritmo de Procura Estática de Métodos Procura do método solicitado começa sempre na classe do objeto-recetor de mensagem Chamada procura local Procura Estática de Métodos 1/3 Se o método pretendido não for encontrado nessa classe, a procura continua nas suas superclasses, segundo a ordem hierárquica e até à classe Object Se a procura chegar à classe Object e o método pretendido não for encontrado, é gerado um erro de compilação Algoritmo de Procura Estática de Métodos Nelson Freire (ISEP DEI-PPROG 2015/16) 46/72

47 Polimorfismo Métodos de Classe Procurados apenas em tempo de compilação Procura Estática de Métodos 2/3 s de Métodos Acessíveis Aplicados a Classes A.m1(); // tipo estático de A é A determinado m1 de A Classe A public static m1() public static m2() B.m1(); B.m2(); // tipo estático de B é B determinado m1 de B // encontrado m2 de A Classe B public static m1() Aplicados a Instâncias Exemplo B b1 = new B(); b1.m1(); // tipo estático de b1 é B determinado m1 de B A a1 = b1; a1.m1(); // tipo estático de a1 é A determinado m1 de A Nelson Freire (ISEP DEI-PPROG 2015/16) 47/72

48 Polimorfismo Métodos de Instância Procura Estática de Métodos 3/3 Acessíveis só podem ser aplicados a instâncias D d1 = new D(); C c1 = new C(); c1.m1(); c1 = d1; c1.m1(); d1.m2(); // tipo estático de c1 é C determinado m1 de C // tipo estático de c1 é C determinado m1 de C // tipo estático de d1 é D determinado m2 de C Classe C public m1() public m2() Classe D public m1() Exemplo Nelson Freire (ISEP DEI-PPROG 2015/16) 48/72

49 Polimorfismo Algoritmo de Procura Dinâmica Procura Dinâmica de Métodos de Instância 1/2 Permite à instância-recetora de uma mensagem Determinar o método apropriado para responder, entre múltiplos métodos sobrepostos Métodos com a mesma assinatura Método será sempre encontrado Código garantido pelo compilador Tudo exceto downcastings Responsabilidade do programador Algoritmo de Procura Dinâmica de Métodos em Código Garantido pelo Compilador (tudo exceto downcastings) Nelson Freire (ISEP DEI-PPROG 2015/16) 49/72

50 Polimorfismo Métodos de Instância Procura Dinâmica de Métodos de Instância 2/2 Métodos acessíveis só podem ser aplicados a instâncias Pessoa p; p = new Pessoa(); System.out.println( p.tostring() ); p = new Trabalhador(); System.out.println( p.tostring() ); // p é do tipo Pessoa // p mantêm-se do tipo Pessoa // executado tostring() da classe Pessoa // p passa a ser do tipo Trabalhador // executado tostring() de Trabalhador Observações Mesma variável p Com diferentes tipos dinâmicos Mesma expressão sintática p.tostring() Com diferentes semânticas Object tostring() definido Pessoa tostring() redefinido Trabalhador tostring() redefinido Nelson Freire (ISEP DEI-PPROG 2015/16) 50/72

51 Polimorfismo Operador instanceof Sintaxe: nomeinstância instanceof nomeclasse Retorna: true ou false Determinação do Tipo Dinâmico de uma Variável true se Instância for da Classe ou de qualquer uma das suas subclasses Instância de subclasse é considerada instância de qualquer superclasse sua Porque responde às mesmas mensagens das suas instâncias // Declaração de contentor de instâncias de diferentes tipos Pessoa Pessoa[] pessoas = new Pessoa[100]; // Preenchimento do contentor pessoas[0] = new Trabalhador() ; pessoas[1] = new Pessoa() ;... // Mostrar nomes de todas as pessoas do contentor for (int i=0; i<pessoas.length; i++) System.out.println(" Nome: " + pessoas[i].getnome() ); // Mostrar as empresas dos trabalhadores for (int i=0; i<pessoas.length; i++) if (pessoas[i] instanceof Trabalhador) Trabalhador Pessoa Estudante // instâncias Pessoa, Trabalhador e Estudante System.out.println( "Empresa: "+ ( (Trabalhador) pessoas[i] ).getempresa() ); // conversão tipo estático Nelson Freire (ISEP DEI-PPROG 2015/16) 51/72

52 Polimorfismo Polimorfismo Noção Mecanismo da POO que permite a variável de um tipo estático assumir múltiplos tipos dinâmicos i.e., permite a uma variável assumir múltiplas formas (polimorfismo... das variáveis) 1/2 Interesse Permitir uma Programação Genérica para criar programas Mais simples Mais facilmente estendíveis a novas classes Programação Incremental Elipse publico area() Figura publico area() Poligono publico area() Programação Genérica Princípios Retangulo publico area() Triangulo publico area() Todas as classes da hierarquia devem possuir a mesma API: Mesmos métodos públicos para responderem às mesmas mensagens Programação deve ser feita para o tipo mais genérico da hierarquia (topo) Programador não tem de se preocupar com subtipos (existentes e futuros) É particularmente simples Usando contentores de instâncias Nelson Freire (ISEP DEI-PPROG 2015/16) 52/72

53 Polimorfismo Polimorfismo 2/2 : programa para mostrar áreas de diferente figuras geométricas Todas as classes da hierarquia têm a mesma API (método area()) Definido na classe mais genérica (topo da hierarquia ) Redefinido nas subclasses Programação mais simples feita para o tipo mais genérico (Figura) requer um contentor desse tipo Tipo genérico é o tipo compatível com todos os subtipos da hierarquia // Estrutura de Dados para guardar todas as instâncias da hierarquia de classes: contentor Figura[] figuras = new Figura[100]; // Preenchimento do contentor figuras[0] = new Elipse(); figuras[1] = new Retangulo(); figuras[2] = new Triangulo(); Elipse area() Figura area() Poligono area() // Algoritmo para calcular e mostrar áreas for( int i=0; i<figuras.length; i++) System.out.println( figuras[i].area() ); Retangulo area() Triangulo area() Nelson Freire (ISEP DEI-PPROG 2015/16) 53/72

54 Polimorfismo Programação Genérica : Vantagens Permite a criação de programas Mais Simples Mais Compactos Mais fáceis de escrever, ler, perceber e manter Facilita a extensão dos programas a novos subtipos da hierarquia Porque o código genérico também funciona para novos subtipos da hierarquia Minimiza as alterações necessárias Apenas ao nível do preenchimento de Estruturas de Dados Algoritmo mantêm-se intacto Extensão do programa anterior para suportar um novo subtipo Circulo Basta acrescentar apenas uma linha de código figuras[3] = new Circulo(); Propriedade dos programas muito importante Garante a continuidade do código Exige um menor esforço de programação Menores custos de produção de software Elipse area() Circulo area() Figura area() Retangulo area() Poligono area() Triangulo area() Nelson Freire (ISEP DEI-PPROG 2015/16) 54/72

55 Polimorfismo Tipo Object Compatível com todos os tipos referência Variável deste tipo Pode representar, dinamicamente Instâncias de qualquer classe Object obj = new Pessoa(); obj = new Trabalhador(); Classe Object API (Métodos Públicos) Muito limitada Poucas mensagens para enviar a instâncias Object Ex: obj.tostring() // mensagem tostring() enviada a obj Membros de Object Programação para tipo Object Aumento de mensagens para enviar a instâncias Object Requer downcastings para subtipos de Object ((Trabalhador) pessoas[i] ).getempresa() // mensagem getempresa() enviada a pessoas[i] Há preocupações com os tipos das instâncias Nelson Freire (ISEP DEI-PPROG 2015/16) 55/72

56 Polimorfismo Suporta Redefinição de métodos acessíveis (classe/instância) Sobreposição Porque a redefinição local de método acessível sobrepõe-se à sua definição Método redefinido (sobreposto), segundo o algoritmo de procura de métodos Primeiro a ser encontrado Tem maior prioridade Objeto-recetor de mensagem executa sempre o método sobreposto Mecanismo de Sobreposição (Overriding) Object tostring() Classe X tostring() Definido Redefinido Método Redefinido (Sobreposto) Não confundir com Overloading Mecanismo de sobrecarga de métodos/construtores numa classe Permite a definição de múltiplos métodos/construtores com o mesmo nome Múltiplos construtores na mesma classe Nelson Freire (ISEP DEI-PPROG 2015/16) 56/72

57 PPROG Sumário Geral Mecanismos de Reutilização de Código Herança de Classes Polimorfismo Classes Abstratas Classe Object Nelson Freire (ISEP DEI-PPROG 2015/16) 57/72

58 Classes Abstratas Sumário Noção de Classe Abstrata Concreta Classe Abstrata Declaração Método Abstrato Herança Interesse Construtores Tipo Referência Nelson Freire (ISEP DEI-PPROG 2015/16) 58/72

59 Classes Abstratas Classe Abstrata Pode definir métodos abstratos Métodos de instância Não privados Declarados apenas sintaticamente // só cabeçalho; corpo vazio; não implementados Classe não instanciável Sem capacidade para criar instâncias Caso contrário, instâncias não seriam capazes de responder a mensagens correspondentes a métodos abstratos erros de execução Classe com definição incompleta Noção de Classe Abstrata Se possuir métodos abstratos // métodos não implementados public abstract class Exemplo {... public abstract double m1(); public abstract int m2( String s ); public int m3( int x ) { return x*20; } } // modificador abstract declara classe abstrata // método abstrato (declarado abstract) // método não abstrato (implementado) Nelson Freire (ISEP DEI-PPROG 2015/16) 59/72

60 Classes Abstratas Classe Concreta Classe não abstrata Tem definição completa // todos os métodos não-abstratos Pode ser instanciável Noção de Classe Concreta public class Exemplo2 {... // métodos de instância public double m1() { return Math.random() * 100; } public String m2( String s ) { return String.format("%-7s",s); } public double m3( int x ) { return Math.random() * x; } } // sem modificador abstract // implementado // implementado // implementado Nelson Freire (ISEP DEI-PPROG 2015/16) 60/72

61 Classes Abstratas Sintaxe Declaração de Classe Abstrata 1/3 [modificador de acesso] abstract class NomeClasse [extends SuperClasse] [implements Interfaces] { } //membros da classe [...] opcional modificador de acesso public ou sem modificador = package NomeClasse letra inicial maiúscula extends aplica-se a classe que estende outra classe (herança) implements aplica-se a classe que implementa um ou mais interfaces public abstract class Exemplo { }... // Nome da classe iniciado com letra maiúscula Nelson Freire (ISEP DEI-PPROG 2015/16) 61/72

62 Classes Abstratas Organização dos Membros da Classe Declaração de Classe Abstrata 2/3 [modificador de acesso] abstract class NomeClasse [extends SuperClasse] [implements Interfaces] { // variáveis de instância // constantes de classe // variáveis de classe // membros públicos // construtores // métodos de instância // métodos de consulta (gets) // métodos de modificação (sets) // métodos complementares e auxiliares // podem ser abstratos // métodos de classe // organização // outros membros privados // métodos de instância // organização // métodos de classe } // organização Nelson Freire (ISEP DEI-PPROG 2015/16) 62/72

63 Classes Abstratas Método Abstrato Declaração de Classe Abstrata 3/3 Sintaxe [modificador de acesso] abstract tipo_retorno nome_método( lista_parâmetros ); [...] opcional modificador de acesso public, protected ou sem modificador = package nome_método letra inicial minúscula lista_parâmetros tipo1 nome1, tipo2 nome2,... ; pode ser lista vazia public abstract class Exemplo2 {... public abstract double m1(); protected abstract String m2( int x ); abstract void m3( Pessoa p, int n ); }... Nelson Freire (ISEP DEI-PPROG 2015/16) 63/72

64 Classes Abstratas Classe Abstrata Herança de Classes Abstratas Pode ser Herdada Figura Classe Abstrata Circulo Retangulo Subclasse de Classe Abstrata Herda métodos abstratos Se implementar Todos Classe Concreta Alguns Classe Abstrata Nelson Freire (ISEP DEI-PPROG 2015/16) 64/72

65 Classes Abstratas Garantir uma Programação Genérica (i.e., programação simples) Quando é difícil criar uma hierarquia de classes todas concretas, devido à impossibilidade de implementação de todos os métodos em classes genéricas Interesse de Classes Abstratas Classes para representação e manipulação de figuras geométricas Como implementar os métodos comuns, área() e perímetro(), na classe genérica Figura? Figura Classe Abstrata Circulo Retangulo Uma classe abstrata colocada no topo de uma hierarquia de classes pode garantir que todas as classes concretas (instanciáveis) da hierarquia implementem a mesma API Tenham implementações dos mesmos métodos de instância públicos Sejam classes cujas instâncias respondam às mesmas mensagens Nelson Freire (ISEP DEI-PPROG 2015/16) 65/72

66 Classes Abstratas Classe Abstrata Pode declarar construtores Construtores de Classes Abstratas Interesse Para subclasses Inicializarem variáveis de instância herdadas Não servem para criar instâncias // classe abstrata não é instanciável public abstract class Exemplo3 {... } private int x; public Exemplo3( int x ) { this.x = x; };... public class Exemplo4 extends Exemplo3 {... } public Exemplo4( int x ) { super(x); };... Nelson Freire (ISEP DEI-PPROG 2015/16) 66/72

67 Classes Abstratas Classe Abstrata define Tipo Referência de Classe Abstrata Tipo referência // como qualquer classe concreta Tipo Figura Definido por classe abstrata Figura Figura Classe Abstrata Circulo Retangulo Usado na declaração de variável Figura f; Tipo compatível com seus subtipos Figura compatível com subtipos Circulo e Retangulo f pode representar instâncias Circulo e Retangulo Figura f = new Circulo(); f = new Retangulo(); Nelson Freire (ISEP DEI-PPROG 2015/16) 67/72

68 PPROG Sumário Geral Mecanismos de Reutilização de Código Herança de Classes Polimorfismo Classes Abstratas Classe Object Nelson Freire (ISEP DEI-PPROG 2015/16) 68/72

69 Herança Classe Object 1/4 Classe Java mais Genérica Está no topo de todas as hierarquias de classes Java Superclasse de todas as classes Qualquer classe em Java é subclasse, pelo menos, de Object Pessoa Object Carro Membros Comuns a todas as classes Java Interessam a todas as classes s de Métodos tostring equals Trabalhador Hierarquia de Classes Java Nome Object Objeto... é característica comum a todas as classes Nelson Freire (ISEP DEI-PPROG 2015/16) 69/72

70 Herança Classe Object 2/4 Métodos (instância) que classes instanciáveis devem reescrever (1/3) public String tostring() {... } Deve retornar representação textual legível do objeto Em Object Retorna nome da classe e identificador interno hexadecimal protected Object clone() {... } Java não garante implementação adequada Construtor de cópia (ou clone) public class Pessoa { } private String nome; private int idade;... public Pessoa(Pessoa p){ this.nome = p.nome; this.idade = p.idade; }... public Pessoa clone(){ return new Pessoa(this); } // construtor de cópia Nelson Freire (ISEP DEI-PPROG 2015/16) 70/72

71 Herança Classe Object 3/4 Métodos (instância) que classes instanciáveis devem reescrever (2/3) public boolean equals(object obj) {... } Deve testar a igualdade de características de 2 objetos // equivalência Mesma classe Estados iguais Em Object Testa apenas igualdade de endereços // Object não tem estado obj == this (objeto recetor da mensagem) de método reescrito... public class Pessoa { } private String nome; private int idade;... public boolean equals(object obj){ if(this==obj) return true; if(obj==null this.getclass()!=obj.getclass()) return false; Pessoa p = (Pessoa) obj; return nome.equals(p.getnome()) && idade==p.getidade(); } Método getclass() Retorna objeto da classe Class que representa classe do objeto recetor. Nelson Freire (ISEP DEI-PPROG 2015/16) 71/72

72 Herança Classe Object 4/4 Métodos (instância) que classes instanciáveis devem reescrever (3/3) public boolean equals(object obj) {... } de método reescrito... numa hierarquia de classes public class Pessoa { } private String nome; private int idade;... // superclasse public boolean equals(object obj){ if(this==obj) return true; if(obj==null this.getclass()!=obj.getclass()) return false; Pessoa p = (Pessoa) obj; return nome.equals( p.getnome() ) && idade==p.getidade(); } Método getclass() Retorna objeto da classe Class que representa classe do objeto recetor. public class Trabalhador extends Pessoa { } private String empresa;... public boolean equals(object obj){ if(!super.equals(obj) ) return false; Trabalhador t = (Trabalhador) obj; return empresa.equals( t.getempresa() ); } // subclasse Nelson Freire (ISEP DEI-PPROG 2015/16) 72/72

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel) Herança capacidade de uma classe (subclasse) herdar, adquirir atributos e funcionalidades de outra classe (superclasse), podendo juntar algumas especificidades e/ou alterar outras. Existe uma relação tipo

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 PPROG Paradigmas da Programação Tipos Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20 Sumário Interesse Definição Implementação Declaração Valor de um Tipo Enumerado Variável de Tipo Enumerado Métodos Automáticos

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?

Leia mais

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática 6 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; } Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos

Leia mais

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Herança. Prof. Fernando V. Paulovich  23 de agosto de 2010 Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade

Leia mais

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){

Leia mais

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1 INE5603 Introdução à POO Prof. A. G. Silva 30 de outubro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de 2017 1 / 1 Especialização de classes (I) (Cap. 6) Operações de abstração como

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

Programação Orientada por Objetos

Programação Orientada por Objetos PPROG Paradigmas da Programação Programação Orientada por Objetos Abstração e Encapsulamento Classes e Objetos (Livro Big Java, Late Objects Capítulo 8) Nelson Freire (ISEP DEI-PPROG 2016/17) 1/82 PPROG

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,

Leia mais

Classe Abstrata e Interface

Classe Abstrata e Interface Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 7 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

Paradigmas da Programação PPROG GENÉRICOS. (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23

Paradigmas da Programação PPROG GENÉRICOS. (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23 PPROG Paradigmas da Programação GENÉRICOS (Livro Big Java, Late Objects Capítulo 18) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/23 Genéricos Sumário Noção de Genérico Interesse dos Genéricos Tipos Parametrizados

Leia mais

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança

Leia mais

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Programação Orientada a Objetos Flávio de Oliveira Silva 144 HERANÇA Herança é a capacidade de uma subclasse de ter acesso as propriedades da superclasse(também chamada classe base) relacionada a esta subclasse. Dessa forma os atributos e métodos de uma classe são

Leia mais

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando -Herança Estrutura Hierárquica e modular Projeção de classes genéricas que podem ser especializadas

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Linguagens de Programação Aula 12

Linguagens de Programação Aula 12 Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução

Leia mais

Linguagem de Programação II Herança

Linguagem de Programação II Herança Linguagem de Programação II Herança Prof. Alessandro Borges 2 Tópicos Reutilização de classes Delegação Herança Definição Superclasse e Subclasse A palavra reservada extends Método construtor com herança

Leia mais

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos) Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private

Leia mais

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes - Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

A Relação de Subtipo e Tipos Genéricos

A Relação de Subtipo e Tipos Genéricos O tipo List representa as listas que declaram ter elementos do tipo Object O tipo que representa as listas que declaram ter elementos de um tipo qualquer é List Este tipo é definido à custa

Leia mais

COMPORTAMENTOS - Observações

COMPORTAMENTOS - Observações COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para

Leia mais

Como exemplo, vamos criar uma subclasse da classe Funcionario, vista nos capítulos anteriores.

Como exemplo, vamos criar uma subclasse da classe Funcionario, vista nos capítulos anteriores. HERANÇA E POLIMORFISMO Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 7 A herança é um importante recurso da programação orientada a objeto que

Leia mais

Linguagem de Programação. Diagrama de classes

Linguagem de Programação. Diagrama de classes Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG 2 Agenda Diagrama de classes Herança Associação Agregação Exercícios 3 Diagrama de classes Mostra um

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Java para Desktop. Programação Orientada à Objetos 2 JSE

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 4 Tipos Enumerados Generalização e Herança Visibilidade Chamada de Construtores

Leia mais

Polimorfismo. O que é polimorfismo?

Polimorfismo. O que é polimorfismo? O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus

Leia mais

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração Java First-Tier: Aplicações Orientação a Objetos em Java (II) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Sobrecarga Um recurso usual em programação OO é o uso de sobrecarga

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

Programação Orientada a Objetos JAVA - NETBEANS

Programação Orientada a Objetos JAVA - NETBEANS Programação Orientada a Objetos JAVA - NETBEANS Agenda Programação Orientada a Objeto (POO) Conceitos sobre POO Pilares da POO Objeto Classe Construtores Troca de Mensagens Pilares da POO Encapsulamento

Leia mais

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Tema

Leia mais

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU Aula 9 POO 1 Polimorfismo Profa. Elaine Faria UFU - 2019 Sobrecarga de Métodos Numa mesma classe, dois ou mais métodos podem ter o mesmo nome Desde que tenham tipos, quantidade e/ou ordem de parâmetros

Leia mais

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc. Orientação a Objetos Revisão Conceitos CLASSE CLASSIFICAÇÃO GENERALIZAÇÃO ESPECIALIZAÇÃO HERANÇA INTERFACES POLIMORFISMO SOBRECARGA ENCAPSULAMENTO ABSTRAÇÃO MODULARIZAÇÃO 9 CLASSE Classe é um agrupamento

Leia mais

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Programação Orientada a Objetos com Java. Prof. Júlio Machado Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que

Leia mais

Herança e Propriedades

Herança e Propriedades Herança e Propriedades 2013 O que veremos hoje? Herança e Propriedades Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Herança em POO Herança Herança

Leia mais

POO e C++: Herança e Polimorfismo

POO e C++: Herança e Polimorfismo POO e C++: Herança e Polimorfismo Márcio Santi Luiz Fernando Martha Conceito de Herança em POO Recurso que torna o conceito de classe mais poderoso; Permite que se construa e estenda continuamente classes

Leia mais

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Aula 9 Herança. Prof. Jefersson Alex dos Santos Aula 9 Herança Prof. Jefersson Alex dos Santos Roteiro Introdução Conversão de tipo explícita (Cast) Acesso Protegido A classe Object A classe Class Reflexão Recomendações de Projeto Herança Técnica necessária

Leia mais

Lição 11 Herança, polimorfismo e interfaces

Lição 11 Herança, polimorfismo e interfaces Lição 11 Herança, polimorfismo e interfaces 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Definir superclasses e subclasses Criar Override de métodos de superclasses Criar métodos e classes

Leia mais

Sobrecarga, Sobreposição e Polimorfismo

Sobrecarga, Sobreposição e Polimorfismo Sobrecarga, Sobreposição e Polimorfismo José Gustavo de Souza Paiva Sobrecarga de Métodos Numa mesma classe, dois ou mais métodos podem ter o mesmo nome Desde que tenham tipos, quantidade e/ou ordem de

Leia mais

1 Introdução e Conceitos básicos

1 Introdução e Conceitos básicos 1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2

Leia mais

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU Aula 10 POO 1 Classes Abstratas Profa. Elaine Faria UFU - 2019 Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for

Leia mais

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que

Leia mais

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes - Programação Java - Herança e Polimorfismo - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes relacionadas entre

Leia mais

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos

Leia mais

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Programação Estruturada e Orientada a Objetos. Objetos e Métodos Programação Estruturada e Orientada a Objetos Objetos e Métodos 2013 O que veremos hoje? Objetos e Métodos Transparências baseadas no material do Prof. Jailton Carlos Objetivos Aprender a criar construtores;

Leia mais

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU Aula 7 POO 1 Herança Profa. Elaine Faria UFU - 2019 Problema Problema As classes Funcionário e Estudante compartilham alguns atributos, mas não todos Não é possível utilizar uma classe para representar

Leia mais

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 5 Conversão de Tipos Polimorfismo O Modificador final O Modificador

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Conteúdo Noções elementares de extensão de classes Exemplo: classe

Leia mais

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Herança Herança Criação de uma nova classe de uma

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

Leia mais

Programação Java (nível intermediário) 4. Polimorfismo

Programação Java (nível intermediário) 4. Polimorfismo Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo

Leia mais

Interfaces e polimorfismo

Interfaces e polimorfismo Java 2 Standard Edition Interfaces e polimorfismo Helder da Rocha (helder@acm.org) argonavis.com.br 1 O que é polimorfismo Polimorfismo (poli=muitos, morfo=forma) é uma característica essencial de linguagens

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

Leia mais

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda. Aprendendo Java 2 Rodrigo Mello Ramon Chiara Renato Villela Novatec Editora Ltda. www.novateceditora.com.br 1 Programação Orientada a Objetos O que é Programação Orientada a Objetos? É um paradigma de

Leia mais

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,Pa Palavra reservada this Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando

Leia mais

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

Leia mais

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br www3.ifrn.edu.br/~andrealmeida Aula VIII Herança e Interface Roteiro Herança Classes Abstratas Interface

Leia mais

Namespaces, Classes e Métodos.

Namespaces, Classes e Métodos. . Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem

Leia mais

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza  ~ vitorsouza Desenvolvimento OO com Java 6 Polimorfismo Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito

Leia mais

Universidade Federal de Uberlândia

Universidade Federal de Uberlândia Universidade Federal de Uberlândia Programação Orientada a Objetos Herança, Generalização-Especialização Prof. Fabiano Azevedo Dorça Princípio da POO que permite a criação de novas classes a partir de

Leia mais

Orientação a Objetos AULA 06

Orientação a Objetos AULA 06 Orientação a Objetos AULA 06 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Herança ü Sobrescrita e reescrita de métodos ü Sobrecarga ü Efeitos de Herança ü Polimorfismo 2 Um dos principais recursos

Leia mais

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto

Leia mais

Introdução à Programação Orientada por Objectos em Java. Enquadramento e Objectivos Abstracção Encapsulamento Herança Polimorfismo Conclusão

Introdução à Programação Orientada por Objectos em Java. Enquadramento e Objectivos Abstracção Encapsulamento Herança Polimorfismo Conclusão Introdução à Programação Orientada por Objectos em Java Enquadramento e Objectivos Abstracção Encapsulamento Herança Polimorfismo Conclusão 1 Introdução Realçar as vantagens da aplicação do paradigma da

Leia mais

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri Herança Forma de reutilização de software Encapsular estrutura e comportamento em um tipo não é um conceito exclusivo da orientação a objetos, pois já era usado na programação de tipos abstratos. O que

Leia mais

Classes, Métodos e Propriedades

Classes, Métodos e Propriedades Ambiente de Programação Visual Classes, Métodos e Propriedades Prof. Mauro Lopes 1-31 22 Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos apresentar de

Leia mais

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz LÓGICA DE PROGRAMAÇÃO (JAVA) Definição A herança é um princípio da POO que permite a criação de novas classes a partir de outras previamente criadas. Essas novas classes são chamadas de subclasses, ou

Leia mais