Notas de Aula 06: Programação para tipos versus Programação para interfaces
|
|
- Moisés Alcântara de Caminha
- 7 Há anos
- Visualizações:
Transcrição
1 Notas de Aula 06: Programação para tipos versus Programação para interfaces Objetivos da aula: Compreender o uso e a vantagem da programação para tipos Compreender o uso e a vantagem da programação para interfaces Entender e aplicar o conceito de coerção (typecast) Entender e aplicar o operador instanceof Entender e aplicar o conceito de Generics Recordando... Na aula passada, empregando o conceito de herança e o uso da interface, criamos diversas subclasses que possuíam métodos e atributos específicos, mas que compartilhavam atributos e métodos descritos na classe Profissional. Para instanciarmos um objeto, primeiro declarávamos a variável pelo seu tipo, e instanciávamos, através do método construtor, a respectiva classe. O seu código, apesar de funcional, não é o mais reutilizável. Existem outras maneiras de se trabalhar com os objetos de uma classe... Programação para tipos Na aula passada, criamos uma classe Engenheiro que herdava da classe ProfissionalRemuneraçãoFixa. A classe Medico também herdava de ProfissionalRemuneracaoFixa. Do outro lado da estrutura hierárquica, a classe Vendedor herdava da classe ProfissionalRemuneracaoComissionada. Uma segunda estrutura hierárquica, proveniente dos exercícios da aula passada, tem como a classe Fatura o seu topo. As duas hierarquias estão conectadas pela Interfaces Pagamento e Identificacao. Para relembrarmos toda a estrutura, reveja o diagrama de classes:
2 Quer seja nos exemplos, quer seja nos exercícios, todas as vezes em que criávamos um novo objeto, nos víamos forçados a utilizar a seguinte estrutura: <NomeDaClasse> <nomevariavel> = new <NomeDaClasse>(); Por exemplo, para instanciar um objeto da classe Engenheiro, faríamos: Engenheiro eng = new Engenheiro(); Com dois profissionais e objetos distintos, teríamos, então, duas declarações:
3 Hemoterapeuta h1 = new Hemoterapeuta(" "," ",100000); Hemoterapeuta h2 = new Hemoterapeuta (" "," ",200000); O termo aplicado ao que fizemos se chama programação tipos. Isso porque, para declarar uma variável, fazíamos de acordo com o objeto que iria ser instanciado. Isso não está errado, mas essa forma de programação não aproveita os níveis de abstração que a Orientação a Objetos proporciona e nem o que o Java permite utilizar como recurso de programação. Quando utilizamos a programação para tipos, o nosso programa terá, em tempo de compilação, as construções necessárias para invocações do métodos corretamente. Ou seja, a sobrescrita de métodos (polimorfismo de sobrescrita) é resolvida em tempo de compilação. O que pode ser feito? Programação para interfaces Em Java, podemos declarar um supertipo (utilizar uma classe mãe) e instanciar uma classe filha. Este tipo de programação também é chamada de programação para interfaces e difere da abordagem já estudada e utilizada até o momento pois aumenta o nível de legibilidade e a reusabilidade do código. Nesta abordagem, as resoluções do polimorfismo acontecem em tempo de execução, olhando-se para o objeto efetivamente instanciado, não pelo tipo declarado. Nos nossos exemplos, os objetos da classe Hemoterapeuta podem ser declarados pela superclasse, a classe Medico. Já os objetos da classe Engenheiro podem ser declarados como ProfissionalRemuneracaoFixa. Medico med1 = new Hemoterapeuta(" "," ",100000); Medico m2 = new Hemoterapeuta (" "," ",200000); ProfissionalRemuneracaoFixa eng = new Engenheiro(); Agora, vamos subir ainda mais o nível de abstração. O que há de comum entre um objeto da classe Engenheiro e um objeto Hemoterapeuta? Todas, em algum momento, são subclasses da classe Profissional, que é o topo da hierarquia (desconsiderando a classe Object, é claro). Então, porque não declará-las pela sua superclasse maior?
4 Profissional prof1 = new Hemoterapeuta(" "," ",100000); Profissional prof2 = new Hemoterapeuta(" "," ",200000); Profissional prof3 = new Engenheiro(); Para os métodos herdados, fica óbvio a escrita do código. No entanto, para os métodos específicos da classe, o compilador não saberá informar se a chamada é correta. Por exemplo, se quiséssemos invocar o método setcrea() da classe Engenheiro, um erro nos seria apontado. Por que? Profissional prof3 = new Engenheiro(); prof3.setcrea( ): // Um erro será apontado. O analisador sintático executa sua tarefa com base no tipo declarado e não no objeto instanciado. Podemos forçar o analisador sintático a entender que na verdade aquilo é um objeto da classe engenheiro fazendo um typecast. Esta operação só é possível porque a classe Engenheiro é filha da classe Profissional. A estrutura de um typecast é: (NomeClasseCoercao)<nomeVariavel> = (NomeClasseCoercao)<nomeObjeto> Engenheiro eng = (Engenheiro) prof3; eng.setcrea( ); A pergunta que se faz é: para quê declarar prof3 pela superclasse? No fundo, talvez tenhamos que fazer tantas operações de typecast que não vale a pena fazer esta declaração pela superclasse. Sim, é verdade. Se a operação de typecast deixa de ser pontual, isso pode indicar não só um problema de programação, mas também de modelagem. Uma possibilidade para amenizar o typecast é fazê-lo de forma implícita: ((Engenheiro)prof3).setCrea( ); Menos uma referência, mas ainda assim, a consideração anterior prevalece. Não existe uma receita de bolo para estes casos. Devem ser considerados os aspectos positivos e negativos de cada caso. Ok, não faz sentido adotar a declaração para supertipos neste caso. Aliás, só podíamos fazer uma coerção porque neste trecho de código é possível presumir o seu tipo (Engenheiro). Como a declaração da variável foi feita na linha anterior, podíamos assumir qual é o objeto esperado naquela variável.
5 Mas, nem sempre isso é possível. Imagine se criássemos um método na classe Principal que exibisse na tela a identificação do profissional com base no seu tipo? Para um engenheiro, exiba o CREA. Para um médico, o CRM. Uma solução possível seria criar dois métodos distintos: um para o objeto da classe Medico e outro para o objeto da classe Engenheiro. Mas, a maioria das informações são as mesmas. Já que temos dois objetos do mesmo supertipo, então podemos nos utilizar disso na criação de um único método. Para saber de qual objeto se trata efetivamente (já que dentro do método não sabemos qual foi a sua declaração e portanto não sabemos qual o seu tipo) podemos utilizar a instrução instanceof e colocar as instruções adequadas: public void imprimir(profissional prof){ System.out.println(prof.getCpf()); if (prof instanceof Engenheiro){ System.out.println(((Engenheiro)prof).getCrea()); else{ System.out.println(((Medico)prof).getCRM()); Ocorre que nos exercícios anteriores você já resolveu este problema: colocou este mesmo método nas classes se utilizando do polimorfismo de sobrescrita. Eficiente e elegante. O método da Interface getidentificacao() é contratado pela classe Profissional. Como a classe Profissional é abstrata, a implementação dos métodos é postergada para as classes filhas. Para um médico, o retorno é o CRM; para um engenheiro, o CREA. public void imprimir(profissional prof){ System.out.println(prof.getCpf()); System.out.println(prof.getIdentificacao()); Ocorre que, mesmo nestes casos onde não se pode prever o tipo do objeto, utilizar o operador instanceof é mais um indicativo de que sua modelagem está com problemas e seu código está refém das operações quebra-galho (POG-Programação Orientada a Gambiarra). Ok, então vamos aumentar um pouquinho mais o nível de abstração. Pelo que vimos e fizemos, para imprimir a despesa de um profissional bastava chamar o método calcularremuneracao(), certo?
6 public void imprimir(profissional prof){ System.out.println(prof.getIdentificacao()); System.out.println(prof.calcularRemuneracao()); Certo. E se quiséssemos imprimir também a despesa com uma fatura (considere os atributos vencimento e valor), que é uma classe de uma estrutura hierárquica diferente da classe Profissional? A solução é estender o conceito para o nível da interface e utilizar o que é comum: o método calculardepesa(). Para isso, no entanto, devemos declarar a variável local do método imprimir como do tipo interface Pagamento. public void imprimir(pagamento pag){ System.out.println(pag.calcularDespesa()); Problema resolvido? Talvez. Se quiséssemos imprimir os valores dos objetos em particular, deveríamos apelar novamente para o instanceof. Ou quem sabe, melhor ainda, rever se a interface pagamento não pode conter todos os contratos que ambas as hierarquias de classes precisam - um modo sútil de burlar a falta da herança múltipla. Abstrações ainda maiores... Em todos os exemplos, exercícios e desafios, você lidou com domínios particulares: uma empresa de plano de saúde, um locadora de filmes ou uma oficina de carros. As classes que lidamos até o momento são chamadas de POJO (Plain Old Java Objects) algo do tipo Objetos Clássicos em Java e refletem atributos e operações de entidades de um domínio. Mas, não é só de classes POJO que se faz um sistema. Estruturas de dados, classes de conexão a um banco de dados, entre outras, fazem parte, com frequência, de classes que você terá que escrever (ou reutilizar). Já é sabido a esta altura que o Java não suporta herança múltipla. Imagine, então, que você quisesse criar uma lista encadeada (Argh! Estruturas de Dados de novo!) de vendedores. Uma solução é criar uma classe geral chamada de No (Node). Um nó tem como atributo o próximo objeto da lista. Para deixar o mais genérico possível, você declararia esse atributo como do tipo Object. As classes POJO herdariam da classe No, caso quisessem implementar uma lista encadeada. Veja, por exemplo, como seria uma lista encadeada de carros:
7 public abstract class No{ private Object prox; public Object getprox(){ return prox; public void setprox (Object prox){ this.prox = prox; public class Carro extends No{ private String cor; public void setcor(string cor){ this.cor = cor; public String getcor(){ return this.cor; public class Principal{ public static void main(string[] args) { Carro c1 = new Carro(); Carro c2 = new Carro(); c1.setcor("branco"); c1.setprox(c2); c2.setcor("preto"); c2.setprox(null); percorrerlista(c1); public void percorrerlista(object cabeca){ while (cabeca!= null){ System.out.println(((Carro)cabeca).getCor()); cabeca = (Carro)cabeca.getProx(); O problema dessa abordagem é a de que seria necessário um typecast para percorrer a lista, pois o tipo declarado foi o mais alto possível (classe Object). O ideal é que tenhamos uma maneira de explicitar, de maneira genérica, o comportamento de uma classe sem precisar fazer typecast durante o uso. O Java oferece o conceito Generics. Vamos, novamente, imaginar uma classe genérica chamada No (referência a um nó da lista encadeada). O nó agora será denominado como genérico através da diretiva <T>. O atributo prox (próximo) e o retorno também serão genéricos e vão variar de acordo com a
8 instância. A classe Carro, filha de No, deve ter uma referência para substituição da generalidade no momento da declaração da classe: public abstract class No <T>{ private T prox; public T getprox(){ return prox; public void setprox (T prox){ this.prox = prox; public class Carro extends No <Carro>{ private String cor; public void setcor(string cor){ this.cor = cor; public String getcor(){ return this.cor; public class Principal{ public static void main(string[] args) { Carro c1 = new Carro(); Carro c2 = new Carro(); c1.setcor("branco"); c1.setprox(c2); c2.setcor("preto"); c2.setprox(null); percorrerlista(c1); public static void percorrerlista(carro cabeca){ while (cabeca!= null){ System.out.println(cabeca.getCor()); cabeca = cabeca.getprox(); Desta forma, o typecast não é mais necessário. Generics é um assunto vasto e inclui o conceito WildCards. Esta não é uma necessidade imediata para compreensão da orientação a objetos e está destinada a desenvolvedores mais experientes. Portanto, este assunto será comentado com mais aprofundamento em outra oportunidade.
9 Exercícios 1) Na interface Pagamento criada na aula passada, adicione um atributo (público, estático e final) com o valor do imposto sobre operações financeiras. Este valor soma-se ao cálculo de despesas. Utilize-o na classe Profissional e Fatura. 2) Crie uma interface chamada CRUD. Declare quatro métodos com retorno void e sem parâmetros: buscar, inserir, alterar e excluir. 3) Faça com que a classe Profissional implemente esta interface. Cada método deve imprimir na tela o seu objetivo. Por exemplo, o método buscar deve conter o código System.out.println( Método de busca ); 4) Instancie os objetos na classe Principal como tipo CRUD. Utilize os typecast para conseguir utilizar os métodos que são particulares de cada objeto. 5) Na classe Principal, crie um método para imprimir o nome da classe utilizando o instanceof. Depois, crie outro método que, ao invés de utilizar o instanceof, utilize o método getclass().getcanonicalname(), proveniente da classe Object.
Notas de Aula 05: Diretivas de atributos, métodos e classes e o uso de Interfaces.
Notas de Aula 05: Diretivas de atributos, métodos e classes e o uso de Interfaces. Objetivos da aula: Introduzir o uso da diretiva final Introduzir o uso da diretiva static Introduzir o uso da diretiva
Leia maisLista 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 mais4 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 maisHerança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:
Leia maisLinguagem 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 maisClasses 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 maisRecapitulando. 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 maisProgramaçã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 maisProgramaçã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 maisProgramaçã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 maisAvançando em Java com Polimorfismo. Prof.: Hugo Barros
Avançando em Java com Polimorfismo Prof.: Hugo Barros Tópicos da Aula Polimorfismo: Exemplos de polimorfismo Vantagens do polimorfismo Tipos de polimorfismo Métodos Abstratos Classes Abstratas Vinculação
Leia maisHeranç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 maisPolimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica
Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona alcides.pamplona@gmail.com Tópicos Ligação Dinamica Polimorfismo Verificação Dinâmica de Tipos 2 Introdução A vinculação ou ligação
Leia maisLinguagem 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 maisClasse 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 maisNotas de Aula 04: Herança e polimorfismo.
Notas de Aula 04: Herança e polimorfismo. Objetivos da aula: Introduzir o conceito de Heranças Criar uma hierarquia de classes Rever o uso de modificadores de acesso. Apresentar o conceito de polimorfismo
Leia maisJava 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 maisUNIVERSIDADE 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 maisInterfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em
Leia maisProgramaçã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 maisEx: 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 maisPolimorfismo. 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 maisPOO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo
Leia maisProgramaçã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 maisA 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 maisRepetindo mais código?
Classe Abstrata 1 Repetindo mais código? p Como esta nossa classe Funcionario e ControleBonficação; p O método registra recebe qualquer referência do tipo Funcionario, isto é, podem ser objetos do tipo
Leia maisIntroduçã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 maisProgramaçã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 maisPOO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Herança Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo 11 de setembro
Leia maisProgramaçã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 maisInterfaces POO. Prof. Marcio Delamaro
Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso
Leia maisHerança e Polimorfismo
Herança e Polimorfismo 2013 O que veremos hoje? Herança e polimorfismo Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Polimorfismo em POO Mais
Leia maisProgramaçã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 maisProfessor Leonardo Cabral da Rocha Soares Lattes:
Professor Leonardo Cabral da Rocha Soares Lattes: http://lattes.cnpq.br/3184602538494393 A Herança, em programação orientada a objetos (POO), é a possibilidade de escrever novas classes partindo de classes
Leia maisProgramaçã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 maisUnidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces
Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces 0 Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces Classes Abstratas À medida que você sobe na hierarquia de herança,
Leia mais9 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 maisLinguagem 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 maisUniversidade 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 maisAULA 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 maisProgramaçã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 maisVejamos 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 maisProgramaçã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 maisJava 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 maisLaborató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 maisConceitos 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 maisEncapsulamento 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 mais1 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 maisHeranç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 maisProgramaçã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 maisNotas de Aula 07: vetores de objetos e coleções
Notas de Aula 07: vetores de objetos e coleções Objetivos da aula: Entender a sintaxe de vetores em Java Compreender o uso do vetor como um objeto Uso das coleções em Java Recordando... Na aula passada
Leia maisProgramação Orientada a Objetos II
Programação Orientada a Objetos II Prof. Walter Gima walter.gima@anhanguera.com 1 Interfaces Polimorfismo 2 Agenda Interfaces Interfaces x Classes Abstratas Polimorfismo Herança Múltipla 3 Interfaces São
Leia maisProgramaçã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 maisCOMPORTAMENTOS - 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 maisHerança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1
Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores
Leia maisProgramaçã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 maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato
Leia maisInterfaces e Classes Abstratas
Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos
Leia mais6 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 maisProgramaçã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 maisPOO29004 Programação Orientada a Objetos
POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo
Leia maisUNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos
UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos Objetivo da Unidade*: Conhecer e aplicar os conceitos mais importantes associados a orientação a objetos. 5.1 Métodos e atributos estáticos Atributos
Leia maisnome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){
UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------
Leia maisProgramaçã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 maisApêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:
Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.
Leia maisCONCEITOS 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 maisProgramaçã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 maisUnidade: sobrecarga, construtores e herança
Unidade: sobrecarga, construtores e herança 0 Unidade: sobrecarga, construtores e herança Sobrecarga Sobrecarregar (do inglês overload) um método é criar mais métodos com o mesmo nome, porém com assinaturas
Leia maisDefinição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.
Abstração JAVA Definição Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação. Em Java, a abstração é alcançada através de classes abstratas e interfaces. Classes
Leia maisLiçã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 maisASSOCIAÇÃO ENTRE CLASSES
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 5 ASSOCIAÇÃO ENTRE CLASSES O objetivo deste texto é rever, um pouco mais detidamente, o relacionamento
Leia maisHerança (parte 2) Redefinição de métodos AULA 11
Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Herança (parte 2) Redefinição de métodos AULA 11 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Na aula passada
Leia maisLinguagem de programação Programação Orientada a objetos
Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Paradigma da orientação a objetos Paradigma = forma de
Leia maisOrientação a Objetos Classes Abstratas
Orientação a Objetos Classes Abstratas Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisINF1636 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 maisDeclaração de Construtores em Java
Programando com Java Artigo http://mballem.wordpress.com/ Declaração de Construtores em Java Para que serve e como usar um Construtor em Java Autor Marcio Ballem: é formado em Sistemas de Informação e
Leia maisFundamentos 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 maisextendsé usado para indicar herança em JAVA
Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando extendsé usado para indicar herança em JAVA class ClasseA{ protected int a; public int geta()
Leia maisAtribuições: Valores, Ponteiros e Referências
Atribuições: Valores, Ponteiros e Referências Estruturas de Dados Prof. Vilson Heck Junior Sobre Variáveis Aprendemos, em introdução à programação, que possuem 3 partes mais importantes: Nome; Tipo de
Leia maisPROGRAMAÇÃO ORIENTADA A
PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO Prof. Angelo Augusto Frozza, MS M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 4. Técnicas de Orientação a Objetos Classes e objetos Herança Métodos Subscritos
Leia maisUniversidade Federal de Uberlândia
Universidade Federal de Uberlândia Faculdade de Computação Disciplina: POO1 Prof. Fabiano Dorça Classes e métodos abstratos É impossível instanciar objetos a partir de classes abstratas. Classes abstratas
Leia maisLÓGICA DE PROGRAMAÇÃO (JAVA) POLIMORFISMO. Professor Carlos Muniz
LÓGICA DE PROGRAMAÇÃO (JAVA) Definição Agora que aprendemos os conceitos mais importantes e vimos o uso da Herança em Java, vamos estudar outra características marcante da programação Java e, de uma maneira
Leia maisNotas de Aula 09: Tratamento de exceções
Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária
Leia maisAula 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 maisAula 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 maisEspecificam 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 maisComo 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 maisRafael B. Pereira (http://www.rbper.com)
Nesse caso a cláusula this() serve para chamar o construtor da própria classe. Agora vamos supor que fosse desejado chamar um construtor da classe pai. Como isso poderia ser feito? Bastaria usar a cláusula
Leia maisEngenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira
Engenharia de Software Aula 10 Representação dos Conceitos de Orientação a Objetos Prof. Me. Rogério Ferreira 2 Roteiro Representação dos Conceitos OO Mensagens Navegabilidade Pacotes Encapsulamento Herança
Leia maisProf. Vicente Paulo de Camargo UML - INTRODUÇÃO UML = Unified Modeling Language = linguagem de modelagem de sistemas Permite especificar, visualizar e documentar modelos de software orientados a objetos
Leia maisProgramaçã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 maisHerança e Polimorfismo - Parte II -
Herança e Polimorfismo - Parte II - Programação Orientada a Objetos Java Prof. Geraldo Braz Junior A hierarquia do exemplo DoME 2 Saída incompleta O que queremos CD: A Swingin' Affair (64 mins)* Frank
Leia maisHeranç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 maisLinguagem de Programação IV Introdução
Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação
Leia maisModificadores de Acesso JAVA
Modificadores de Acesso JAVA Definição Os modificadores de acesso são padrões de visibilidade de acessos às classes, atributos e métodos. Esses modificadores são palavras-chave reservadas do Java. E as
Leia maisFicha Prática 10. António Nestor Ribeiro, Paulo Azevedo, Mário Martins PPIV (LESI) 2005/06
Ficha Prática 10 António Nestor Ribeiro, Paulo Azevedo, Mário Martins {anr,pja,fmm@di.uminho.pt PPIV (LESI) 2005/06 Objectivos 1. Interfaces: declaração e utilização. 2. Interfaces como tipos de dados
Leia maisParadigmas 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