Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas



Documentos relacionados
Java 2 Standard Edition Como criar classes e objetos

Herança. Algoritmos e Programação II. Aula 5 Herança

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

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

Herança. Alberto Costa Neto DComp - UFS

Programação Orientada a Objetos em Java

Computação II Orientação a Objetos

Técnicas de Programação II

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Polimorfismo. Prof. Leonardo Barreto Campos 1

Programação Orientada a Objetos (DPADF 0063)

1. Herança. Sobrescrevem métodos - redefinem métodos herdados. Subclasse herda de uma superclasse

Reuso com Herança a e Composiçã

Programação por Objectos. Java

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Análise de Programação

Encapsulamento de Dados

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

UML: Diagrama de Casos de Uso, Diagrama de Classes

Orientação a Objetos e a Linguagem Java

Análise e Projeto Orientados por Objetos

UML Aspectos de projetos em Diagramas de classes

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

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Como usar a documentaçã

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Orientação a Objetos com Java

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

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

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

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

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

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

Capítulo 4. Packages e interfaces

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

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

Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Programação Orientada a Objetos (DPADF 0063)

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

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

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

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

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Tópicos em Engenharia de Computação

POO Programação Orientada a Objetos. Classes em Java

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Linguagem de Programação I. Orientação a Objetos em Java

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Programação por Objectos. Java

Implementando uma Classe e Criando Objetos a partir dela

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Classes, Superclasses e Subclasses

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

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

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

Capítulo 8. Introdução UML

Análise e Projeto de Sistemas

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com

Guia de Fatores de Qualidade de OO e Java

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

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

Profº. Enrique Pimentel Leite de Oliveira

DEFINIÇÃO DE MÉTODOS

Programação Orientada a Objetos

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language)

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

Algoritmos e Programação II. Sobrecarga

Programação Orientada por Objetos

Como usar o bluej. Laboratório I Prof.ª Vera Alves

UML Unified Modeling Language

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

Linguagem de Programação III

Programação Orientada a Objetos C++

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto

Keeper of Knowledge. Capítulo 2 Classes em Java

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Programação Orientada a Objeto

Factory Method. Edeyson Andrade Gomes

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

4.2. UML Diagramas de classes

ProgramaTchê programatche.net Programação OO com PHP

Linguagem de Programação III Herança

Programação Orientada a Objetos em java. Polimorfismo

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

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

Módulo 06 Desenho de Classes

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

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

Mapa Mental de Engenharia de Software - Diagramas UML

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

Desenvolvimento de Aplicações para Internet Aula 7

Projeção ortográfica de modelos com elementos paralelos e oblíquos

Transcrição:

Programação com Objectos Processamento de Dados I 4. Classes Abstractas 1

Conceito de classe abstracta Declaração de uma classe abstracta Implicações e características das classes abstractas Utilização de classes abstractas 100% abstractas Conclusão Exemplo Programação com Objectos / Processamento de Dados I 2

Conceito de classe abstracta Uma definição comum para classes é a de que uma classe representa uma entidade do mundo real. Contudo existem situações em que o que se quer representar não é concreto. Recorre-se então à chamada classe abstracta. Classe abstracta: Todas as classes nas quais pelo menos um método de instância não se encontra implementado, mas apenas declarado (método abstracto). Uma classe abstracta não pode criar instâncias. O mecanismo de herança mantém-se aplicável a classes abstractas. Programação com Objectos / Processamento de Dados I 3

