Interfaces e Classes Abstratas



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

Classe Abstrata e Interface

Classes e Objetos. Sintaxe de classe em Java

Sobrecarga, Sobreposição e Polimorfismo

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

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

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Introdução ao Java. Prof. Herbert Rausch Fernandes

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

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

Construtores. Introdução

Linguagem de Programação III

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

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Conceitos de Programação Orientada a Objetos

9 Classes Abstractas e Interfaces

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

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

POO29004 Programação Orientada a Objetos

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

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

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

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

Programação Orientada a Objetos

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

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

Programação Orientada a Objetos

Linguagem de programação Programação Orientada a objetos

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

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

COMPORTAMENTOS - Observações

Nome do Aluno: Matrícula: Turma: Data: 08/04/2013

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Computação II Orientação a Objetos

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Visibilidade e Encapsulamento

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

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

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

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

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

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

O PARADIGMA ORIENTADO POR OBJETOS

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

POO29004 Programação Orientada a Objetos

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Linguagem de Programação. Diagrama de classes

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

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

LP II / 1ª Lista de Exercícios

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

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU

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

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

Programação Orientada a Objetos

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

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação Orientada a Objetos

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

Laboratório de programação II

Linguagem de Programação IV Introdução

Introdução à Programação. Encapsulamento e Herança

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

Computação II Orientação a Objetos

Programação Orientada a Objetos II Java Décima primeira aula

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

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

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

1 Introdução e Conceitos básicos

Programação Orientada a Objetos

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Java Standard Edition (JSE)

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

Linguagem de Programação I Apresentação da Disciplina

Transcrição:

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 Não necessariamente todos Método abstrato declarado com comando abstract Classes abstratas podem prover o comportamento de alguns métodos e especificar apenas a interface de outros Classes Abstratas Classes abstratas NÃO GERAM OBJETOS Seu propósito não é o de criar instâncias, mas: Servir como uma superclasse modelo para diversas subclasses Facilitar o tratamento de classes pertencentes a uma hierarquia, com o polimorfismo

Exemplo Exemplo

Exemplo Podemos criar subclasses da classe abstrata Forma Ao fazê-lo devemos implementar OBRIGATORIAMENTE o método abstrato calculaarea respeitando a respectiva definição dada na superclasse Forma Ou então tornar essa subclasse abstrata Isso obriga que todas as subclasses de Forma falem o mesmo "tipo de linguagem Com isso, obtemos um modelo de criação de classes de um determinado sistema, o que é bastante útil Exemplo

Exemplo Interfaces Classes sem implementação dos métodos, somente suas especificações Assinaturas dos métodos Uma interface não mostra o código-fonte que implementa a classe Interfaces não definem uma classe, mas um conjunto de requisitos para classes

Interfaces Objetivo: mostrar todos os serviços que uma classe, ou conjunto de classes, pode/deve implementar Isso é suficiente para que possamos utilizar a classe Abstração em funcionamento Usada para determinar o que uma determinada classe ou conjunto de classes implementa quais ações essas classes deverão possuir Parte publicamente visível de uma classe Interfaces não podem ser instanciadas (não se cria objetos das interfaces)! Interface contrato Interfaces Classes definem implementações (o corpo) para métodos cujas assinaturas foram especificadas nessas interfaces Se uma classe implementa uma determinada interface, ela é OBRIGADA a construir um corpo para todos os métodos especificados por essa interface

Exemplo - Interfaces Características Interfaces A palavra-chave interface é utilizada ao invés de class Interfaces não contém construtores Assinaturas dos métodos possuem visibilidade sempre pública e abstrata, e isso não precisa ser declarado explicitamente

Interfaces Características Classes podem implementar uma ou mais interfaces ao mesmo tempo Uma interface pode estender o comportamento de outra interface Atributos de interfaces são sempre públicos, estáticos e finais Estáticos: todas as instâncias de classes que implementam a interface enxergam a mesma posição de memória que reprsenta o atributo Finais: seus valores (ou referências, para objetos) não podem ser modificados Interfaces Objetivos As interfaces padronizam as operações das classes, mas definem apenas O QUE fazer, não COMO fazer Isso deixa a classe livre para implementar a funcionalidade do jeito que ela quiser, mas obriga ela a implementá-la Isso acontece na vida real Carros Aparelhos eletrônicos

