Programação Orientada a Objetos

Slides:



Advertisements
Apresentações semelhantes
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Advertisements

Prof.: Bruno Rafael de Oliveira Rodrigues.  Existe para poder servir de molde para outras classes.  Deve ser declarada tal usando-se a palavra chave.
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
Tratamento de exceções em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
REPRESENTAÇÕES DE LINGUAGENS Adorilson Bezerra Santa Cruz - RN UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE CAMPUS AVANÇADO DO NATAL DEPARTAMENTO DE CIÊNCIA.
LINGUAGEM DE PROGRAMAÇÃO. Breve histórico Ada Lovelace Luigi Menabrea Charles Babbage TradutorMemóriasMáquina analítica.
Classe Abstrata É uma classe que não pode ser instanciada; Freqüentemente aparece no topo de uma hierarquia de classes de programação orientada a objetos;
(a + b)(a + b) = a² + ab + ba + b² = a² + 2ab + b²
Geometria 3° encontro.
Algoritmo e Lógica Programação Vetores e Matrizes
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
Polimorfismo e suas aplicações em C++.
Programação em C Aula 8.
Metodologia do Ensino da Matemática – Aula 12
Programação Orientada a Objetos
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Encontro 3 Geometria – áreas e perímetros Professor: José Reis
Módulo I Capítulo 3: Fluxo de Código e Operador Condicional
Aula 7 – Padrão Abstract Factory
Projeto de PLP (2006.1) Extensão da Linguagem OO1
Java: Interfaces Alcides Calsavara.
Métodos de Levantamento Poligonação
POO Herança e Polimorfismo
Métodos de Levantamento Poligonação
Semelhança de Triângulos 10/12/2016
Unidade IV– Relacionamento entre Objetos
Classes e Objetos Aula 11/08/2014.
Unidade V – Herança e Ligação Dinâmica
Aula 14 – Padrão Abstract Factory
Aula 11 – Padrão Singleton
Mestrado em Engenharia de Computação área de concentração Geomática
Endereçamento IP.
VETORES.
Programação Orientada a Objetos
(a + b)(a + b) = a² + ab + ba + b² = a² + 2ab + b²
DESENVOLVIMENTO DE SOFTWARE AULA 6 – Programação Orientada a Objetos
Aula 8 – Padrão Singleton
Unidade VI – Exceções e Interfaces
Elaborando as Interfaces Aulas 37, 38 e 39.
Remote Method Invocation
Programação Orientada a Objetos*
Programação Orientada a Objetos*
Rosemary Silveira Filgueiras Melo
Pacotes Servem para organizar o código, por exemplo, agrupar classes correlatas. Vamos supor uma classe Ponto2D pertencente ao pacote formas. A classe.
Programação Orientada a Objetos*
3.2 Sobrecarga de Métodos (Overloading)
Programação Orientada a Objetos*
Rosemary Silveira Filgueiras Melo
Rosemary Silveira Filgueiras Melo
Prof.: Bruno Rafael de Oliveira Rodrigues
Programação Orientada a Objetos
3.1.7 Variáveis de Classe e Instância
Programação Orientada a Objetos
Laboratório I Mateus Raeder.
Laboratório I Mateus Raeder.
Programação Orientada à
Filas Prof. Kariston Pereira
Programação Orientada a Objetos*
Laboratório I Mateus Raeder.
Programação Funcional
Expressões algébricas
Ordenando Coleções A Classe Collections.
Programação Orientada a Objetos
Constantes, Variáveis e Memória
RESULUÇÃO DOS EXERCÍCIOS E
Programação de Computadores II
Transcrição da apresentação:

Programação Orientada a Objetos Classes Abstratas

3.8 Classes Abstratas Em uma hierarquia é útil padronizar os serviços providos pelas classes. Represente através de classes os seguintes polígonos: Retângulo, Quadrado, Elipse e Triângulo. Estes polígonos terão dois métodos básicos: calculaArea() e calculaPerimetro(). Alan Santos

