Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.

Slides:



Advertisements
Apresentações semelhantes
Paulo Marques Hernâni Pedroso
Advertisements

Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Herança, Polimorfismo e Classes Abstratas em Java
H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique
1 Orientação a Objetos: Herança Alcides Calsavara.
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Generalização, Especialização e Conceitos
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Iniciação ao Java – Márcio F. Campos
Linguagem de Programação II
Linguagem de Programação II
Interfaces em Java1 Interfaces Prof. Ricardo Linden.
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Classes Abstractas.
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
Linguagem técnica de programação I Java i
Curso de extensão em Desenvolvimento Web
Programação Orientada a Objetos com Java
C# Herança Sharp Shooters .NET Universidade Federal de Pernambuco Centro de Informática Recife, 23/09/2002 Autor: Marden Menezes Costa.
Interfaces.
Oberdan B. Ferreira Polimorfismo Oberdan B. Ferreira
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
Programação I Aula 2 (Métodos)
Linguagens de Programação II Aula 04 – Entendendo Classes
Professora Lucélia Oliveira
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof.a.
PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Programação Orientada a Objetos - Java
Análise Orientado aos Objetos Prof. Wolley W. Silva
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Orientação a Objetos usando Java
Java Kickstart, day 2 Semelhanças com linguagem C.
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
POO II JEAN CARLO MENDES
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Interfaces POO Avançado.
Classes Abstratas e Interface
Aula Prática 1 Monitoria IP/CC (~if669). Roteiro 1.Polimorfismo 2.Superclasses Abstratas 3.Dúvidas 4.Exercício.
Herança e Arquitetura em camadas
Classes Abstratas e Interfaces GX – Aula05 1.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Herança Modelagem e Programação Orientada a Objetos
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Paradigmas da Programação – Semestre 1 – Aula 8 Professor: Eduardo Mantovani )
Bruno Inojosa MCP .NET Framework
Linguagem II Classes Abstratas Interfaces. Davi Pires Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores.
Modificadores Programação II.
OO com Java Luiz Carlos d´Oleron Roteiro de aula.
Herança.
Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas.
Módulo II Capítulo 1: Orientação a Objetos
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
PROGRAMAÇÃO ORIENTADA A OBJETOS
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
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.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Jean Carlo mendes
Transcrição da apresentação:

Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada por outras classes. Seu objetivo é ser herdada por outras classes. Podem possuir métodos abstratos Podem possuir métodos abstratos Métodos abstratos não possuem corpo na classe em que são definidos como abstract, seu objetivo é obrigar as classes que herdam de sua classe a lhe definirem.Métodos abstratos não possuem corpo na classe em que são definidos como abstract, seu objetivo é obrigar as classes que herdam de sua classe a lhe definirem.

Palavra reservada this Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando aquela variável cuja declaração estiver mais próxima, no caso o parâmetro. Caso desejemos referenciar o atributo da classe e não o parâmetro devemos usar a palavra reservada this antes do nome da variável.. Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando aquela variável cuja declaração estiver mais próxima, no caso o parâmetro. Caso desejemos referenciar o atributo da classe e não o parâmetro devemos usar a palavra reservada this antes do nome da variável..

Vejamos o seguinte exemplo Vejamos o seguinte exemplo public class Exemplo { private int testada = 20; private int testada = 20; public void testaPalavra(int testada) public void testaPalavra(int testada) { JOptionPane.showMessageDialog(null,"Parametro = "+testada+" Atributo = "+this.testada); JOptionPane.showMessageDialog(null,"Parametro = "+testada+" Atributo = "+this.testada); } public static void main(String args[]) public static void main(String args[]) { Exemplo algum = new Exemplo(); Exemplo algum = new Exemplo(); algum.testaPalavra(8); algum.testaPalavra(8); }}

