Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Relações entre Classes: Herança, Agregação, Composição e Associação, Notas de aula de Paradigmas da Programação

Neste documento, nelson freire apresenta as principais relações entre classes em programação orientada por objetos (poo). Ele discute as dependências entre classes, como herança, agregação, composição e associação. Além disso, ele explica os tipos de relações entre classes e fornece exemplos e notação uml para ilustrar as ideias.

Tipologia: Notas de aula

2022

Compartilhado em 07/11/2022

PorDoSol
PorDoSol 🇧🇷

4.5

(272)

654 documentos

1 / 16

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Nelson Freire (ISEPDEI-PPROG 2015/16) 1/16
Programação Orientada por Objetos
Relações entre Classes
Dependência
Agregação
Composição
Associação
(Livro Big Java, Late Objects Capítulo 12)
Paradigmas da Programação
PPROG
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Relações entre Classes: Herança, Agregação, Composição e Associação e outras Notas de aula em PDF para Paradigmas da Programação, somente na Docsity!

Programação Orientada por Objetos

Relações entre Classes

Dependência

Agregação

Composição

Associação

(Livro Big Java, Late Objects – Capítulo 12)

Paradigmas da Programação

PPROG

 Interesse Geral

 Tipos mais Comuns

 Herança

 Dependência

 Agregação

 Composição

 Associação

 Herança de Classes

 Dependência de Classes

 Agregação de Classes

 Composição de Classes

 Implementação

 Composição de Classes

 Classe Agregadora

 Permite Referências Partilhadas de Objetos Agregados

 Não permite Referências Partilhadas de Objetos Agregados

 Associação de Classes

Sumário

Classes

 Mais Comuns

 Herança

 Dependência

 Agregação

 Composição

 Associação

Tipos de Relações entre Classes

Classes

 Conhecida

 Relação do tipo “é-um” // ou “é-uma”

 Indica

 Uma classe é uma especialização/generalização de outra classe

 Exemplo

 Notação UML

Relação de Herança

Classes

Subclasse Superclasse

 Conhecida

 Relação do tipo “ tem-um ” // ou “ tem-uma ” ou “ é-parte-de ”

 Indica

 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

 Exemplo

 Notação UML:

 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

Relação de Agregação

 Objeto agregador tem referência partilhada

do objeto agregado.

Classes

Classe Agregadora Classe Agregada

 Relação de Agregação Forte

 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

 Exemplo

 Notação UML

 Objeto Agregado

 Pertence ao objeto agregador  não tem referência partilhada

Relação de Composição

Classes

Classe Agregadora

ou

Classe Composta

Classe Agregada

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 get Data () {

return data ; // retorna referência guardada em data

} // permite partilha da referência retornada  referência de data

public void set Data ( 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: " + data ;

 Aplicação

 Agregação: usada em classes agregadas mutáveis e imutáveis

 Composição: usada apenas em classes agregadas imutáveis

 Exemplo

Classe Agregadora permite Referências Partilhadas de Objetos Agregados 1/

Classes

 Exemplo

referência

data

ano Objeto

da

Classe

Data

dia

Parâmetro data referência

Modelo de Memória RAM

(Tempo de Execução - RunTime )

mes

public class Demo {

private Data data ;

public Demo( ..., Data data ){

this. data = data ;

public Data get Data () {

return data ;

public void set Data ( Data data ) {

this. data = data;

Classes

Classe Agregadora permite Referências Partilhadas de Objetos Agregados

 Aplicação

 Composição: em classes mutáveis

 Exemplo

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 get Data () {

return new Data( 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 set Data( 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:" + data ;

Classe Agregadora não permite Referências Partilhadas de Objetos Agregados 1/

Classes

 Exemplo

referência Y

data

ano 1

Objecto

de

Data

dia 1

Parâmetro data referência X

Modelo de Memória RAM (Tempo de Execução)

mes 1

ano 2

Objecto

de

Data

mes 2

dia 2

public class Demo {

private Data data ;

public Demo( ..., Data data ){

this. data = new Data( data );

public Data get Data () {

return new Data( data ) ;

public void set DataRegisto ( Data data ) {

data. setData( data .getAno(),

data .getMes(),

data .getDia() ) ;

Classes

Classe Agregadora não permite Referências Partilhadas de Objetos Agregados

 Indica

 Alguma ligação relevante entre instâncias das classes

 Navegação de um objeto de uma classe para outro objeto da outra classe

 Exemplo

 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

Relação de Associação

Classes