3.8 Classes Abstratas Agora, para ser fácil trabalhar com um array de polígonos, seria útil que todos os polígonos possuíssem uma mesma superclasse, Polígono. Para isso, nós queremos que a classe Poligono contenha todas as estruturas que nossos polígonos tenham em comum (os métodos calculaArea() e calculaPerimetro()). Realize essa alteração usando herança. Alan Santos

3.8 Classes Abstratas Porém, esses métodos não podem ser implementados na classe Poligono, pois eles têm comportamentos diferentes. Por exemplo, a área de um triângulo é diferente da área de um quadrado. Java lida com essas situações através de métodos abstratos. Alan Santos

3.8 Classes Abstratas Java permite definir um método sem implementá- lo declarando o método com o modificador abstract. Um método abstract não possui corpo ele possui somente a definição da assinatura (nome, argumentos e tipo de retorno) seguida de um ponto-e-vírgula (;). Alan Santos

3.8 Classes Abstratas Realize essa alteração nas classes que você implementou, observe que haverá um erro de compilação Isso acontece por que toda classe que contém pelo menos um método abstract é uma classe abstrata e deve ser declarada como abstract. Elimine o erro, efetuando a correção devida. Alan Santos

3.8 Classes Abstratas Algumas regras para classes abstratas: Uma classe abstrata não pode ser instanciada. Uma subclasse de uma classe abstrata pode ser instanciada somente se implementar todos os métodos abstratos. Se uma subclasse de uma classe abstrata não implementa todos os métodos abstratos que herda, então ela também é uma classe abstrata. Métodos static, private e final não podem ser abstratos (abstract), pois não podem ser sobrescritos na subclasse. Classes abstratas podem ter variáveis e métodos não abstratos. Alan Santos

3.8 Classes Abstratas Assim, se a classe Poligono possui os métodos abstratos circunferência ( ) e área ( ), é necessário que todas as subclasses de Poligono implementem estes métodos para que possam ser instanciadas. Efetue as definições destas classes no exemplo estudado. Alan Santos

3.8 Classes Abstratas Note que uma classe abstrata é implementada através da palavra-chave extends: class Retangulo extends Poligono{ A classe Retangulo não é abstrata e por este motivo implementa todos os métodos abstratos da classe Poligono. Além disso, como a classe Retangulo herda todas os métodos e variáveis da superclasse ela pode utilizar o método getType( ) implementado na classe abstrata Poligono. Alan Santos

3.8 Classes Abstratas Uma classe abstrata é uma classe que não tem instâncias diretas. Uma classe concreta é uma classe que pode ter instâncias. Em outras palavras se X é uma classe abstrata o código a seguir não pode ser executado: X objeto = new X(); Apesar disso, você pode criar construtores de uma classe abstrata para que eles sejam chamados pelos construtores das subclasses. (Reutilização) Alan Santos

3.8 Classes Abstratas O objetivo de criarmos classes abstratas é encapsular outras classes com comportamento comum. Elas podem surgir naturalmente na modelagem ou serem criadas para promover o reuso. Além disso, uma classe abstrata pode definir um protocolo para uma operação sem definir a implementação do método. public abstract class Poligono { // inicio da classe Poligono public abstract double calculArea(); public abstract double calculaPerimetro(); }// fim da classe Poligono Alan Santos

3.8 Classes Abstratas Assim, você pode declarar métodos abstratos em uma classe abstrata apenas para especificar um protocolo comum de operações. Toda subclasse concreta da classe abstrata deve fornecer uma implementação para TODOS os métodos abstratos: class Circulo extends Poligono { protected double raio; public Circulo(double r) { raio = r; } public double calculaArea() { return PI*raio*raio; public double calculaPerimetro() { return 2*PI*raio; Alan Santos

3.8 Classes Abstratas Se uma subclasse de uma classe abstrata não implementa todos os métodos abstratos então ela também é abstrata e Uma classe abstrata também pode ter métodos concretos. Frequentemente, faz sentido mover o máximo de funcionalidade possível para uma superclasse, seja ela abstrata ou não. Alan Santos