Declaração de uma classe abstracta modificador abstract class nome_da_classe { //metodos de instancia abstractos modificador abstract tipo nome_método(); Em UML as classes e métodos abstractos são representados com o identificador/assinatura em itálico. Nome_da_classe modificador nome_método(argumentos): tipo_saída Programação com Objectos / Processamento de Dados I 4

Declaração de uma classe abstracta Consideremos o seguinte exemplo: Figura Circulo Rectângulo Triângulo A classe figura é uma classe abstracta que contém dois métodos abstractos que permitem calcular a área e o perímetro de uma figura geométrica. public abstract class Figura { //metodos de instancia abstractos A sua declaração seria: public abstract double area(); public abstract double perimetro(); Programação com Objectos / Processamento de Dados I 5

Declaração de uma classe abstracta A sua declaração seria: Em java: public abstract class Figura { //metodos de instancia abstractos public abstract double area(); public abstract double perimetro(); Em UML: Figura + area () : double + perimetro () : double Programação com Objectos / Processamento de Dados I 6

Implicação / características das classes abstractas Qualquer subclasse de uma classe abstracta herda automaticamente todos os métodos da classe abstracta, quer estejam implementados ou sejam abstractos. Qualquer subclasse de uma classe abstracta terá de implementar todos os métodos abstractos herdados da sua superclasse (sem excepção) para que possa ser uma classe de implementação concreta, isto é, para que possa ter instâncias. Caso contrário será também uma classe abstracta. Uma classe abstracta delega nas suas subclasses a responsabilidade pela implementação dos seus métodos abstractos, facilitando o aparecimento de diferentes implementações dos mesmos métodos nas suas subclasses. Programação com Objectos / Processamento de Dados I 7

Utilização de classes 100% abstractas o mecanismo de herança garante que todas as suas subclasses vão herdar o mesmo protocolo ou API, podendo no entanto definir as suas extensões. todas as subclasses da classe abstracta responderão ao mesmo protocolo, ou seja, falam a mesma linguagem normalização de vocabulário para as subclasses existentes e para as futuras subclasses o polimorfismo da linguagem JAVA garantirá a correcta execução desta linguagem comum. classe 100% abstracta pode ser vista como uma assinatura (especificação meramente sintáctica). Programação com Objectos / Processamento de Dados I 8

Conclusão Permitem escrever especificações sintácticas para as quais múltiplas implementações são possíveis de momento ou de futuro. Permitem normalizar a linguagem (API) a partir de certos pontos da hierarquia. Permitem introduzir flexibilidade e generalidade nas classes criadas. Permitem tirar todo o partido do polimorfismo (via substitutividade). Programação com Objectos / Processamento de Dados I 9

Conclusão Ocupam normalmente os níveis mais elevados das hierarquias. Devem declarar o maior número possível de métodos abstractos, pois passarão a constituir a linguagem comum (API) das suas subclasses. O número de métodos abstractos dependerá da análise de requisitos do problema. Colocar variáveis ou código concreto numa classe abstracta em geral não é aconselhável em JAVA pois todas as suas subclasses presentes e futuras irão herdar tais variáveis e métodos. Poderá no entanto haver situações em que colocar o máximo de funcionalidade numa classe abstracta seja vantajoso. Em geral, as classes abstractas em JAVA devem ser 100% abstractas. Programação com Objectos / Processamento de Dados I 10

Exemplo Vamos implementar o exemplo da figura geométrica: Figura Circulo Triangulo Rectangulo Quadrado Programação com Objectos / Processamento de Dados I 11

4. Classes Abstractas Exemplo Um objecto de uma classe abstracta nunca pode ser criado. É possível fornecer um construtor que pode ser chamado pela classe derivada, para iniciar os membros privados. A classe abstracta Figura poderia ser: public abstract class Figura { private String nome; public Figura (String nomefigura) { nome = nomefigura; public String getnome() { return nome; public abstract double area(); public abstract double perimetro(); Programação com Objectos / Processamento de Dados I 12

Exemplo A classe Circulo tem como atributos o PI e o raio. A classe Circulo poderia ser: public class Circulo extends Figura { private static final double PI = 3.14159265358979323; private double raio; public Circulo (double raio) { super( Circulo ); this.raio = raio; public double area() { return PI * Math.pow (raio, 2); public double perimetro() { return 2 * PI * raio; Programação com Objectos / Processamento de Dados I 13

Exemplo AclasseTriangulotemcomoatributosabaseeaaltura(apenas para triângulo rectângulos). A classe Triangulo poderia ser: public class Triangulo extends Figura { private double base, altura; public Triangulo (double base, double altura) { this.base = base; this.altura = altura; public double area() { return base * altura / 2; public double perimetro() { return base + altura + Math.sqrt(base*base + altura*altura); Programação com Objectos / Processamento de Dados I 14

Exemplo A classe Rectangulo tem como atributos o comprimento e a largura. A classe Rectangulo poderia ser: public class Rectangulo extends Figura { private double comp, larg; public Rectangulo (double comp, double larg) { this.comp = comp; this.larg = larg; public double area() { return comp * larg; public double perimetro() { return 2*(comp + larg); Programação com Objectos / Processamento de Dados I 15

Exemplo A classe Quadrado não necessita de atributos porque sendo um caso especial de um rectângulo pode herdar as suas carcaterísticas. A classe Quadrado poderia ser: public class Quadrado extends Rectangulo { public Quadrado (double lado) { super (lado,lado) Programação com Objectos / Processamento de Dados I 16