Sie sind auf Seite 1von 22

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).

Prof. Robinson Vida Noronha


Tema: Relacionamento entre Classes

RELACIONAMENTOS ENTRE CLASSES


Contedo

Introduo...........................................................................................................2
Tipos de Relacionamentos .................................................................................3
O Relacionamento de Dependncia ( precisa de ).......................................5
O Relacionamento de Generalizao ( um tipo de ) ..................................6
O Relacionamento de Associao......................................................................9
Multiplicidade. ..............................................................................................12
Quadro 4 a) Cdigo C++ e Java do Exemplo da Figura 8 a) ..................13
Quadro 4 b) Cdigo C++ e Java do Exemplo da Figura 8 b)..................14
Relaes Unidirecionais de Associao........................................................14
Quadro 5 Cdigo C++ e Java do Exemplo da Figura 9 .........................15
Composio ( ...pertence exclusivamente a ... )
.............................16
Quadro 6 Cdigos C++ e Java do Exemplo da Figura 10.......................17
Propriedades Da Relao .................................................................................17
Dicas .................................................................................................................19
Resumo.............................................................................................................20
Exerccio:..........................................................................................................21
Referncia Bilbiogrfica Utilizada...................................................................22

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

RELACIONAMENTOS ENTRE CLASSES


Introduo
Classes so representaes de elementos, conceitos, idias, grupo de
objetos ou qualquer outra entidade conhecida. Para o engenheiro, Classes so
peas de um quebra-cabea, ou engrenagens. Essas peas devem ser juntadas
ou associadas de tal forma a solucionar uma questo ou problema.
Outra forma de visualizar Classes imaginar que elas definem um
vocabulrio bsico. Esses elementos do vocabulrio, por sua vez, necessitam ser
estruturados ou relacionados de tal forma a representar uma ou mais idias.
Podendo as Classes serem consideradas engrenagens ou peas de um
quebra-cabea, uma questo surge naturalmente: Como essas peas poderiam
ser relacionadas?
Este material procura descrever, de maneira reduzida, como as classes
podem ser relacionadas. O que apresentado no um conjunto de regras que
busque delimitar a criatividade do engenheiro, mas sim, orientaes ou
recomendaes.
Nesse contexto, analisam-se relacionamentos entre duas classes. Apesar
dessa limitao, os conceitos apresentados neste material podem ser aplicados
para definir relacionamentos entre trs ou mais classes.
Este material utiliza a linguagem UML e cdigos C++ e Java para
representar os relacionamentos entre as classes. Os exemplo foram produzidos
na ferramenta ArgoUML.
De maneira geral, espera-se desenvolver no aluno a habilidade de ser
capaz de traduzir uma representao grfica de um modelo para uma linguagem
de programao.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

Tipos de Relacionamentos
Os relacionamentos que duas ou mais classes podem ter so:

Dependncia

Generalizao

Associao

Se desejarmos desmontar um automvel, por exemplo, verificaremos que


ele formado por peas que apresentam relaes muito definidas. O automvel
possui: motor, rodas, banco, volante e diversas outras engrenagens. Esses
elementos, associados ou conectados de maneira correta, permitem a existncia e
o correto funcionamento do automvel.
So alguns exemplos de relacionamento entre as peas com compe um
automvel:

Dependncia: Motor depende de Bomba de Gasolina para bombear a


gasolina para o seu interior.

Generalizao: Filtro de Ar, Filtro de leo e Filtro de Combustvel so tipos


especficos de Filtro.

Associao: Pneus, Rodas, Amortecedores e Freios compe a Suspenso do


Automvel.

A representao grfica do tipo de associao entre duas classes, por


exemplo, feita com alguns elementos especficos. As Figuras 1, 2 e 3,
respectivamente,

representam

graficamente

relao

de

Dependncia,

Generalizao e Associao entre duas classe C1 e C2.


