Programação Orientada a Objetos (DPADF 0063)

Documentos relacionados
UML: Diagrama de Casos de Uso, Diagrama de Classes

Técnicas de Programação II

Programação Orientada a Objetos (DPADF 0063)

2ª Lista de Exercícios Orientação a Objetos

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

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

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

Programação Orientada a Objetos

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

3.1 Definições Uma classe é a descrição de um tipo de objeto.

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

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

Programação por Objectos. Java

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

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Programação Orientada a Objetos em java. Polimorfismo

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

Computação II Orientação a Objetos

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Prof. Jhonatan Fernando

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

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

Classes Abstratas e Interfaces

Orientação a Objetos

Java Como Programar, 8/E. (C) 2010 Pearson Education, Inc. Todos os direitos reservados.

Polimorfismo. Prof. Leonardo Barreto Campos 1

Orientação a Objetos e a Linguagem Java

Análise e Projeto Orientado a Objetos

Análise e Projeto Orientados por Objetos

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

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Programação Orientada a Objetos C++

Banco de Dados. Aula 5 - Prof. Bruno Moreno 06/09/2011

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

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

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

Programação Orientada a Objetos (DPADF 0063)

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

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

UML Aspectos de projetos em Diagramas de classes

Análise de Programação

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

Programação por Objectos. Java

Desenvolvimento OO com Java Orientação a objetos básica

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

Herança. Alberto Costa Neto DComp - UFS

Módulo 06 Desenho de Classes

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

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

Modulo IIa Extra: Object

Exercícios de Revisão Java Básico

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

Programas eram lineares e com poucos módulos (Programação estruturada) Aumento da complexidade dos sistemas e difícil reusabilidade dos mesmos

Capítulo 4. Packages e interfaces

O modelo Entidade-Relacionamento. Agenda: -Modelagem de dados utilizando O Modelo Entidade-Relacionamento

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

Desenvolvimento Web TCC Turma A-1 /

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site:

UFG - Instituto de Informática

Capítulo 8. Introdução UML

Algoritmos e Programação II. Sobrecarga

Disciplina Técnicas de Modelagem

Prototype, um Design Patterns de Criação

Computação II Orientação a Objetos

Curso Java Starter. 1

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Administração Central Unidade de Ensino Médio e Técnico - Cetec. Ensino Técnico

2 Ferramentas Utilizadas

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

Python Intermediário. terça-feira, 4 de agosto de 15

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Orientação a Objetos

Guia de Fatores de Qualidade de OO e Java

Java 2 Standard Edition Como criar classes e objetos

Orientação a Objetos com Java

Figura 5 - Workflow para a Fase de Projeto

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

Análise e Projeto de Sistemas

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Relacionamentos entre classes

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

Implementando uma Classe e Criando Objetos a partir dela

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

Programação Orientada a Objetos (DPADF 0063)

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

Orientação a Objetos. Thiago Messias Evangelista UESC Universidade Estadual de Santa Cruz Version LibreOffice Productivity Suite

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Especificação do Trabalho

Modelagem de Dados Usando o Modelo Entidade-Relacionamento

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

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Sistemas Distribuídos: Conceitos e Projeto Java RMI

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Java Beans e Servlets

Tópicos em Engenharia de Computação

Linguagem de Programação III Herança

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

Encapsulamento de Dados

Transcrição:

Programação Orientada a Objetos (DPADF 0063) Aula 6 Polimorfismo Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Muitas formas

Polimorfismo É o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma assinatura, mas com comportamentos distintos... especializados para cada subclasse. O polimorfismo permite programar no geral em vez de programar no específico.

Polimorfismo em prática... continua...

Polimorfismo em prática... (cont.) Temos um vetor de Animais. O método mover() é chamado para cada elemento do vetor. Os elementos do vetor são instanciados com subclasses de animas. Qual método mover() vai ser chamado? O método da classe Animal ou os métodos especializados de cada uma das subclasses?

Polimorfismo (cont.) A decisão sobre qual método sobrescrito deve ser selecionado (dentro da hierarquia de classes) é tomada em tempo de execução, considerando a classe da instância (objeto) que o está chamando. O polimorfismo permite codificar programas que processam objetos que compartilham a mesma superclasse como se todos eles fossem objetos daquela superclasse (simplificando a programação).

