Beruflich Dokumente
Kultur Dokumente
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
Tipos de Relacionamentos
Os relacionamentos que duas ou mais classes podem ter so:
Dependncia
Generalizao
Associao
representam
graficamente
relao
de
Dependncia,
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
#endif // DVD-PLAYER_h
.cpp
#include "DVD-PLAYER.h"
#include "DVD-MIDIA.h"
void DVD-PLAYER::play(DVD-MIDIA
filme)
{
.java
}
public play(DVD-MIDIA filme)
{
C1
.h
C2
#ifndef C1_h
#ifndef C2_h
#define C1_h
#define C2_h
#include "C1.h"
class C1 {};
#endif // C1_h
.cpp
#include "C1.h"
#include "C2.h"
.java
public class C1 { }
Pessoa,
Engenheiro
Musico.
Nessa
representao,
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:
essa
relao.
Figura
ilustra
esse
tipo
de
relacionamento.
:Se
escuro,
tm-se
Agregao
por
Composio,
ou
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.
10
a) Plana Bidirecional
b) Agregao Bidirecional
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 Vector
toca_com;
public Vector
}
toca_com;
11
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 Vector
toca_em;
public Vector
toca_em;
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
13
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
import java.util.Vector;
{
public Baterista toca_com;
{
public Vector
}
toca_com;
14
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 Vector
toca_em;
15
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
import java.util.Vector;
public Vector
myAluno; }
16
exemplo,
na
Figura
10,
seguir,
representa-se
classe
17
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
{ TabuleiroDeXadrez contem; }
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.
18
Classe \ cdigo
C1
.h
#ifndef C1_h
#define C1_h
class PropriedadesDaRelacao;
class C1 {
public:
PropriedadesDaRelacao
*PropriedadesDaRelacaoAssoc;
};
#endif // C1_h
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:
19
20
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
Herana
Associao Plana
As classes C1 e C2 so
igualmente importantes e so
associadas de maneira
estrutural para representar
uma idia, conceito ou um
todo.
21
As classes C1 e C2
Agregao Simples
Composio
Exerccio:
Booch et al [1] apresenta um diagrama de classe UML exemplo. A Figura
12 registra esse exemplo.
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.
Jacobson. Publisher: Addison Wesley. First Edition October 20, 1998 ISBN: 0201-57168-4, 512 pages