Na Figura 1, utiliza-se uma reta tracejada com terminal em seta para indicar
a relao de Dependncia. Na Figura 2, uma reta no tracejada com terminal em
tringulo representa a Generalizao. Finalmente, na Figura 3, uma reta, sem
terminao representa o relacionamento de Associao.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

Figura 1- Representao de Dependncia

Figura 2-Relao de Generalizao

Figura 3-Relao de Associao

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

O Relacionamento de Dependncia ( precisa de )


Duas classes possuem um relacionamento de Dependncia quando uma
alterao em uma dessas classes poder afetar a outra classe. O inverso no
verdade. Nesse contexto, diz-se que uma classe utiliza a outra como argumento
em sua assinatura.
Representa-se uma relao de Dependncia apontando de uma classe que
possui um mtodo ou operao para a classe que utlizada como um parmetro
para essa operao.
Por exemplo, na Figura 4, as classes DVD-PLAYER e DVD-MIDIA
apresentam um relacionamento de dependncia. A assinatura do mtodo play da
classe DVD-PLAYER recebe como parmetro um objeto ou instncia da classe
DVD-MIDIA. Nesse exemplo da Figura 4, esse objeto rotulado por filme. O
sentido da seta indica quem depende de quem.

Figura 4-Exemplo de Dependncia

No quadro a seguir, as duas classes e seu relacionamento representadas


na Figura 4 so codificadas ou traduzidas para as linguagens C++ (arquivos .cpp
e .h) e Java (arquivo .java). Esse cdigo gerado representado nos arquivos .h
e .cpp dessas duas classes.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

Quadro 1 Cdigo C++ e Java do Exemplo da Figura 4

DVD-PLAYER

.h

DVD-MIDIA

#ifndef DVD-PLAYER_h

#ifndef DVD-MIDIA_h

#define DVD-PLAYER_h

#define DVD-MIDIA_h

#include "DVD-MIDIA.h"
class DVD-MIDIA {};
class DVD-PLAYER {
public:

#endif // DVD-MIDIA_h

void play(DVD-MIDIA filme);


};

#endif // DVD-PLAYER_h

.cpp

#include "DVD-PLAYER.h"

#include "DVD-MIDIA.h"