Polimorfismo (cont.) Com o polimorfismo, podemos projetar e implementar sistemas facilmente extensíveis... novas classes podem ser adicionadas com pouca ou nenhuma modificação nas partes gerais do programa... desde que as novas classes façam parte da hierarquia de herança já existente. Retângulo, círculo e triângulo são formas geométricas que podem ser desenhadas Com o polimorfismo o método desenhar() de cada subclasse pode ser sobrescrito para que se comporte de maneira diferente. Um programa que faz desenhos e que utiliza formas geométricas não precisa se preocupar em chamar métodos específicos de cada forma... basta chamar o método desenhar() da hierarquia... se a subclasse for um círculo... seu método específico será chamado.

Casting ou Moldagem Utilizado para converter um objeto ou tipo primitivo de um tipo/classe para outro; Suponhamos a necessidade de armazenar um valor int dentro de um double... como a precisão de um double é maior... a conversão é natural... int i = 3; double pi = i +.14159; Quando há perda de precisão... O casting é necessário... double pi = 3.14159; int i = (int) pi; // Ao final i vale 3

Casting de Objetos Em aplicações que exploram o polimorfismo é comum a necessidade de fazer com que um objeto se passe por outro. O casting não modifica o objeto, é o receptor do cast que constitui um novo objeto ou um novo tipo... Temos um vetor de Objetos. Um método que recebe um animal, mostra seu nome e o movimenta Saída do código Salamandra Movimento do Anfíbio Antes de chamar o método, os objetos são transformados em Animais... Quero-quero Movimento da Ave Dourado Movimento do Peixe

Operador instanceof Utilizado para determinar o tipo de um objeto em tempo de execução; Utilizado em situações onde alguma operação específica de uma subclasse precisa ser chamada, mas antes é necessário verificar se o objeto que vai chamar o método é do tipo correto. Utilização: refobjeto instanceof nomeclasse Retorna um valor booleano (true ou false) indicando se o objeto referenciado (refobjeto) é realmente uma instância da classe (nomeclasse)

instanceof em prática... Se a instância for da classe Peixe, então chama o método nadar (o casting é necessário para evitar um erro de compilação).

Classes abstratas Uma classe abstrata é uma classe que não pode ser instanciada... não pode ser diretamente utilizada para criar objetos; O propósito de criação de uma classe abstrata é de fornecer uma superclasse apropriada para que outras classes utilizem como base (herança); Seus métodos podem ter implementação ou podem ser abstratos também (sem implementação).

Classes abstratas em Java A palavra reservada abstract indica que a classe é abstrata e portanto não pode ser instanciada diretamente (precisa ser herdada)

Métodos abstratos Uma classe abstrata pode conter métodos abstratos... ou seja... métodos sem implementação na classe abstrata que exigem a implementação nas subclasses A técnica de especificar métodos abstratos permite que o projetista decida quais são os comportamentos que as subclasses devem ter... mas sem determinar como tais comportamentos serão implementados... Somente classes abstratas podem ter métodos abstratos.

Métodos abstratos em Java Métodos abstratos não podem ter implementação na classe abstrata. Nas subclasses os métodos abstratos devem ser obrigatoriamente implementados.

Interfaces Uma interface é como se fosse uma classe 100% abstrata, ou seja, uma coletânea de métodos sem implementação; Uma classe pode ter uma única superclasse (herança simples), mas pode implementar várias interfaces... através deste recurso que Java consegue se utilizar dos benefícios da herança múltipla; Uma interface um contrato que define um conjunto de métodos públicos vazios que devem ser codificados nas subclasses que implementarem a interface; Uma interface não pode definir métodos construtores.

Interfaces em Java

Classes Abstratas x Interfaces Ambos são projetos de classes que não podem ser instanciados; Uma interface é uma classe 100% abstrata (que não contém nenhum método implementado, apenas assinaturas); Uma classe pode herdar uma única classe abstrata mas pode implementar várias interfaces; Uma classe abstrata pode conter atributos de instância, já uma interface pode conter apenas constantes estáticas; Em uma interface os métodos são implicitamente públicos e abstratos. Ambas exigem a implementação dos métodos abstratos nas subclasses;

Exercícios para fixação

Cardápio abstrato... Codifique uma classe abstrata denominada de Receita... ela deve ter 2 métodos abstratos... getingredientes() e getmododefazer() (de retorno String) e um atributo para indicar se a receita é de doce ou de salgado. Codifique também 2 interfaces... Cozido e Assado, com um método para cozinhar e assar (respectivamente em cada uma delas). Agora usando sua criatividade e seus dotes culinários crie subclasses de Receita implementando seus métodos abstratos. As subclasses devem também utilizar uma ou ambas interfaces especificadas. Para testar, faça uma classe Cardápio com um vetor de receitas e invoque os métodos...