Classes Abstratas e Interfaces



Documentos relacionados
Técnicas de Programação II

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Módulo 07 Características Avançadas de Classes

Programação Orientada a Objetos em Java

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

Prototype, um Design Patterns de Criação

Herança. Alberto Costa Neto DComp - UFS

Capítulo 4. Packages e interfaces

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Keeper of Knowledge. Capítulo 2 Classes em Java

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

insfcanceof new public switch transient while byte continue extends for int null

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Análise e Projeto Orientados por Objetos

Programação de Computadores - I. Profª Beatriz Profº Israel

Implementando uma Classe e Criando Objetos a partir dela

Programação Orientada a Objetos. Encapsulamento

Programação Visual TIC - 3PA. Lista de Exercícios 02

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Implementação de Classe e Auto-Relacionamento em Java

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Java TM e o Modelo de Objetos

Programação Orientada a Objetos em java. Polimorfismo

Noções sobre Objetos e Classes

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

2 Orientação a objetos na prática

JSP - ORIENTADO A OBJETOS

Encapsulamento de Dados

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

Computação II Orientação a Objetos

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Programação por Objectos. Java

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Programação Orientada a Objetos (DPADF 0063)

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Orientação a Objetos e a Linguagem Java

Factory Method. Edeyson Andrade Gomes

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

SISTEMAS DISTRIBUÍDOS

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

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

Universidade da Beira Interior. Sistemas Distribuídos

Java 2 Standard Edition Como criar classes e objetos

Unidade IV: Ponteiros, Referências e Arrays

Equivale a um conjunto de if 's encadeados, porém mais estruturado.

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Objectivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Análise de Programação

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Reuso com Herança a e Composiçã

Programação Orientada por Objetos

Padrão Arquitetura em Camadas

Padrão Básico de Projeto: Interfaces e Polimorfismo

THREADS EM JAVA. George Gomes Cabral

Capítulo 3. Programação por objectos em Java

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

PROGRAMAÇÃO ORIENTADA A OBJETOS

Projeto de Software Orientado a Objeto

A Linguagem Java. Alberto Costa Neto DComp - UFS

Programação por Objectos. Java

Projeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

3 Classes e instanciação de objectos (em Java)

Design Patterns (Factory Method, Prototype, Singleton)

NetBeans. Conhecendo um pouco da IDE

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Aula 30 - Sockets em Java

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

Programação Avançada

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Java. Marcio de Carvalho Victorino

Threads e Concorrência em Java (Material de Apoio)

Exercícios de Revisão Java Básico

Classes, Superclasses e Subclasses

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Interfaces. Interfaces: Exemplo. ! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações

Sistemas Distribuídos

Programação com Acesso a BD. Programação com OO Acesso em Java

UNIVERSIDADE FEDERAL DO PARANÁ

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Alocação Dinâmica e Transparente de Computadores Ociosos em Java

Classes Abstratas e Interfaces

Programação Orientada a Objetos em Java. Threads Threads Threads. Threads

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Transcrição:

Java Básico Classes Abstratas e Interfaces Marco Antonio, Arquiteto de Software TJDF ma@marcoreis.eti.br Novembro/2005

Classe abstrata Recurso avançado da OO Não pode ser instanciada Deve ser instanciada através de uma subclasse concreta Permite modelar com mais precisão as regras de negócio Refinamento do projeto O programador fica obrigado a utilizar as regras definidas pelo projetista Pode ter a implementação para os métodos

Interface Funciona como um contrato Não pode ser instanciada Pode ser instanciada através de uma classe que a implemente Obriga o programador a usar os métodos já definidos Não tem implementação, apenas a assinatura dos métodos Muito útil para diminuir o acoplamento entre os vários módulos do sistema

Classe abstrata x Interface Não existe uma regra geral que defina quando usar classes abstratas ou interfaces O nível de refinamento deve ser definido antes da implementação, o que diminui o risco de entrar num ciclo de refinamentos sem fim

Dica Quando haja a possibilidade de reutilização de código, prefira classe abstrata Se o código reaproveitado é muito pequeno, talvez seja mais interessante uma interface

Exemplo de classe abstrata Vamos utilizar a classe Musico para ilustrar o conceito de classe abstrata Baterista, Guitarrista e Baixista são nossas outras classes do modelo Analise o relacionamento entre elas

Musico package com.javabasico.classesabstratas; public abstract class Musico { public abstract String getnomedoinstrumento(); public void afinarinstrumento() { System.out.println("Estou afinando o/a " + getnomedoinstrumento());

Baixista package com.javabasico.classesabstratas; public class Baixista extends Musico { public String getnomedoinstrumento() { return "Baixo";

Guitarrista package com.javabasico.classesabstratas; public class Guitarrista extends Musico { public String getnomedoinstrumento() { return "Guitarra";

Baterista package com.javabasico.classesabstratas; public class Baterista extends Musico { public String getnomedoinstrumento() { return "Bateria";

TesteDoMusico package com.javabasico.classesabstratas; public class TesteDoMusico { public static void main(string[] args) { Musico baixista = new Baixista(); baixista.afinarinstrumento(); Musico batera = new Baterista(); batera.afinarinstrumento(); Musico guitarrista = new Guitarrista(); guitarrista.afinarinstrumento();

Exemplo de interface Vamos utilizar a interface Veiculo no nosso exemplo Além desta, também teremos Carro, Moto e Caminhao

Veiculo package com.javabasico.interfaces; public interface Veiculo { public int quantidadedepneus(); public boolean isveiculodepasseio(); public int quantidadedecavalos();

Carro package com.javabasico.interfaces; public class Carro implements Veiculo { public int quantidadedepneus() { return 4; public boolean isveiculodepasseio() { return true; public int quantidadedecavalos() { return 80;

Moto package com.javabasico.interfaces; public class Moto implements Veiculo{ public int quantidadedepneus() { return 2; public boolean isveiculodepasseio() { return true; public int quantidadedecavalos() { return 30;

Caminhao package com.javabasico.interfaces; public class Caminhao implements Veiculo { public int quantidadedepneus() { return 6; public boolean isveiculodepasseio() { return false; public int quantidadedecavalos() { return 130;

TesteDoVeiculo package com.javabasico.interfaces; public class TesteDoVeiculo { public static void main(string[] args) { Veiculo minhamoto = new Veiculo();

Qual o problema? Qual o problema da classe de teste? Simples: uma interface não pode ser instanciada new Veiculo(); Não existe, no modelo anterior, um objeto do tipo Veiculo (o veículo é apenas conceitual) Existem apenas Carros, Motos e Caminhoes Toda interface deve ter uma classe que a implemente, caso contrário, não faz sentido esse tipo de refinamento

TesteDoVeiculo package com.javabasico.interfaces; public class TesteDoVeiculo { public static void main(string[] args) { Veiculo minhamoto = new Moto(); System.out.println("Quantidade de cavalos da moto:" + minhamoto.quantidadedecavalos()); Veiculo meucarro = new Carro(); System.out.println("Quantidade de pneus do carro: " + meucarro.quantidadedepneus()); Veiculo meucaminhao = new Caminhao(); System.out.println("O caminhão é veículo de passeio? " + meucaminhao.isveiculodepasseio());

Dúvidas?