void DVD-PLAYER::play(DVD-MIDIA
filme)
{

.java

public class DVD-PLAYER

public class DVD-MIDIA {

}
public play(DVD-MIDIA filme)
{

O relacionamento de Dependncia caracterizado quando uma operao


precisa de uma outra classe para ser executada. O seu significado semntico
precisa de.

O Relacionamento de Generalizao ( um tipo de )


Duas classes possuem um relacionamento de Generalizao quando uma
das classes especializa ou detalha a outra. A classe genrica denominada de
SuperClasse ou Classe Pai e a outra classe de SubClasse ou classe Filha.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

A relao de Generalizao identificada por meio do texto um. Na


Figura 5, a seguir, simplifica-se um modelo genrico de generalizao. Nesse
exemplo, a seta terminadora aponta sempre para a classe mais genrica.

Figura 5 -Relacionamento de Generalizao

O Quadro 2 apresenta os arquivos gerados para as classes C1 e C2 da


Figura 5. Destaca-se que no cdigo de definio da classe C2, informa-se de
maneira explicita qual a classe Pai. Na linguagem C++ isso feito por meio do
caracter :, da forma de acesso (public nesse caso) e do nome da classe
genrica. Por outro lado, na linguagem Java, utiliza-se apenas a palavra reservada
extends seguida do nome da classe genrica ou classe-pai.
Quadro 2 Cdigo C++ e Java do Exemplo da Figura 6

C1

.h

C2

#ifndef C1_h

#ifndef C2_h

#define C1_h

#define C2_h

#include "C1.h"
class C1 {};

#endif // C1_h

class C2 : public C1 {};


#endif // C2_h

.cpp

#include "C1.h"

#include "C2.h"

.java

public class C1 { }

public class C2 extends C1 { }

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

Como outro exemplo de generalizao, a Figura 6 a seguir, trs classes so


representadas:

Pessoa,

Engenheiro

Musico.

Nessa

representao,

generalizao permite dizer Engenheiro um(a) Pessoa e Musico um(a)


Pessoa. Ou seja, os objetos do mundo real representados pela classe Engenheiro
e pela classe Pessoa, possuem algumas caractersticas comuns ( atributos e
mtodo ). Essas caractersticas comuns so os atributos e mtodos da classe
Pessoa.

Figura 5-Exemplo de Generalizao

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

O Relacionamento de Associao
Uma Associao uma relao estrutural. Ou seja, ela informa que uma
classe faz parte da estrutura de outra. Por exemplo: o Motor faz parte da classe
Automvel, um empregado est associado a uma empresa ou um msico est
associado a uma banda. Definida uma Associao entre duas classes, conforme
mostrado na Figura 3, pode-se navegar de um objeto de uma classe para a outra
e vice e versa.
O Relacionamento de Associao ainda pode ser subdivido em:

Plana : representa uma relao estrutural onde as classes possuem a


mesma importncia. Uma linha ligando duas classes representa
graficamente

essa

relao.

Figura

ilustra

esse

tipo

de

relacionamento.

Agregao: representa a estrutura todo-parte. Ela representada por


uma linha ligando as duas classes da relao e a presena de um
smbolo diamante (losango). A figura de um diamante colocado na
coneco entre a linha e a classe que considerada a mais importante
da relao.
Esse diamante pode ser aberto ou escuro, a saber:

: Se aberto, tem-se Agregao Simples.

:Se

escuro,

tm-se

Agregao

por

Composio,

ou

simplesmente Composio. Essa relao ser explicada em uma


seo especfica deste material.

Uma Associao pode tambm ter um nome ou rtulo. Nesse caso, esse
nome deve representar a natureza da relao. As Figuras 7a) e b) exemplificam
isso. A Figura 7a) representa a relao Saxofonista toca_com Baterista. Essas
duas classes so igualmente importantes. Nesse exemplo, tanto a classe Baterista
quanto a classe Saxofonista possuem a mesma importncia.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

10

A Figura 7b) representa que Musico toca_em Orquestra. Nesse contexto,


deseja-se destacar que a classe Orquestra mais importante ou maior que a
classe Msico.
Os Quadros 3a) e 3b), apresentam respectivamente os cdigos Java e C++
dessas classes representadas respectivamente nas Figuras 7a) e 7b).

a) Plana Bidirecional

b) Agregao Bidirecional

Figura 6-Exemplo de Associao

Quadro 3a) Cdigos C++ e Java do Exemplo da Figura 7a)

Saxofonista

.h

Baterista

#ifndef Saxofonista_h

#ifndef Baterista_h

#define Saxofonista_h

#define Baterista_h

class Baterista;

class Saxofonista;

class Saxofonista {

class Baterista {

public:

public:

Baterista *toca_com;

Saxofonista *toca_com;

};

};

#endif // Saxofonista_h

#endif // Baterista_h

.cpp

#include "Saxofonista.h"

#include "Baterista.h"

.java

import java.util.Vector;

import java.util.Vector;

public class Saxofonista

public class Baterista

{
public Vector

toca_com;

public Vector
}

toca_com;

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

11

Quadro 3b) Cdigos C++ e Java do Exemplo da Figura 7b)

Musico

.h

Orquestra

#ifndef Musico_h

#ifndef Orquestra_h

#define Musico_h

#define Orquestra_h

class Orquestra;

class Musico;

class Musico {

class Orquestra {

public:

public:

Orquestra *toca_em;

Musico*

toca_em;

};

};

#endif // Musico_h

#endif // Orquestra_h

.cpp

#include "Musico.h"

#include "Orquestra.h"

.java

import java.util.Vector;

import java.util.Vector;

public class Musico

public class Orquestra

{
public Vector

toca_em;

public Vector

toca_em;

Nos quadros 3 a) e b), pode-se observar a referncia cruzada entre as duas


