Computação II Orientação a Objetos

Documentos relacionados
Computação II Orientação a Objetos

Computação II (MAB 225)

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Computação II (MAB 225)

Computação II Orientação a Objetos

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

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Computação II Orientação a Objetos

Computação II Orientação a Objetos

Linguagem de Programação III

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

Computação II (MAB 225)

Compiladores Análise Semântica

LÓGICA DE PROGRAMAÇÃO (JAVA) CLASSES E OBJETOS. Professor Carlos Muniz

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

9 Classes Abstractas e Interfaces

Interfaces e Classes Abstratas

Computação II Orientação a Objetos

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

Computação II Orientação a Objetos

Compiladores Análise Semântica

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

Compiladores Análise de Tipos

Programação Orientada a Objetos

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

Aula 1 Conceitos Básicos

Conceitos de Programação Orientada a Objetos

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Linguagem de Programação III

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

Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos

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

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Unidade: sobrecarga, construtores e herança

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

1 Introdução e Conceitos básicos

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

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

PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

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

Desenvolvimento de Aplicações Desktop

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

Os princípios do desenho orientado a objetos

Universidade Federal de Uberlândia Disciplina: POO2 Prof. Fabiano Dorça. Padrões de Projeto. Padrão Command

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Capítulo 2. Orientação a Objetos

Compiladores Análise de Tipos


Exame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 05 Classes, Atributos, Métodos. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Conceitos Básicos da Programação OO

Linguagens de Domínio Específico

AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

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

Programação Orientada a Objetos II Java Décima primeira aula

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Classes e Objetos. Sintaxe de classe em Java

Programação Estruturada Orientada a Objetos

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Introdução à Programação C

Laboratório de programação II

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

Linguagem de programação Programação Orientada a objetos

Encapsulamento e Modularização

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

Computação II Orientação a Objetos

Unidade 8: Sobrecarga de Funções e Vetores e Matrizes (Arrays) Prof. Daniel Caetano

1) Defina os principais conceitos de orientação a objetos. 4) Porque é desejável programar com foco em interfaces?

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

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Encapsulamento e Modularização

Compiladores Análise de Tipos

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

Linguagens de Programação

ASSOCIAÇÃO ENTRE CLASSES

Compiladores Análise de Tipos

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

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

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

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

Linguagens de Domínio Específico

Linguagens de Programação

Transcrição:

Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java

Interfaces Uma interface é uma forma abstrata de descrever um objeto A classe fixa a forma de um objeto e as assinaturas e as implementações das suas operações Uma interface fixa apenas as assinaturas das operações Sintaticamente, uma interface tem apenas declarações de métodos, sem corpo interface Tijolo { boolean testacolisao(bola b); void desenhar(tela t); int pontos(); }

Polimorfismo Nem todas as linguagens orientadas a objeto possuem interfaces como as de Java, mas todas elas permitem o polimorfismo que obtemos com interfaces Polimorfismo é poder operar com objetos diferentes de maneira uniforme, mesmo que cada objeto implemente a operação de uma maneira particular; basta que a assinatura da operação seja a mesma para todos os objetos Em programas OO reais, é muito comum que todas as operações sejam chamadas em referências para as quais só vamos saber qual classe concreta o objeto vai ter em tempo de execução Vamos ver muitas aplicações diferentes de polimorfismo ao longo do curso

Interfaces e abstrações Interfaces são uma ferramenta poderosa de abstração: representar um conceito pelas suas características essenciais Com elas, podemos decompor nossos problemas em pequenas partes genéricas Vamos ver um exemplo prático de como mesmo uma interface simples pode ser combinada de maneiras poderosas: interface Funcao { double valor(double x); String formula(); }

Decoradores e Compósitos Apenas as funções Constante, Potencia e Exp são implementações primitivas de Funcao no nosso exemplo As outras são funções construídas em cima de outras funções, que aproveitam o polimorfismo para ter um número ilimitado de combinações recursivas Elas também são demonstrações de outros dois padrões de programação OO muito comuns, baseados em polimorfismo: decoradores e compósitos

Decorador Um decorador é um objeto que modifica o comportamento de outro objeto, expondo a mesma interface Um decorador implementa uma interface, e contém uma instância dessa mesma interface, delegando seus métodos para essa instância, mas sempre acrescentando alguma coisa No nosso exemplo, Derivada e Escala são exemplos de decoradores A biblioteca padrão de Java faz uso extenso de decoradores no seu sistema de entrada e saída

Compósito Um compósito é uma composição em que as partes são do mesmo tipo do todo São uma espécie de composição recursiva de objetos O compósito implementa a mesma interface das suas partes, e as implementações de seus métodos são uma combinação dos resultados de delegar os métodos para as partes Em nosso exemplo, Soma, Mult e Composta são compósitos Compósitos são uma escolha natural para representar estruturas em árvore: uma janela de uma interface gráfica é um exemplo bem complexo de um compósito

Classes anônimas Algumas vezes queremos apenas uma única instância de uma classe que implementa alguma interface simples Por exemplo, queremos representar a função abaixo:

Classes anônimas, cont. Podemos criar classes para representar o conceito de função por partes, e aí instanciar uma composição de objetos das classes que temos Ou podemos criar uma classe só para representar essa função, mas aí temos que criar um arquivo.java para ela, e dar um nome para essa classe... Ou podemos criar uma classe anônima! new Funcao() { public double valor(double x) {... } public String formula() {... } }

Classes anônimas, cont. Podemos usar uma classe anônima em qualquer lugar que podemos usar uma expressão Uma classe anônima pode ter campos, e outros métodos, mas não poderemos acessá-los de fora da classe, mesmo que sejam públicos Dentro de uma classe anônima, podemos campos visíveis naquele ponto do código, e usar variáveis locais visíveis que sejam declaradas como final Uma variável final não pode mudar seu valor depois de ser inicializada

Editor gráfico Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação com o mouse) para implementar não um jogo, mas uma aplicação com uma pequena interface gráfica Vamos fazer um programa simples para desenho e manipulação de figuras geométricas: um nano-sketchpad (lembrem da primeira aula!) Nosso editor vai ter botões de comando, as figuras vão poder ser desenhadas e manipuladas usando o mouse, e vamos ter undo e redo (desfazer e refazer) de vários níveis!

Editor gráfico esboço da interface