2. Classes, Objectos, Herança e Polimorfismo

Documentos relacionados
2. Classes, Objectos, Herança e Polimorfismo

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

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

Programação Orienta a Objetos

Linguagem de Programação III

Sobreposição de Métodos

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

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

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Programação Orientada a Objetos

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

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

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Programação Orientada a Objetos

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

Laboratório de programação II

Programação por Objectos. Java

Programação Orientada a Objetos

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

Programação Orientada a Objetos JAVA - NETBEANS

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

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

CURSO TÉCNICO DE INFORMÁTICA Módulo C ORIENTAÇÃO À OBJETO. Conceitos

ORIENTAÇÃO A OBJETOS Histórico:

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

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

Capítulo 2. Orientação a Objetos

Programação Orientada a Objetos

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

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

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

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

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

9 Classes Abstractas e Interfaces

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

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

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

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

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

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Classe Abstrata e Interface

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

O PARADIGMA ORIENTADO POR OBJETOS

Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

LEIC-A / MEIC-A 2007/2008 (1º

Orientação a Objetos (OO)

Herança Tiago Eugenio de Melo

7.8 DIAGRAMA DE CLASSES

INTRODUÇÃO A POO. Programação Orientada a Objetos Flávio de Oliveira Silva 6. PROCEDIMENTAL (Algorítmica)

Programação em Comunicações. Programação Orientada por Objectos. Ademar Aguiar.

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Sumário. BD Orientado a Objetos

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

Laboratório de programação II

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1

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

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

Palavras Reservadas da Linguagem Java

Introdução à Modelagem Conceitual 1. Conceitos Básicos

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

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

ACH2002. Orientação a Objetos

Polimorfismo. O que é polimorfismo?

Herança e Polimorfismo

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

Sumário. Capítulo 1 Introdução 29. Capítulo 2 Utilizando Objetos 59

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

Programação Orientada a Objetos

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

ÍNDICE. PREFÁCIO xv. 3 PROCESSOS GERADOS POR PROCEDIMENTOS Recursão Linear Cálculo de potências Cálculo de factoriais 91

Programação Orientada a Objetos JAVA - NETBEANS

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

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

J = 232 k = 193 J = 232 k = 193 J = 232 k =

Os diagramas de use case capturam os requisitos funcionais do sistema.

Notas de Aula 04: Herança e polimorfismo.

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

Informática. Professor: Diego Oliveira. Conteúdo 04: Orientação a Objetos

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

Programação Orientada a Objetos em Python

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

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

LEIC-A / MEIC-A 2007/2008 (1º

Modelo do Mundo Real. Abstração. Interpretação

Apresentação da Disciplina e Revisão dos Conceitos de Orientação a Objetos

Herança e Polimorfismo - Parte II -

Orientação a objetos. Objetos ou Instâncias I

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação com Objectos Teste Teórico 18 de Dezembro de 2008, 19:00 (120 minutos)

Transcrição:

2. Classes, Objectos, Herança e Polimorfismo Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 1 / 1 Tipo Abstracto de Dados Como vimos, a programação orientada aos objectos tem como conceitos fundamentais: as classes que representam a estrutura geral para todos os objectos possíveis que partilham um conjunto comum de características definidas por atributos e por métodos que intervêm sobre os atributos. e os objectos que são instâncias particulares de uma classe; os atributos constituem o estado do objecto. Uma classe define, na realidade, um tipo abstracto de dados (TAD). O que é um TAD? abstracção matemática de uma estrutura de dados, que especifica o tipo de dados armazenados e as condições e as operações que podem manipular esses dados. Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 2 / 1

Princípios da Orientação aos Objectos Encapsulamento: esconder detalhes internos da implementação de componentes. Modularidade: organizar o código por unidades funcionais distintas. Influencia re-utilização do código. Uma forma natural de organizar componentes é em hierarquias que vão desde o mais específico para o mais geral no topo. Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 3 / 1 Herança e subclasses Herança é um mecanismo que, partindo de uma hierarquia de classes, permite a re-utilização de código. classe-base ou superclasse é a classe mais geral da hierarquia. As subclasses especializam ou extendem ou herdam de uma superclasse. A classe T extende a classe S com novos atributos e métodos. T herda de S os seus atributos e métodos. A localização de um método faz-se, percorrendo a hierarquia de classes (dynamic dispatching ou binding). Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 4 / 1

Hierarquia Pessoa-Aluno Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 5 / 1 Polimorfismo - overriding Polimorfismo refere-se à capacidade de uma variável que representa um objecto ou de um método poder tomar diferentes formas. O Java admite polimorfismo de inclusão: métodos com o mesmo nome e argumentos podem estar em classes diferentes da hierarquia. (overriding) o mecanismo de execução assume a sobreposição e executa o método que encontrar primeiro percorrendo a hierarquia de baixo para cima. Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 6 / 1

Polimorfismo - overloading O Java também admite sobre-carregamento de métodos (overloading), associado a polimorfismo paramétrico: podemos ter na mesma classe, ou em subclasses, vários métodos com o mesmo nome, desde que tenham assinaturas diferentes. a assinatura de um método refere-se ao tipo de dados que retorna e ao número e tipo de argumentos que aceita. Tendo um objecto o da classe T, podemos fazer o.a(x,y);. O mecanismo de execução invoca o método definido em U. Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 7 / 1 Exemplo: Progressões Numéricas Uma progressão numérica é uma sequência de números onde cada número, com excepção do 1 o, depende de um ou mais n o s anteriores. prog. aritmética: diferença entre 2 termos consecutivos é constante. Exemplo: 1, 3, 5, 7, 9,... Termo geral: a n = d + a n 1, n > 1 ou a n = a 1 + (n 1)d, n > 1 ou a n = a m + (n m)d, n > m onde d = a n a n 1, n > 1 prog. geométrica: razão entre 2 termos consecutivos é constante. Exemplo: 1, 2, 4, 8, 16,... ou 1, 2 1, 2 2, 2 3, 2 4,... Termo geral: an = ar n 1, n > 1 ou recursivamente a n = ra n 1, n > 1. prog. fibonacci: um termo é a soma dos dois termos anteriores, com excepção dos dois primeiros. Exemplo: 0, 1, 1, 2, 3, 5, 8,... Termo geral: an = a n 1 + a n 2, n > 2 e a 1 = 0, a 2 = 1. Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 8 / 1

Exemplo de Herança: Progressões Numéricas Como vimos, para uma progressão é importante conhecer o primeiro valor e o valor corrente para se poder determinar o próximo termo da progressão. Vejamos a definição de uma classe-geral (secção 2.2.3 do Tamassia): Progression() constructor da classe. firstvalue() re-inicia a sequência no 1o valor. nextvalue() avança para o valor seguinte. printprogression() re-inicia e escreve os 1os n valores. Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 9 / 1 Classe Geral Progressão Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 10 / 1

Classe Progressão Aritmética Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 11 / 1 Classe Progressão Geométrica Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 12 / 1

Classe Progressão Fibonacci Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 13 / 1 Classe Principal para Teste Progressão Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 14 / 1

Exemplo de output do teste da classe progressão Compilando e executando o programa teríamos como resultado: Progressão aritmética de razão 1 (default): 0 1 2 3 4 5 6 7 8 9 Progressão aritmética de razão 5: 0 5 10 15 20 25 30 35 40 45 Progressão geométrica de razão 2 (default): 1 2 4 8 16 32 64 128 256 512 Progressão geométrica de razão 3: 1 3 9 27 81 243 729 2187 6561 19683 Progressão Fibonacci com valores default: 0 1 1 2 3 5 8 13 21 34 Progressão Fibonacci com valores iniciais 4 e 6: 4 6 10 16 26 42 68 110 178 288 O que acontece se um dos valores iniciais da progressão de Fibonacci for negativo? E se o número de termos da progressão geométrica for elevado e a base também for grande? Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 15 / 1 Hierarquia da classe Progression e suas subclasses Fernando Silva (DCC-FCUP) 2. Classes, Objectos, Herança e Polimorfismo Estruturas de Dados 16 / 1