classes da relao. A classe Baterista possui uma referncia para a classe
Saxofonista e vice e versa no Quadro 3a). A classe Musico possui uma referencia
para a classe Orquestra e vice e versa.
Por padro, a relao de Associao bidirecional. Apesar disso, pode-se
tambm definir relaes de Associao unidirecional.
O que significa ser bidirecional? No exemplo apresentado na Figura 3a),
significa que a classe Saxofonista tem registrado com quem o saxofonista toca e

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

12

que o mesmo acontece com a classe Baterista. A classe Baterista tambm tem
registrado com quem ele toca.
Destaca-se aqui, que a simples inspeo dos cdigos produzidos nas
linguagens C++ e Java no permite identificar o lado do losango nem se ele est
presente na associao.
Multiplicidade.
A relao de Associao pode tambm informar a quantidade de elementos
que so necessrios para a estrutura. Por exemplo, A Figura 8a) registra que um
Baterista toca com um ou mais saxofonistas. Por sua vez, essa figura tambm
representa que um saxofonista toca apenas com um nico baterista.
A Figura 8b) que uma Orquestra formada por nenhum ou vrios msicos
e que um Musico obrigatoriamente toca_em uma Orquestra.

a) Plana

b) Agregao

Figura 7-Exemplo de Associao com Multiplicidade

No Quadro 4a), observa-se que a classe Baterista armazena em um vetor (


std::Vector < Saxofonista * > ) ponteiros para elementos da classe
Saxofonistas que esto associados a ela.
No Quadro 4 b), a representao similar ao Quadro 4 a). A classe mais
importante semanticamente falando, possui um vetor de ponteiros que indicam
quem so os elementos que esto associados a ela.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

13

Caso seja necessrio especificar uma quantidade mnima diferente de um,


s informar. Por exemplo, pode-se especificar que a relao deve ser delimitada
entre 4 e 8 integrantes. Nesse caso, ao invs de registrar 1..*, seria 4..8.
Quadro 4 a) Cdigo C++ e Java do Exemplo da Figura 8 a)

Saxofonista

.h

Baterista

#ifndef Saxofonista_h

#ifndef Baterista_h

#define Saxofonista_h

#define Baterista_h

class Baterista;

#include <vector>

class Saxofonista {
class Saxofonista;
public:
class Baterista {
Baterista *toca_com;
};

public:

#endif // Saxofonista_h
std::vector< Saxofonista* > toca_com;
};

#endif // Baterista_h

.cpp

#include "Saxofonista.h"

#include "Baterista.h"

.java

public class Saxofonista

import java.util.Vector;

{
public Baterista toca_com;

public class Baterista

{
public Vector
}

toca_com;

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

14

Quadro 4 b) Cdigo C++ e Java do Exemplo da Figura 8 b)

Musico

.h

Orquestra

#ifndef Musico_h

#ifndef Orquestra_h

#define Musico_h

#define Orquestra_h
#include <vector>

class Orquestra;
class Musico;
class Musico {
class Orquestra {
public:
public:
Orquestra *toca_em;
std::vector< Musico* > toca_em;

};
};
#endif // Musico_h

#endif // Orquestra_h

.cpp

#include "Musico.h"

#include "Orquestra.h"
import java.util.Vector;

