Programação Orientada por Objetos



Documentos relacionados
Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

3 Classes e instanciação de objectos (em Java)

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Programação por Objectos. Java

Orientação a Objetos com Java

Herança. Alberto Costa Neto DComp - UFS

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

UML Aspectos de projetos em Diagramas de classes

public void setdata(data d) { data = d;

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

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

Encapsulamento de Dados

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

Orientação a Objetos

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Análise de Programação

Java 2 Standard Edition Como criar classes e objetos

Prof. Jhonatan Fernando

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

Módulo 06 Desenho de Classes

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Programação Orientada a Objetos. Encapsulamento

Tópicos em Engenharia de Computação

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

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

BSI UFRPE Prof. Gustavo Callou

Programação Orientada a Objetos em Java

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

Reuso com Herança a e Composiçã

5 Caso de estudo O cartão fidelidade

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language)

Programação Orientada a Objetos (DPADF 0063)

Java TM e o Modelo de Objetos

Capítulo 3. Programação por objectos em Java

Introdução a Java. Hélder Nunes

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

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

UNIVERSIDADE FEDERAL DO PARANÁ

Análise e Projeto Orientados por Objetos

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Capítulo 8. Introdução UML

Linguagem de Programação III

Implementando uma Classe e Criando Objetos a partir dela

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

4.2. UML Diagramas de classes

Programação por Objectos. Java

Implementação de Classe e Auto-Relacionamento em Java

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

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

Objetivo do programa: Implementação de um analisador de Logs do Servidor Web com base nos requisitos da unidade curricular de Estatística.

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Programação com Acesso a BD. Programação com OO Acesso em Java

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Noções sobre Objetos e Classes

Guia de Fatores de Qualidade de OO e Java

BC0505 Processamento da Informação

Unidade IV: Ponteiros, Referências e Arrays

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

Classes Abstratas e Interfaces

Capítulo 5 Reuso de Classes

Sumário. Uma visão mais clara da UML

Orientação a Objetos e a Linguagem Java

Técnicas de Programação II

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Algoritmos e Programação II. Sobrecarga

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Computação II Orientação a Objetos

Java. Marcio de Carvalho Victorino

Capítulo 4. Packages e interfaces

Desenho e Modelação de Esquemas de Bases de Dados

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

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

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Interfaces. Interfaces: Exemplo. ! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações

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

Rafael Santos. Instituto Nacional de Pesquisas Espaciais rafael.santos. Rafael Santos - rafael.

Padrão Básico de Projeto: Interfaces e Polimorfismo

Programação Orientada a Objeto

Classes, Superclasses e Subclasses

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

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

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Templates e Pilhas. 1. Introdução

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

ProgramaTchê Programação OO com PHP

Lição 9 Trabalhando com bibliotecas de classes

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

DEFINIÇÃO DE MÉTODOS

Transcrição:

PPROG Paradigmas da Programação Programação Orientada por Objetos Relações entre Dependência Agregação Composição Associação (Livro Big Java, Late Objects Capítulo 12) Nelson Freire (ISEP DEI-PPROG 2014/15) 1/16

Sumário Interesse Geral Tipos mais Comuns Herança Dependência Agregação Composição Associação Herança de Dependência de Agregação de Composição de Implementação Composição de Classe Agregadora Permite Referências Partilhadas de Objetos Agregados Não permite Referências Partilhadas de Objetos Agregados Associação de Nelson Freire (ISEP DEI-PPROG 2014/15) 2/16

Reutilização de Código Redução do esforço de programação redução de custos de produção de software Uma das vantagens da POO Como? Interesse Geral das Relações entre Programa novo obtido programando Não todo o programa Apenas uma pequena parte nova sobre código existente (reutilização) Código Novo Código Existente Programa Novo Concretamente Construção de classes novas a partir de classes existentes ie., relacionando classes Objetos de uma classe usam serviços fornecidos por objetos da outra Nelson Freire (ISEP DEI-PPROG 2014/15) 3/16

Tipos de Relações entre Mais Comuns Herança Dependência Agregação Composição Associação Nelson Freire (ISEP DEI-PPROG 2014/15) 4/16

