Linguagem de Programação III

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

Classes e Objetos. Sintaxe de classe em Java

Classe Abstrata e Interface

Linguagem de Programação III

Linguagem de Programação III

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

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

Conceitos de Programação Orientada a Objetos

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 -

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

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

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

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

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

Programação Orientada a Objetos

9 Classes Abstractas e Interfaces

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

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

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

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

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

4 Conceito de Herança

Herança e Polimorfismo

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

Palavras Reservadas da Linguagem Java

Computação II Orientação a Objetos

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

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

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

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

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

POO29004 Programação Orientada a Objetos

Interfaces e Classes Abstratas

Aula 2 Princípios Básicos da Orientação a Objetos (Parte II)

Laboratório de programação II

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

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

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

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Notas de Aula 04: Herança e polimorfismo.

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

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

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

Linguagem de Programação II Herança

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

Programação Orientada a Objetos

Linguagem de Programação IV Introdução

Programação Orientada a Objetos com Java. Prof. Júlio Machado

C com introdução a OO

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

POO29004 Programação Orientada a Objetos

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 - NETBEANS

Programação Orientada a Objetos

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

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

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

POO29004 Programação Orientada a Objetos

O PARADIGMA ORIENTADO POR OBJETOS

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Linguagens de Programação Aula 12

Programação Orientada a Objetos JAVA - NETBEANS

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Orientação a Objetos Classes Abstratas

Fundamentos de Orientação à objetos

Programação Orientada a Objetos

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

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

Herança e Polimorfismo

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

Notas de Aula 05: Diretivas de atributos, métodos e classes e o uso de Interfaces.

Python Orientação a Objetos. Introdução à Programação SI2

extendsé usado para indicar herança em JAVA

Transcrição:

Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana

Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando com aplicativos e classes em Java Construtores de classes Sobrecarga de métodos Arrays em Java Herança

Na Aula de Hoje Polimorfismo Classes Abstratas Interfaces

Herança Na aula anterior estudamos algumas técnicas utilizadas em Java para reutilização da classes: composição de classes e herança; A herança é uma técnicas e permite criar classe utilizando classes já existente de forma simples e eficiente. A herança cria uma relação muito estreita entre a classe original, ou superclasse, e a classe derivada, ou subclasse: a subclasse é do tipo da superclasse. Desta forma uma instância de uma subclasse poderia representar uma instância da superclasse já que tem toda a informação necessária para isto.

Polimorfismo Esta característica das linguagens de POO, derivada da herança, permite introduzir um novo conceito: o polimorfismo (Poli muitas morfismo formas) O polimorfismo permite manipular classes que herdam da mesma superclasse de forma unificada. Isto é: Podeos escrever métodos que recebam como argumentos instâncias da classe C e eles serão poderão receber como argumentos instâncias de classes que herdam da classe C Lembram do exemplo da aula anterior?

Polimorfismo Método da classe Data public boolean eigual(data outradata) { if ((dia == 0) (outradata.dia == 0)) return false; if (( dia == outradata.dia) && // representam o mesmo dia ( mes == outradata.mes) && // representam o mesmo mes ( ano == outradata.ano)) return true; else return false; } // fin do método éigual Método da classe DataFSemestre que herda da classe Data. public boolean eigual(datafsemestre outradata) { return super.eigual(outradata); } // fin do método éigual

Polimorfismo É possível implementar numa classe métodos polimorfos e sobrecarregados simultaneamente. Isto significa que se, numa determinada classe implementamos um método que recebe uma instância da classe Pessoa e outro sobrecarregado que receba instâncias da classe Funcionario, poderemos utilizar estes métodos enviando instâncias da classe Pessoa, Funcionario ou ChefeDeDepartamento. Qual método será chamado em cada caso?

Classes Abstratas O mecanismo de herança, que vimos na aula anterior, nos permite criar uma nova classe utilizando como base uma classe já existente. O planejamento que quais classes terão herdeiras e o mecanismo de implementação das diferenças entre as classes e suas herdeiras geras as vezes complicações, sobre tudo em aplicativos compostos por muitas classes. Nem sempre é desejável implementar uma classe ancestral que tenha todos os métodos e atributos comuns às suas herdeiras. Muitas vezes é interessante definir apenas os atributos e métodos sem que estes sejam implementados.

Classes Abstratas O primeiro mecanismo para optimizar este processo é o de criação de métodos abstratos. São apenas declarados sem um corpo que contenha a implementação dos mesmos. Se declaram utilizando o modificador abstract Se uma classe tiver um método abstrato ela também tem que ser declarada com abstrata. Uma classe pode ser declarado como abstrata mesmo que não tenha nenhum método abstrato. Uma classe que herde de uma classe abstrata deverá, obrigatoriamente, implementar os métodos abstratos da superclasse.

Classes Abstratas Os métodos públicos não abstratos das classes abstratas são herdados pelas suas subclasses. Os construtores não são, tecnicamente, herdados mais podem ser chamados desde as subclasses. Na implementação da classe abstrata, métodos não abstratos podem chamar a métodos abstratos. Construtores das classes abstratas não podem ser abstratos. As classes abstratas não podem ser instanciadas. Para criar classes que herdam de classes abstratas utilizamos a clausula extends como nas classes não abstratas.

Classes Abstratas Métodos abstratos podem ter, como tipo de retorno instâncias da classe abstrata. Estes métodos terão que ser implementados na classe herdeiras retornando o tipo da nova classe. Exemplo //implementado na classe abstract Pessoa public abstract Pessoa clona() //implementado na classe Funcionario public Funcionario clona() Isto é um método sobrecarregado ou sobrescrito?

Interface Se a classe não tiver nenhum método não abstrato ela pode ser implementada como uma interface. Da mesma forma que uma classe abstrata uma interface não pode ser instanciada. Todos os métodos numa interface são implicitamente abstract e public. E não podem ser implementados Atributos, se houver, serão static e final devendo ser inicializados na sua declaração.

Interface A principal diferença entre classes abstratas e interfaces está dada por Uma classe somente pode herdar de uma única classe, seja ela abstrata ou não. Uma classe pode implementar qualquer número de interfaces. Interfaces são declaradas com interface e não com class. Os métodos se declaram como os métodos abstratos das classes abstratas sem a palavra chave abstract.

Interface Já que os métodos são implicitamente public e abstrac eles não podem ser declarados com outros modificadores. Interfaces não podem ter construtores. A relação entre uma classe e uma interface se estabelece utilizando a clausula implements.