.java
public class Musico
{
public Orquestra toca_em;

public class Orquestra


{

public Vector

toca_em;

Relaes Unidirecionais de Associao


As relaes de Associao apresentadas at o presente momento so
bidirecionais. Ou seja, todas as classes que participam da relao tem a
conscincia disso.
Em algumas situaes, pode-se desejar que uma das classes que participa
da relao no tenha conscincia disso. Nesses casos, tm-se uma relao
Unidirecional.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

15

A representao grfica da relao Unidirecional consiste em utilizar um


terminador seta apontando para a classe que deve desconhecer a relao. A
Figura 9, a seguir representa essa possibilidade.

Figura 8-Exemplo de Relao Unidirecional

No exemplo da Figura 9, a classe Aluno desconhece a relao que a classe


Curso tem com ela. O quadro 5, a seguir, apresenta o correspondente cdigo
dessa relao.
Nos cdigos do Quadro 5, o arquivo Aluno.h no possui referncia alguma
da classe Curso. Por outro lado, a classe Curso possui em seu cdigo, referncias
classe Aluno.
Quadro 5 Cdigo C++ e Java do Exemplo da Figura 9

Aluno

.h

Curso

#ifndef Aluno_h

#ifndef Curso_h

#define Aluno_h

#define Curso_h

class Aluno;
class Aluno {
class Curso {
public:

};

Aluno *myAluno;
#endif // Aluno_h

};
#endif // Curso_h

.cpp

#include "Aluno.h"

#include "Curso.h"

.java

public class Aluno

import java.util.Vector;

public class Curso

public Vector

myAluno; }

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

16

Composio ( ...pertence exclusivamente a ... )


A Agregao Simples possui uma variante, a Composio. Essa variao
adiciona um grau de importncia semntica relao. Ela define a relao de
posse ou possesso. Isso significa que um objeto da classe pertence apenas e
exclusivamente ao objeto da outra classe.
Como a classe mais importante (ou todo) responsvel pela disposio das
partes. Isso significa que ela precisa gerenciar a criao e destruio das partes
que a compe.
Por

exemplo,

na

Figura

10,

seguir,

representa-se

classe

TabuleiroDeXadrez que deve conter instncias da classe Casa. A classe Casas,


que pode ter o atributo cor como sendo preta ou branca, compe um Tabuleiro
de Xadrez. Mais especificamente, um tabuleiro de Xadrez formado, composto
por 32 casas pretas e 32 casas brancas.

Figura 9-Exemplo de Relacionamento de Composio

No Quadro 6, os respectivos cdigos das classes da Figura 10 so


apresentados. Destaca-se nesse relacionamento, a inexistncia de ponteiro na
classe TabuleiroDeXadrez. Como os elementos da classe Casa compe apenas a
classe TabuleiroDeXadrez e existem apenas com essa principal finalidade, no h
a necessidade de ponteiro. A classe TabeuleiroDeXadrez dever instanciar os 64
elementos dessa classe.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

17

Quadro 6 Cdigos C++ e Java do Exemplo da Figura 10

TabuleiroDeXadrez

.h

Casa

#ifndef TabuleiroDeXadrez_h

#ifndef Casas_h

#define TabuleiroDeXadrez_h

#define Casas_h

#include "Casa.h"

class TabuleiroDeXadrez;

class Casa {
class TabuleiroDeXadrez {
public:
public:
TabuleiroDeXadrez *contem;
Casa contem[64];

};

};
#endif // Casa_h
#endif // TabuleiroDeXadrez_h

.cpp

#include "TabuleiroDeXadrez.h"

#include "Curso.h"

.java

public class TabuleiroDeXadrez

public class Casa

{ TabuleiroDeXadrez contem; }

Casas contem = new Casa[64]; }

De maneira similar aos outros relacionamentos, a Composio tambm


pode ser unidirecional. Nesse caso, a classe que desconhece a relao nofaz
referncia ela em seu cdigo.

Propriedades Da Relao
Em algumas situaes, a relao entre duas classes possui propriedades.
Por exemplo, a relao entre a classe Paciente e AgendaDoMdico a Consulta.
Essa classe s existe para representar as propriedades da relao entre as duas
classes Paciente e AgendoDoMedico.
Nesses casos, representa-se em UML as trs classes, conforme
exemplifica a Figura 11 a seguir.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

18

Figura 10-Classe Propriedades da Relao

A classe que dever registrar as propriedades da relao tem uma ligao