Conhecida Indica Relação do tipo é-um // ou é-uma Uma classe é uma especialização/generalização de outra classe Notação UML Relação de Herança 1/2 Subclasse Superclasse Nelson Freire (ISEP DEI-PPROG 2014/15) 5/16

Indica Relação de Dependência Uma classe depende de outra classe // ie., usa objetos de outra classe (classe independente) Normalmente, indica uma dependência fraca Objetos da classe independente usados temporariamente Classe independente em declarações de Variáveis locais Parâmetros de métodos Existência durante execução de método (ie., temporária) Notação UML Classe Dependente Classe independente Conhecida Relação knows about ( sabe sobre ou conhece ) Classe TesteAutomovel sabe que há objetos Automovel (conhece a classe Automovel) mas classe Automovel desconhece a classe TesteAutomovel. Interesse Particular Alertar que modificação da classe independente afeta a classe dependente Nelson Freire (ISEP DEI-PPROG 2014/15) 6/16

Conhecida Relação de Agregação Indica Relação do tipo tem-um // ou tem-uma ou é-parte-de Objeto de uma classe contém (ie., agrega) um objeto de outra classe e o objeto agregado tem existência independente do objeto agregador. ie., objeto agregado pode existir após eliminação do objeto agregador ie., objeto agregado não pertence ao objeto agregador Notação UML: Classe Agregadora Classe Agregada Classe Agregada faz parte da estrutura da Classe Agregadora Objeto agregado é parte do objeto agregador guardado em variável de instância classe agregada usada na declaração de variável de instância Relação de Dependência Forte Uma classe usa objeto de outra classe // relação de dependência na estrutura da classe/objeto // forte Relação de Agregação Fraca Objeto agregado não pertence ao objeto agregador Objeto agregador tem referência partilhada do objeto agregado. Nelson Freire (ISEP DEI-PPROG 2014/15) 7/16

Relação de Agregação Forte Relação de Composição Objeto de uma classe contém (ie., agrega) um objeto de outra classe e o objeto agregado tem existência dependente do objeto agregador. ie., objeto agregado não pode existir após eliminação do objeto agregador ie., pertence ao objeto agregador Notação UML Classe Agregadora ou Classe Composta Classe Agregada Objeto Agregado Pertence ao objeto agregador não tem referência partilhada Nelson Freire (ISEP DEI-PPROG 2014/15) 8/16

Distinguir Tipos de Agregadas Mutáveis Criam instâncias mutáveis, ie, com conteúdos modificáveis (usando set) Imutáveis Criam instâncias imutáveis, ie., com conteúdos não modificáveis Não disponibilizam métodos de modificação (set) s String, Integer, Double, Float Se Classe Agregada é Mutável Classe agregadora Não permite partilha de referências dos objetos agregados (objetos mutáveis) Usa a clonagem (cópia exata) de instâncias Se Classe Agregada é Imutável Comportamento de objetos imutáveis com referências partilhadas Como pertencentes apenas à classe agregadora Igual ao de objetos mutáveis sem partilha de referências Classe Agregadora Implementação da Composição Permite a partilha de referências dos objetos agregados (objetos imutáveis) Nelson Freire (ISEP DEI-PPROG 2014/15) 9/16

