Classes Abstratas e Interfaces AULA 12
|
|
- Tomás Paranhos
- 5 Há anos
- Visualizações:
Transcrição
1 Introdução a Programação IF669 Classes Abstratas e Interfaces AULA 12 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br
2 Até aqui Quando usar herança? Ao redefinir um método manter o comportamento herdado!
3 Adivinhem... Surge um novo requisito na aplicação bancária Temos de cobrar um imposto em certos tipos de contas Lembram da CPMF?
4 Objeto Conta Imposto creditar saldo numero 875, debitar
5 Estados do Objeto Conta Imposto debitar(20) creditar Crédito creditar Crédito saldo numero getsaldo Número 875, , saldo numero getsaldo Número 854, , debitar Débito debitar Débito
6 Conta Imposto: Assinatura Sem herança public class ContaImposto { public ContaImposto (String numero) { public void creditar(double valor) { public void debitar(double valor) { public String getnumero() { public double getsaldo() {
7 Conta Imposto: Assinatura Com herança public class ContaImpostoM extends Conta { public ContaImpostoM(String numero) { public void debitar(double valor) {
8 Conta Imposto: Descrição Com herança public class ContaImpostoM extends Conta { private static final double CPMF = 0.001; public ContaImpostoM (String numero) { super (numero); public void debitar(double valor) { double imposto = (valor * CPMF); super.debitar(valor + imposto);
9 Subtipos e Subclasses ContaImposto Conta
10 Subclasses e Comportamento (1) Objetos da subclasse devem se comportar como os objetos da superclasse Afinal de contas queremos usar objetos da subclasse onde os objetos da superclasse são utilizados public class Banco { private Conta[] contas; private int indice; //...
11 Subclasses e Comportamento (2) Redefinições de métodos devem preservar o comportamento (semântica) do método original No que diz respeito ao comportamento (e atributos) herdado Grande impacto sobre manutenção/ evolução de software...
12 Revisão/Otimização de Código... double m(conta c) { c.creditar(10); c.debitar(10); return c.getsaldo(); double m(conta c) { return c.getsaldo();... Considerando apenas o retorno do método m, as duas opcões são sempre equivalentes? Em que contextos?
13 Subclasses e Evolução de Software Deveria ser possível raciocinar sobre o código usando-se apenas a definição dos tipos das variáveis envolvidas (Conta) O comportamento do código deveria ser independente do tipo do objeto (Conta, ContaEspecial, ContaImposto) associado a uma dada variável em tempo de execução
14 Reuso sem Subtipos Conta Poupanca ContaImpostoM ContaEspecial ContaImpostoM muda a semântica do método debitar e, se herdar de Conta, quebra a noção de subtipos!!!
15 Qual a alternativa então? O que existe de comum entre Conta e ContaImposto? Vamos criar uma nova classe que contenha essa parte em comum Conta e ContaImposto devem herdar dessa nova classe Atenção: debitar é diferente nas duas classes Mas ambas as contas devem permitir debitar um valor...
16 Reuso preservando Subtipos ContaAbstrata Conta ContaImposto Poupanca ContaEspecial
17 Definindo Classes Abstratas public abstract class ContaAbstrata { private String numero; private double saldo; public ContaAbstrata (String numero) { this.numero = numero; this.saldo = 0.0; public void creditar(double valor) { this.saldo = this.saldo + valor; public double getsaldo() { return this.saldo;
18 Definindo Classes Abstratas public String getnumero() { return this.numero; protected void setsaldo(double saldo) { this.saldo = saldo; public abstract void debitar(double valor); O método abstrato não tem implementação, mas 1. Permite programar (não executar), chamando o método da classe abstrata (na classe Banco, por exemplo) 2. Obriga que as subclasses concretas implementem o método
19 Revisão/Otimização de Código... double m(contaa c) { c.creditar(10); c.debitar(10); return c.getsaldo(); double m(contaa c) { return c.getsaldo();... E agora, a modificação é correta? Em que contextos?
20 Classes Abstratas Possibilita herança de código preservando comportamento (semântica) Não do método debitar, que ainda não possui comportamento Métodos abstratos: geralmente, existe pelo menos um são implementados nas subclasses Não se cria objetos: mas devem ter construtores para reuso se necessário, métodos protected para serem acessados nas subclasses
21 Contas: Descrição Modificada public class Conta extends ContaAbstrata { public Conta(String numero) { super (numero); public void debitar(double valor) { this.setsaldo(this.getsaldo() - valor); Implementação do método abstrato observe o uso do método protected
22 Poupanças: Descrição Original public class Poupanca extends Conta { public Poupanca(String numero) { super (numero); public void renderjuros(double taxa) { this.creditar(this.getsaldo() * taxa); Nada mudou para Poupanca
23 Conta Especial: Descrição Original public class ContaEspecial extends Conta { private static final double TAXA = 0.01; private double bonus; public ContaEspecial (String numero) { super(numero); this.bonus = 0.0; public void creditar(double valor) { this.bonus = this.bonus + (valor * TAXA); super.creditar(valor); Nada mudou para ContaEspecial
24 Conta Imposto: Descrição public class ContaImposto extends ContaAbstrata { private static final double CPMF = 0.001; public ContaImposto (String numero) { super(numero); public void debitar(double valor) { double imposto = valor * CPMF; double total = valor + imposto; super.setsaldo(this.getsaldo() total); Implementação do método abstrato observe o uso do método protected
25 Substituição e Ligações Dinâmicas ContaAbstrata ca1, ca2; ca1 = new ContaEspecial( ); ca2 = new ContaImposto( ); ca1.debitar(500); ca2.debitar(500); System.out.println(ca1.getSaldo()); System.out.println(ca2.getSaldo()); Exemplo de um trecho do método main, usado para teste
26 Classes Abstratas: Utilização Herdar código sem quebrar noção de subtipos, preservando o comportamento do supertipo Generalizar código, através da abstração de detalhes não relevantes Projetar sistemas, definindo as suas arquiteturas e servindo de base para a implementação progressiva dos mesmos
27 Contas: Projeto OO public abstract class ContaProjeto { private String numero; private double saldo; //... public abstract void creditar(double valor); public abstract void debitar(double valor); public String getnumero() { return numero; protected setsaldo(double saldo) { this.saldo = saldo; //...
28 Outro exemplo Pessoa: Reuso e Subtipos Pessoa PessoaJuridica PessoaFisica
29 Pessoa: Projeto OO public abstract class Pessoa { private String nome;... public abstract String getcodigo();
30 Pessoa Física: Projeto OO public class PessoaFisica extends Pessoa { private String cpf;... public String getcodigo() { return cpf;
31 Pessoa Jurídica: Projeto OO public class PessoaJuridica extends Pessoa { private String cnpj;... public String getcodigo() { return cnpj;
32 public class RepositorioPessoasArray { private Pessoa[] pessoas;... public Pessoa procurar(string codigo) { Pessoa p = null; boolean achou = false; for (int i=0; i<indice &&!achou; i++) { p = pessoas[i]; if (p.getcodigo().equals(codigo)) achou = true; else p = null; return p;
33 Exercício Utilize a solução do último exercício Defina no pacote aula13.br.ufpe.cin.banco, a classe abstrata ContaAbstrata que tem os mesmos atributos e métodos de Conta, só que o método debitar é abstrato, como visto em sala Altere a classe Conta para herdar da classe ContaAbstrata e implementar o método debitar Modifique a classe Banco para que seja possível trabalhar com todos os tipos de conta da aplicação bancária. Execute a classe Programa e observe que o teste funciona como antes Defina a classe aula13.br.ufpe.cin.banco.contaimposto que herda de ContaAbstrata e tem uma constante CPMF que armazena o imposto a ser cobrado quando um valor for debitado na ContaImposto É necessário alterar as classes Poupanca e ContaEspecial? Altere a classe Programa para testar todas as classes do projeto
34 Interfaces
35 Encapsulamento e Information Hiding A habilidade em esconder de forma segura dados e métodos de uma classe dentro da cápsula da classe, impedindo acesso de usuários não confiáveis é conhecida como information hiding mas...por que estamos interessados em fazer isso?
36 Por que ecapsulamento com information hiding é útil? Esconder detalhes de implementação evita que outros programadores façam uso dessas informações com algum propósito torna possível modificar a implementação com a segurança de que não afetará o código que utiliza a classe
37 Por que ecapsulamento com information hiding é útil? Protege a classe de interferências externas indesejáveis (sejam elas acidentais ou propositais) A classe contém conjunto de campos interdependentes, que devem ser mantidos em um estado consistente Se for permitido a algum usuário externo (ou você mesmo) modificar um campo sem modificar campos relacionados a ele, a classe ficará em um estado inconsistente Se, por outro lado, o acesso é feito via um método, há mais chances de que o estado será mudado de maneira consistente
38 Por que ecapsulamento com information hiding é útil? Se todos os dados da classe estão escondidos e podem ser acessados apenas via métodos da classe e esses métodos foram bem testados, haverá maior garantia de que os dados serão modificados consistentemente Se, por outro lado, for permitido acesso externo, o número de possibilidades a serem testadas torna-se não gerenciável.
39 Por que ecapsulamento com information hiding é útil? Se atributos públicos que são acessados diretamente por outras classes forem modificados, as classes que os acessam diretamente serão afetadas Acessando os mesmos com métodos pode evitar esse impacto Se um determinado método for definido apenas para uso interno da classe, esconder esse método evita que usuários da classe tentem usá-lo
40 Por que ecapsulamento com information hiding é útil? Menos nobre, mas... se um campo ou método de uma classe for visível, você terá que documentá-lo economize seu tempo e esforço! esconda os campos e métodos ao máximo!
41 Interfaces Através do encapsulamento, os atributos e a implementação dos métodos de uma certa classe não são visíveis ao usuário da classe Conhecendo-se apenas a interface de uma classe, podemos utilizar seus objetos sem conhecer detalhes de implementação Uma interface inclui os métodos disponíveis e suas respectivas assinaturas Além disto, existem casos onde existe a necessidade de se ter uma classe mas não queremos implementá-la pode-se terceirizar a implementação, fornecendo como especificação a interface desejada.
42 Interfaces - Exemplo Implementar um zoológico virtual com vários tipos de animais Você gostaria de enviar as seguintes mensagens a cada animal: nasca() passeie() durma() peso() Vamos pedir ajuda a programadores especialistas em cada tipo de animal
43 Interfaces - Exemplo
44 Interfaces - Exemplo O programador que for implementar o morcego terá que dizer explicitamente que vai usar a interface Animal palavra chave implements A palavra chave implements obriga o programador a escrever o código de todos os métodos na assinatura Todos os métodos da interface devem ser públicos
45 Interfaces - Exemplo
46 Interfaces - Exemplo
47 Interfaces - Observação Em cada arquivo deve existir no máximo uma classe pública! Logo, as classes Ornitorrinco, Morcego e Zebra devem estar em arquivos separados, com os respectivos nomes Ornitorrinco.java Zebra.java Morcego.java
48 Interfaces Cada um dos animais, além de ser um objeto da própria classe, também é um objeto do tipo Animal z1.contalistras() - Válido z2.contalistras() - Inválido
49 Implementando mais de uma interface por vez Considere as duas interface: Vamos implementar essas três classes
50 Implementando mais de uma interface por vez
51 Implementando mais de uma interface por vez Finalmente, podemos ver o Aviao que implementa as duas interfaces:
52 Mas e na aplicação bancária? Onde usar interfaces? Hoje a classe Banco tem um array de Conta E se amanhã quisermos utilizar outra estrutura de dados? E se quisermos depois de amanhã utilizar um banco de dados? Vamos desacoplar as regras de negócio do Banco de onde as contas são armazenadas
53 Criar uma interface de armazenamento de dados public interface RepositorioContas { void inserir(contaabstrata conta); ContaAbstrata procurar(string numero); void remover(string numero); void atualizar(contaabstrata conta); boolean existe(string numero); Todos os métodos são public e abstract por default e não se definem atributos nem construtores
54 Repositório: Implementações public class RepositorioContasArray implements RepositorioContas {... public class RepositorioContasLista implements RepositorioContas {... public class RepositorioContasVector implements RepositorioContas {... public class RepositorioContasBDR implements RepositorioContas {...
55 Banco: Parametrização public class Banco { private RepositorioContas contas; public Banco(RepositorioContas rep){ this.contas = rep; public void cadastrar(contaabstrata conta){ String numero = conta.getnumero(); if (!contas.existe(numero)) { contas.inserir(conta); else { throw new RuntimeException( Já cad... ); //... A estrutura para armazenamento das contas é fornecida na inicialização do banco, e pode ser trocada!
56 O que usar? Quando? Classes (abstratas) Agrupa objetos com implementações compartilhadas Define novas classes através de herança (simples) de código Uma classe pode ter apenas uma como superclasse Interfaces Agrupa objetos com implementações diferentes Define novas interfaces através de herança (múltipla) de assinaturas Uma classe pode ter várias como supertipo
57 Exercício Utilize a solução dos exercícios da última aula Defina no pacote aula14.br.ufpe.cin.dados a interface RepositorioContas com os métodos inserir recebe uma ContaAbstrata e insere no repositório procurar recebe um número e retorna a conta se estiver no repositório remover recebe um número para remover a conta do repositório atualizar - recebe uma ContaAbstrata para atualizar no repositório existe recebe um número e informa se existe uma conta com este número no repositório Modifique a classe Banco para utilizar a interface definida (receba a implementação da interface no construtor) Perceba que a classe Banco compila apenas com a interface. Já a classe Programa precisa de uma implementação para executar. Defina no pacote aula14.br.ufpe.cin.dados classe RepositorioContasArray que implementa a interface RepositorioContas Altere a classe Programa para fazer os testes
Programação Orientada a Objetos Classes Abstratas. Sérgio Soares
Programação Orientada a Objetos Classes Abstratas Sérgio Soares scbs@cin.ufpe.br Até aqui Quando usar herança? Ao redefinir um método manter o comportamento herdado! 2 Adivinhem... Surge um novo requisito
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 maisExceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares
Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Exceções AULA 13 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Exceções Objetivo Depois desta aula você será capaz
Leia maisIntrodução à Programação. Encapsulamento e Herança
Introdução à Programação Encapsulamento e Herança Tópicos da Aula Hoje, aprenderemos conceitos mais avançados de Orientação a Objetos Encapsulamento Usando modificadores de acesso em C++ Herança Importância
Leia maisProgramação Orientada a Objetos C ++ 4 Herança e Polimorfismo
Programação Orientada a Objetos C ++ 4 Herança e Polimorfismo Departamento de Informática Prof. Anselmo C. de Paiva Herança Como vimos anteriormente, classes podem ser compostas em hierarquias, através
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 maisIntrodução à Programação. Interface, Polimorfismo e Dynamic Binding
Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)
Leia maisConceitos Básicos de Orientação a Objetos e Strings AULA 08
Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Conceitos Básicos de Orientação a Objetos e Strings AULA 08 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Até
Leia maisOrganização do sistema em camadas. Projeto
Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Organização do sistema em camadas Projeto Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Separação de Preocupações
Leia maisHerança e passagem de parâmetro AULA 09
Itrodução a Programação IF669 http://www.ci.ufpe.br/~if669 Heraça e passagem de parâmetro AULA 09 Ricardo Massa F. Lima rmfl@ci.ufpe.br Sérgio C. B. Soares scbs@ci.ufpe.br Itrodução Imagie que temos uma
Leia maisIntrodução à Programação. Conceitos Básicos de Orientação a Objetos
Introdução à Programação Conceitos Básicos de Orientação a Objetos Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma Conceito de paradigma Diferentes
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 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 maisIntrodução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.
Introdução Atributos, métodos e encapsulamento joao@ecomp.uefs.br Atributos Ipos de acesso: private, public, protected e default Encapsulamento Métodos Construtores Criando objetos Departamento de Ciências
Leia maisIntrodução à Orientação a Objetos em Java
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB Centro de Informática, UFPE Programação estruturada
Leia maisEspecialização em Engenharia de Software
Especialização em Engenharia de Software Programação Orientada a Objetos Conceitos gerais e array Sérgio Soares scbs@cin.ufpe.br Programação Orientada a Objetos Foco nos dados (objetos) do sistema, não
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 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 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 maisModificadores de Acesso e Atributos de Classe
Modificadores de Acesso e Atributos de Classe 1 Controlando o acesso p Um dos problemas mais simples que temos no nosso sistema de contas é que o método saca permite sacar mesmo que o limite tenha sido
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 maisAula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU
Aula 5 POO 1 Encapsulamento Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
Leia maisRecursão. Em Java... Exemplo: Série de Fibonacci. Iteração e recursão. Exercícios. Especialização em Engenharia de Software - CEUT
Especialização em Engenharia de Software Recursão Programação Orientada a Objetos Listas e Arquitetura em Camadas Sérgio Soares scbs@cin.ufpe.br Capacidade de um procedimento, método ou função ser definido
Leia maisVisibilidade e Encapsulamento
Visibilidade e Encapsulamento Professor: Ricardo Luis dos Santos IFSUL 2016 Agenda Pacotes Visibilidade Encapsulamento Hands-On 2 Pacotes Em Java, a visibilidade ou grau de acesso a um determinado atributo
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 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 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 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 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 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 maisJAVA. Professor: Bruno Toledo
JAVA Professor: Bruno Toledo Aplicando Orientação a Objetos com Java Abstração em Programação JAVA é Orientado a Objetos Até é possível usar Java sem OO, mas... Perderá todas as vantagens que o paradigma
Leia maisLinguagem de Programação Orientada a Objeto Abstração - Encapsulamento
Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e
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 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 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 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 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 maisLista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição
Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:
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 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 maisDesenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de POO Professor: Charles Leite Motivação Na Programação OO, um OBJETO é considerado a entidade central de um programa Assim, o desenvolvimento de
Leia maisLinguagens 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 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 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 maisProgramação Orientada a Objetos
Herança Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Herança 1 Reutilização / Reuso São palavras-chave no conceito de herança; Reutilizar um código que já tenha sido escrito, e que já esteja
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 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 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 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 maisDados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.
2. Classes e Objetos Uma classe é um modelo que define os atributos e métodos comuns a um conjunto de objetos de forma encapsulada. Atributos são informações ou dados que descrevem, categorizam ou quantificam
Leia maisOrientação a Objetos Básica
Orientação a Objetos Básica 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/ 1 Objetivos
Leia maisEstrutura de Dados Funções e Procedimentos
Estrutura de Dados Funções e Procedimentos Prof. Salustiano Rodrigues de Oliveira saluorodrigues@gmail.com www.profsalu.wordpress.com Java A linguagem Java utiliza o paradigma de programação orientada
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 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 maisIntrodução ao Java. Prof. Herbert Rausch Fernandes
Introdução ao Java Prof. Herbert Rausch Fernandes Orientação a Objetos Programação Orientada por Objetos: é a construção de sistemas de software como uma coleção estruturada de implementações de tipos
Leia maisInterfaces. Professoras: Ariane Machado Lima Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO 1
Interfaces Professoras: Ariane Machado Lima Fátima L. S. Nunes 1 1 1 Interface O que significa? 2 2 2 Interface Definição: s.f. Limite comum a dois corpos, sistemas, fases ou espaços, que permite sua ação
Leia maisPalavras 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 maisC com introdução a OO
... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro
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 maisJava Deployment Course
Java Deployment Course Atividade Prática Programação Visual com JBuilder Jorge H. C. Fernandes Recife, 12 de Maio de 1999 Tópicos Modelo da Aplicação Interface da Aplicação Conexão entre Modelo e Interface
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 maisProgramação Java. - Classes, Objetos, Atributos e Métodos - Marco Fagundes Marco Fagundes -
Programação Java - Classes, Objetos, Atributos e Métodos - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Programação Orientada a Objetos Classes e Objetos Definindo e Instanciando Classes Atributos
Leia maisJAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS
JAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS LABORATÓRIO 2 PROF. EMILIO PARMEGIANI Neste laboratório trabalharemos com conceitos de orientação a objetos, através da criação de classes, propriedades,
Leia maisBoas práticas com Orientação a Objetos. Paulo Silveira
Boas práticas com Orientação a Objetos Paulo Silveira paulo.silveira@caelum.com.br Rapidissímo overview IFs e switches X herança Vantagens e desvantagens do uso de Herança Casos errados do uso 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 maisConstrutores e Especificadores de Acesso
Construtores e Especificadores de Acesso Professora: Fátima L. S. Nunes 1 1 1 Orientação a Objetos Conceitos do Paradigma de Orientação a Objetos já vistos: Classes atributos e métodos Objetos instanciação
Leia maisParadigmas 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 maisProgramação Java Aula 05
Programação Java Aula 05 Tópicos da aula Controlar o acesso aos seus métodos, atributos e construtores através dos modificadores private e public; Escrever métodos de acesso a atributos do tipo sets e
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 maisAvançando em Java com
Avançando em Java com Polimorfismo (Interfaces) Prof.: Hugo Barros Interfaces Como já foi dito, java não permite que uma classe herde recurso de mais de uma classe. Herança múltiplipa é um recurso muito
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 mais7. Herança. Copyright 2003, Cecília Rubira. Todos os direitos reservados.
7. Herança Neste capítulo é explicado o que é herança em orientação a objetos e descrito o mecanismo de herança de classes de Java. São apresentados também os conceitos de generalização/especialização,
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 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 maisAula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU
Aula 3 POO 1 Classe e Objeto Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
Leia maisOrientação a Objetos - Herança
Orientação a Objetos - Herança 1 Repetindo Código p Todo banco tem funcionário. A classe funcionario ficaria da seguinte forma; class Funcionario { String nome; String cpf; double salario; // métodos devem
Leia maisSingleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)
e Adapter Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Factory Method Abstract Factory 2 O que veremos hoje? (padrão de criaçã) Adapter
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 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 maisLinguagem 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 maisProgramação Orientada a Objetos em Java
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Classes e Objetos, Construtores e Desconstrutores, Atributos e
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 maisUniversidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)
Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1.ado o seguinte código: class valiacao { Qual fragmento de código irá compilar? a) class Prova extends valiacao { b)
Leia maisImplementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias
Leia maisEncapsulamento. Alberto Costa Neto DComp - UFS
Encapsulamento Alberto Costa Neto DComp - UFS 1 Motivação O que aprendemos até agora? O que diferencia a POO da Programação Imperativa? Estas informações são suficientes para construir um projeto OO eficiente?
Leia maisInstituto de Informática Estrutura de Dados II
Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O
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 maisProgramação Orientada a Objetos
Programação Orientada a Objetos luno: ata: Professor: Leonardo abral da Rocha Soares 1. Torna o atributo visível a todas as classes do pacote onde foi declarado: a) public b) private c) protected d) package
Leia maisJava 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 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 maisUNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA
LPOO - Linguagem de Programação Orientada a Objetos Prof. Msc. Célio R. Castelano Página 1 de 7 Curso Ciência da Computação Professor Célio Ricardo Castelano UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO
Leia maisRelacionamentos entre objetos
Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores t e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos
Leia maisLinguagem 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 maisO que estas classes possuem em comum? 1) 2) 3)
Material de Apoio 5 pg. 1/5 Sumário Este material apresenta conceitos gerais de herança. Em aula também serão abordados outros conceitos: classe abstrata, polimorfismo e ligação dinâmica. Motivação M1:
Leia mais