Computação II Orientação a Objetos

Documentos relacionados
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

Computação II (MAB 225)

Computação II Orientação a Objetos

Computação II Orientação a Objetos

LISTA DE EXERCÍCIO 7 Interfaces

Computação II Orientação a Objetos

Classe Abstrata e Interface

Linguagem de Programação III

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

Computação II Orientação a Objetos

Avançando em Java com

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

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

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

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

Programação Orientada a Objetos II

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

POO29004 Programação Orientada a Objetos

Computação II Orientação a Objetos

Computação II (MAB 225)

Computação II Orientação a Objetos

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

Computação II Orientação a Objetos

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

Computação II (MAB 225)

Computação II Orientação a Objetos

Programação por Objectos. Java

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

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

Usuários. Interface com Usuários. Programa Aplicativo. Interfaces de Programação. Sistema Operacional

Conceitos de Programação Orientada a Objetos

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

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

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

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

Compiladores Análise Semântica

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Padrões Fábrica. Simple Factory Factory Method

Generics POO. Prof. Marcio Delamaro

POO29004 Programação Orientada a Objetos

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

Programação Orientada a Objetos

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

Compiladores Análise Semântica

Programação Orientada a Objetos


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

Unidade: sobrecarga, construtores e herança

Computação II Orientação a Objetos

Interfaces e Classes Internas

Computação II Orientação a Objetos

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

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

Orientação a Objetos AULA 09

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

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

Computação II Orientação a Objetos

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Introdução à Programação. Encapsulamento e Herança

Classes e Objetos. Sintaxe de classe em Java

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

Programação Orientada a Objetos

Computação II Orientação a Objetos

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

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

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

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

Computação II (MAB 225)

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

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

Programação Orientada a Objetos

Prof. Msc. Vladimir Camelo

Introdução à Programação C

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

Linguagem de Programação III

Computação II Orientação a Objetos

Conceitos Básicos da Programação OO

Linguagem de Programação I

Programação Orientada a Objetos Relacionamentos entre classes

Classes e Objetos POO

Palavras Reservadas da Linguagem Java

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Aula Prática Criando Views e Controles

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

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

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

Universidade Federal de Uberlândia

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

Transcrição:

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

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

Model-View-Controller (MVC) O MVC é o principal padrão para estruturação de aplicações com interfaces gráficas Ele separa a aplicação em três grandes partes: O modelo representa os dados da aplicação, e implementa a sua lógica interna de uma maneira o mais independente dos detalhes da interface quanto possível A visão é a parte visível da interface, e é como o usuário enxerga os dados do modelo O controlador faz a mediação entre o usuário, o modelo e a visão

Observadores ou listeners Usamos o padrão observador quando queremos desacoplar objetos que emitem eventos dos objetos que os consomem A fonte ou sujeito dos eventos pode implementar uma interface que permite aos observadores se cadastrar para receber eventos, e se descadastras Os observadores ou listeners implementam uma interface que permite que sejam notificados caso algum evento ocorra É um padrão muito usado em interfaces gráficas

Exemplos de observadores Já usamos muitos observadores: A interface Jogo é em parte um observador, assim como as interfaces App e Componente As interfaces *Listener usadas em Motor para despachar os eventos para a aplicação A interface Acao para conectar um botão ao que fazer quando é clicado A interface Toggle para um botão se conectar a uma chave ligado/desliado A interface ObservadorCanvas para receber eventos do componente canvas

Undo/redo e o padrão Comando Para implementar a funcionalidade de desfazer/refazer do editor de figuras, vamos usar o padrão Comando Um comando é um objeto que representa uma ação da aplicação; para uma aplicação típica, qualquer coisa que podemos desfazer As instâncias de comando encapsulam toda a informação necessária para desfazer a ação, ou refazê-la Com isso, implementar desfazer/refazer no modelo é só uma questão de manter uma pilha de ações feitas e outra pilha de ações desfeitas

Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato em nosso programa, não importa a forma como ele era implementado Programar com interfaces é flexível, mas a restrição de só podermos ter assinaturas de métodos em uma interface às vezes é inconveniente, e pode levar a duplicação de código Para contornar isso, Java oferece um segundo mecanismo para representar objetos abstratos: as classes abstratas

Classes abstratas - sintaxe Uma classe abstrata é declarada com a palavra-chave abstract acompanhando class: abstract class FiguraPt { int x; int y; public void mover(int dx, int dy) { x += dx; y += dy; public abstract void desenhar(canvas c); public abstract void escala(double f); public abstract boolean dentro(int x, int y);

Classes abstratas métodos abstratos Uma classe abstrata pode ter campos e métodos, como qualquer outra classe, mas não podemos instanciar uma classe abstrata, não importa se ela tem construtores públicos Em troca, podemos declarar métodos sem corpo, do mesmo modo que em uma interface, basta declará-los como abstract também Podemos até implementar uma interface, e deixar métodos em aberto, sem declará-los! É como se os declarássemos abstract também. abstract class FiguraPt implements Figura { int x, y; public void mover(int dx, int dy) { x += dx; y += dy;

Usando classes abstratas - herança Se não podemos instanciar uma classe abstrata diretamente, para ter instâncias dela criamos uma classe concreta que herda da classe abstrata class Retangulo extends FiguraPt { int largura; int altura; public Retangulo(int x, int y, int largura, int altura) { this.x = x; this.y = y; this.largura = largura; this.altura = altura; public boolean dentro(int x, int y) { return (x >= this.x)&&(x <= this.x + largura)&&(y >= this.y)&&(y <= this.y + altura); public void escala(double f) { altura *= f; largura *= f; public void desenhar(canvas c) { c.retangulo(x, y, largura, altura, 1, 1, 1);

Herança A relação de herança (extends), como implements, também é uma relação éum Uma instância de Retangulo é uma instância de FiguraPt As relações é um são transitivas: uma instância de Retangulo é uma instância de FiguraPt (via herança), e uma instância de FiguraPt é uma instância de Figura (via implements), então uma instância de Retangulo é uma instância de Figura A diferença da herança é que nela a classe também herda a forma da outra, e quaisquer implementações de suas operações, não apenas as assinaturas

Herança - restrições Uma classe concreta precisa fornecer implementações para todos os métodos abstratos que ela herdou Como uma classe abstrata pode ela própria ter herdado métodos, essa obrigação é transitiva Uma classe pode implementar quantas interfaces ela quiser, mas só pode herdar de uma única outra classe Construtores não são herados diretamente