Classe Agregadora permite Referências Partilhadas de Objetos Agregados 1/3 Aplicação Agregação: usada em classes agregadas mutáveis e imutáveis Composição: usada apenas em classes agregadas imutáveis public class Demo { private Data data; // classe Data agregada à classe Demo (objeto Demo tem uma Data) // objetos Data caracterizados por ano, mês e dia // referência guardada pode ser partilhada com variável fora de obj public Demo(, Data data ){ // parâmetro data recebe cópia da referência de um objeto data this.data = data ; // data guarda a referência recebida // referência pode ser partilhada com variável fora de objeto Demo public Data getdata() { return this.data; // retorna referência guardada em data // permite partilha da referência retornada referência de data public void setdata( Data data ) { this.data = data; // data guarda referência recebida // referência pode ser partilhada com variável fora de objeto Demo public String tostring() { return + " Data: " + this.data; Nelson Freire (ISEP DEI-PPROG 2014/15) 10/16

Classe Agregadora permite Referências Partilhadas de Objetos Agregados 2/3 public class Demo { private Data data; public Demo(, Data data ){ this.data = data ; public Data getdata() { return this.data; public void setdata( Data data ) { this.data = data; Parâmetro data Objeto da Classe Data Modelo de Memória RAM (Tempo de Execução - RunTime) data referência referência ano mes dia Nelson Freire (ISEP DEI-PPROG 2014/15) 11/16

Classe Agregadora permite Referências Partilhadas de Objetos Agregados 3/3 Dados de objetos Demo partilhados public class TesteDemo { public static void main( String[ ] args ) { Data d = new Data(2010, 1, 1); Modelo de Memória RAM (em Execução) d referência Demo demo1 = new Demo(, d ); System.out.println( demo1.getdata() ); //2010-1-1 Demo demo2 = new Demo(, d ); System.out.println( demo2.getdata() ); //2010-1-1 d.setdata(2012, 2, 2); // modifica demo1 e demo2 System.out.println( demo1.getdata() ); // 2010-2-2 data de demo1 data de demo2 Objeto da Classe Data referência referência 2010 1 1 System.out.println( demo2.getdata() ); // 2010-2-2 2010 1 2012 2 1 2 Modificação da data d Nelson Freire (ISEP DEI-PPROG 2014/15) 12/16

Classe Agregadora não permite Referências Partilhadas de Objetos Agregados 1/3 Aplicação Composição: em classes mutáveis public class Demo { private Data data; // guarda referência não partilhada com variável fora de objeto Demo public Demo(, Data data ){ this.data = new Data( data ); // construtor de cópia da classe Data // cria objeto clone do objeto data recebido // data e data são 2 objetos iguais // data guarda nova referência de Data public Data getdata() { return new Data( this.data ); // retorna referência de novo objeto Data, clone de data // não retorna referência guardada em data // mantém referência não partilhada em data public void setdata( Data data ){ this.data.setdata( data.getano(), // setdata da classe Data modifica apenas conteúdo da data data.getmes(), // não cria novo objeto Data em cada modificação data.getdia() ); // poupa memória // mantém referência não partilhada em data public String tostring(){ return + " Data:" + this.data; Nelson Freire (ISEP DEI-PPROG 2014/15) 13/16

Classe Agregadora não permite Referências Partilhadas de Objetos Agregados 2/3 public class Demo { private Data data; public Demo(, Data data ){ this. data = new Data( data ); public Data getdata() { return new Data( this.data ); public void setdataregisto( Data data ) { data.setdata(data.getano(), data.getmes(), data.getdia() ); Modelo de Memória RAM (Tempo de Execução) Parâmetro data Objecto de Data Objecto de Data data referência X referência Y ano 1 mes 1 dia 1 ano 2 mes 2 dia 2 Nelson Freire (ISEP DEI-PPROG 2014/15) 14/16

Classe Agregadora não permite Referências Partilhadas de Objetos Agregados Modelo de Memória RAM (em Execução) 3/3 Dados de objetos Demo não partilhados public class TesteDemo { public static void main( String[ ] args ) { Data d = new Data(2010, 1, 1); Demo demo1 = new Demo(, d ); System.out.println( demo1.getdata() ); // 2010-1-1 Demo demo2 = new Demo (, d ); System.out.println( demo2.getdata() ); // 2010-1-1 (**) d.setdata(2012, 2, 2); System.out.println( demo1.getdata() ); // 2010-1-1 System.out.println( demo2.getdata() ); // 2010-1-1 // --------------------------------------------------------------------- d = demo1.getdata(); // não modifica demo2 d.setdata(1998,5,5); // não modifica demos 1 e 2 d data de demo1 data de demo2 Objecto de Data Objecto de Data Objecto de Data (em **) referência referência referência 2010 1 1 2010 1 1 2012 2 2 Nelson Freire (ISEP DEI-PPROG 2014/15) 15/16

Indica Relação de Associação Alguma ligação relevante entre instâncias das classes Navegação de um objeto de uma classe para outro objeto da outra classe Notação UML Relação Mais genérica que as relações de agregação e composição Relação de associação fraca (significado vago) Identificada Numa fase inicial da análise e desenho Na descoberta de dependências genéricas entre abstrações Refinada frequentemente Numa relação mais concreta (agregação ou composição) Numa fase mais avançada da análise Nelson Freire (ISEP DEI-PPROG 2014/15) 16/16