pontilhada com as classes da relao.
O Quadro 7 apresenta o cdigo C++ de cada uma das classes genricas
ilustradas na Figura 11. Destaca-se nesse quadro que as classes da relao C1 e
C2 devem registrar por meio de ponteiros qual a classe que registra os detalhes
da relao.
A classe que detalha a relao, PropriedadesDaRelacao, neste caso,
registra quais so as classes detalhadas sem o uso de ponteiros.
Quadro 7 Cdigo C++ do Exemplo da Figura 11

Classe \ cdigo
C1

.h
#ifndef C1_h
#define C1_h

class PropriedadesDaRelacao;

class C1 {

public:

PropriedadesDaRelacao
*PropriedadesDaRelacaoAssoc;
};

#endif // C1_h

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

PropriedadesDaRelacao

#ifndef PropriedadesDaRelacao_h
#define PropriedadesDaRelacao_h

#include "C1.h"
#include "C2.h"

class PropriedadesDaRelacao {
public:
C1 myC1;
C2 myC2;
};

#endif // PropriedadesDaRelacao_h

#ifndef C2_h

C2

#define C2_h

class PropriedadesDaRelacao;

class C2 {
public:
PropriedadesDaRelacao
*PropriedadesDaRelacaoAssoc;
};

#endif // C2_h

Dicas
Ao modelar relaes em UML:

Utilize Dependncias apenas quando o relacionamento modelado no for


estrutural.

Utilize Generalizao apenas quando voce conseguir ter um um tipo de


entre as classes representadas.

19

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

20

Cuidado com a generalizao cclica. Generalizao cclica quando um ciclo


fechado definido entre classes que se relacionam pela Generalizao.

Utilize Associao primeiramente quando houver uma relao estrutural entre


os objetos.

Resumo.
Programar de maneira orientada a objetos, consiste, entre outras coisas,
definir classes e seus relacionamentos. Classes se relacionam com outras
Classes com a finalidade de representar objetos e sistemas do mundo real.
Em resumo, os relacionamentos apresentados neste material so:

Relacionamento
Dependncia

Smbolo

Significado
A classe C1 depende da
classe C2 para executar
alguma tarefa.
Pode-se dizer que:
C1 precisa de C2.

Generalizao ou

A classe C1 dita filha da

Herana

classe C2. A classe C1 possui


toda a estrutura da classe C2.
Pode-se dizer:
C1 um tipo de C2 .

Associao Plana

As classes C1 e C2 so
igualmente importantes e so
associadas de maneira
estrutural para representar
uma idia, conceito ou um
todo.

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

21

As classes C1 e C2

Agregao Simples

representam uma relao


estrutural. C1 e C2 no so
igualmente importantes.
O diamante indica qual a
classe mais importante da
relao.
As classes C1 e C2

Composio

apresentam uma relao


estrutural muito forte. C2 s
existe por causa de C1.
O diamante escuro indica
quem o mais importante da
relao.

Exerccio:
Booch et al [1] apresenta um diagrama de classe UML exemplo. A Figura
12 registra esse exemplo.

Figura 11- Diagrama de Classes (Booch et al, 1998)

UTFPR DAELN - Disciplina de Fundamentos de Programao II ( IF62C ).


Prof. Robinson Vida Noronha
Tema: Relacionamento entre Classes

22

Responda:
a) Qual a classe mais importante do Diagrama?
b) Que tipo de relao existe entre a classe School e Student?
c) Que tipo de relao existe entre a classe School e Department?
d) Que tipo de relao existe entre a classe Course e Instructor?
e) Quais as relaes existentes entre a classe Instructor e Department?
f) Como seria o cdigo .h da classe School ?
g) Como seria o cdigo .h da classe Department ?
h) Como seria o cdio .h da classe Course?
i) Descreva com suas palavras, como o autor definiu a relao entre as
classes.

Referncia Bilbiogrfica Utilizada


[1] Unified Modeling Language User Guide, The. Grady Booch, James Rumbaugh, Ivar

Jacobson. Publisher: Addison Wesley. First Edition October 20, 1998 ISBN: 0201-57168-4, 512 pages

Das könnte Ihnen auch gefallen