Interfaces Exemplo public interface Telefone { public void numerodiscado(int numero); public boolean chamadaemprogresso(); }

Exemplo public class TelefoneConvencional implements Telefone { } private boolean emprogressso; public void numerodiscado (int numero) { //realize a discagem via rede com fio } public Boolean chamadaemprogresso () { return this.emprogresso; } Exemplo public class TelefoneCelular implements Telefone { } private boolean emprogressso; public void numerodiscado (int numero) { //realize a discagem via rede sem fio } public Boolean chamadaemprogresso () { return this.emprogresso; }

Exemplo É possivel a implementação de várias interfaces simultaneamente public class VideoFone implements Telefone, VideoPlayer { } Exemplo

Exemplo - Interfaces Exemplo - Interfaces

Exemplo - Interfaces <<interface>> Pagavel +double calcularvalorpagamento() Fatura Funcionario FuncionarioComissionado Interfaces - Benefícios Interfaces definem um tipo, como uma classe Variáveis podem ser declaradsa como tipos de interfaces, mesmo que nenhum objeto desse tipo exista Interfaces servem como supertipos para instâncias de outras classes

Interfaces - Benefícios IFuncionario t[] = new IFuncionario[3]; t[0] = new Atendente(); t[1] = new Faxineiro(); t[2] = new Vendedor(); IMPORTANTE Não confundir interface com classe abstrata Classes abstratas podem implementar alguns métodos, ou seja, alguns métodos podem possuir seu funcionamento especificado Classes abstratas são criadas para serem HERDADAS, enquanto que interfaces são criadas para serem IMPLEMENTADAS Por consequência Classes só podem herdar de apenas UMA superclasse abstrata Reaproveitamento de métodos Entretanto, elas podem implementar VÁRIAS interfaces Sistemas mais flexíveis e expansíveis

Exercício 1 Crie uma hierarquia de classes para representar os diferentes tipos de funcionários de um escritório: gerente, assistente, vendedor Escreva uma classe base abstrata chamada Funcionario que declara um método abstrato: Assinatura double calculasalario(). Esta classe também deve definir os seguintes atributos: nome (tipo String), matricula (tipo String) e salario_base (tipo double) Use encapsulamento e forneça um construtor que recebe os valores correspondentes dos respectivos atributos Estenda essa classe nas outras classes: Gerente, Assistente e Vendedor Os salários são calculados da seguinte maneira: o gerente recebe duas vezes o salário_base, o assistente recebe o salário_base e o vendedor recebe o salário_base mais uma comissão definida no construtor de sua classe Crie uma classe Teste com um método main que cria um vetor de 5 objetos, e depois calcula a folha salarial dos três funcionários e imprime o valor total Exercício 2 Escreva uma classe abstrata chamada CartaoWeb, que representa todos os tipos de cartões web, e contém apenas um atributo: destinatario (tipo String) Nessa classe você deverá também declarar o método public abstract void showmessage() Crie classes filhas da classe CartaoWeb: DiaDosNamorados, Natal, Aniversario. Cada uma dessas classes deve conter um método construtor que receba o nome do destinatário do cartão. Cada classe também deve implementar o método showmessage(), mostrando uma mensagem ao usuário com seu nome e que seja específica para a data de comemorativa do cartão Escreva um programa e no método main crie um array de CartaoWeb. Insira instâncias dos 3 tipos de cartões nesse array Use então um laço for para exibir as mensagens deste cartão chamando o método showmessage()

Exercício 3 Crie uma interface para representar o layout de um aparelho de reprodução de discos DVD e BluRay Defina quais funcionalidades devem estar presentes nessa interface Crie duas classes, que representem um player automotivo e um player convencional, que implemente essa interface Referências DEITEL, H. M., DEITEL, P. J., Java: Como Programar, Bookman, São Paulo, 2002 BARNES, D. J., KOLLING, M., Programação Orientada a Objetos com Java, 2004, ISBN: 8576050129