Herança - continuação Vimos anteriormente que o nivel de protecao de atributos e metodos pode ser public, protectec e private e que componentes declarados como private nao podem ser acessados por suas subclasses. Uma forma de contornar isto e criar metodos set e get publicos de forma que a subclasse possa acessar estes atributos atraves dos metodos. Vimos anteriormente que o nivel de protecao de atributos e metodos pode ser public, protectec e private e que componentes declarados como private nao podem ser acessados por suas subclasses. Uma forma de contornar isto e criar metodos set e get publicos de forma que a subclasse possa acessar estes atributos atraves dos metodos. Classes abstratas, como visto anteriormente sao classes que nao podem ser instanciadas, cuja finalidade e agrupar caracteristicas que devem ser herdadas por outras classes. Classes abstratas, como visto anteriormente sao classes que nao podem ser instanciadas, cuja finalidade e agrupar caracteristicas que devem ser herdadas por outras classes. Metodos declarados como abstratos por sua vez nao fornecem implementacoes, estes metodos deverao obrigatoriamente ser implementados nas subclasses. Metodos declarados como abstratos por sua vez nao fornecem implementacoes, estes metodos deverao obrigatoriamente ser implementados nas subclasses.

Herança - continuação O Java ao contrário de C++ não suporta herança múltipla; O Java ao contrário de C++ não suporta herança múltipla; Toda classe herda da classe object. Toda classe herda da classe object. Uma classe pode herdar de qualquer classe desde que ela não tenha o modificador final. Uma classe pode herdar de qualquer classe desde que ela não tenha o modificador final. Polimorfismo permite programar no geral em vez de programar no especifico. Polimorfismo permite programar no geral em vez de programar no especifico. Polimorfismo permite escrever programas que processem objetos que compartilham a mesma superclasse em uma hierarquia de classes como se todas fossem objetos da superclasse. Polimorfismo permite escrever programas que processem objetos que compartilham a mesma superclasse em uma hierarquia de classes como se todas fossem objetos da superclasse. Já vimos como implementar polimorfismo por overloading (sobrecarga). Já vimos como implementar polimorfismo por overloading (sobrecarga). Vejamos agora como implementar polimorfismo por override. Vejamos agora como implementar polimorfismo por override.

Polimorfismo por override Um método de uma subclasse pode reescrever um método da superclasse de forma que ele atenda melhor suas necessidades. Para isto o método da subclasse deve ter a mesma assinatura do método da superclasse. Um método de uma subclasse pode reescrever um método da superclasse de forma que ele atenda melhor suas necessidades. Para isto o método da subclasse deve ter a mesma assinatura do método da superclasse. Os modificadores de acesso não precisam ser os mesmos entretanto o método da subclasse deve ter o modificador de acesso igual ou menos restritivo que o modificador de acesso do método original. Os modificadores de acesso não precisam ser os mesmos entretanto o método da subclasse deve ter o modificador de acesso igual ou menos restritivo que o modificador de acesso do método original. Vejamos o seguinte exemplo: Vejamos o seguinte exemplo:

public class SuperClasse { void mostra(int y) void mostra(int y) { System.out.println("da superclasse: "+y); System.out.println("da superclasse: "+y); }} public class SubClasse extends SuperClasse { public void mostra(int y) public void mostra(int y) { System.out.println("da subclasse: "+y); System.out.println("da subclasse: "+y); } public static void main(String args[]) { SuperClasse objSuper = new SuperClasse(); SuperClasse objSuper = new SuperClasse(); SubClasse objSub = new SubClasse(); SubClasse objSub = new SubClasse(); objSuper.mostra(10); objSuper.mostra(10); objSub.mostra(10); objSub.mostra(10); }}

Polimorfismo por override Na tabela acima podemos ver resumidamente os modificadores de acesso e os direitos que cada um deles dão. Na tabela acima podemos ver resumidamente os modificadores de acesso e os direitos que cada um deles dão.

Exercicio As classes a seguir tem o objetivo de “representar” circulos e quadrados na tela.

Exercício (cont) 1) Crie uma classe generalizadora chamada Figura que deve conter tudo que for comum às duas classes anteriormente vistas. 1) Crie uma classe generalizadora chamada Figura que deve conter tudo que for comum às duas classes anteriormente vistas. 2) Modifique Círculo e Quadrado de forma que eles herdem de Figura. 2) Modifique Círculo e Quadrado de forma que eles herdem de Figura. 3) Implemente polimorfismo por override ao reescrever o método desenha nas subclasses que herdam de Figura. 3) Implemente polimorfismo por override ao reescrever o método desenha nas subclasses que herdam de Figura. 4) Crie um método main que instancie um objeto de cada uma das classes criadas e chame o desenha de cada um deles. 4) Crie um método main que instancie um objeto de cada uma das classes criadas e chame o desenha de cada um deles.