16.04.2013 Views

Diagramas de Classes

Diagramas de Classes

Diagramas de Classes

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

UML: <strong>Diagramas</strong> <strong>de</strong> <strong>Classes</strong><br />

Desenho <strong>de</strong> Bases <strong>de</strong> Dados Relacionais com UML<br />

Fundamentos <strong>de</strong> Bases <strong>de</strong> Dados<br />

(FBD)<br />

Licenciatura em<br />

Engenharia <strong>de</strong> Telecomunicações e Informática (ETI)<br />

Autoria:<br />

Pedro Ramos, José Farinha<br />

Docente:<br />

José Farinha


Conceitos Básicos<br />

Associações<br />

<strong>Classes</strong> Associativas<br />

Agregações<br />

Composições<br />

Generalizações<br />

<strong>Diagramas</strong> <strong>de</strong> <strong>Classes</strong> UML<br />

Atributos vs. Associações<br />

N-para-1<br />

Índice<br />

Associações n-árias<br />

Associações singulares<br />

(uma classe)<br />

Relações <strong>de</strong> Dependência<br />

Roles<br />

Navegação<br />

Packages<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 2


Objectos<br />

Objecto: Qualquer coisa ou acontecimento do universo que queremos<br />

registar e que tem:<br />

– Uma i<strong>de</strong>ntificação<br />

• Valor que permite diferenciar o objecto <strong>de</strong> todos os outros<br />

– Um estado<br />

• Conjunto <strong>de</strong> valores que nos dão informação acerca das características do objecto<br />

– Comportamento<br />

• Conjunto <strong>de</strong> acções que o objecto sabe realizar<br />

Objecto: Cliente José Silva<br />

É distinto <strong>de</strong> todos os outros clientes da<br />

empresa pois tem o número 484848<br />

Tem o nome “José Silva”, morada “R. <strong>de</strong><br />

cima…”, nº contribuinte “8242424”, ...<br />

Operações: encomendar produto, pagar<br />

factura, alterar morada, ...<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 3


Objectos<br />

Não têm necessariamente que correspon<strong>de</strong>r a<br />

entida<strong>de</strong>s com representação física<br />

Um conceito abstracto (p.ex, um <strong>de</strong>partamento)<br />

po<strong>de</strong> ser um objecto, <strong>de</strong>s<strong>de</strong> que seja relevante para<br />

o domínio em causa.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 4


<strong>Classes</strong><br />

Classe: conjunto <strong>de</strong> objectos que partilham o mesmo<br />

meio <strong>de</strong> i<strong>de</strong>ntificação, proprieda<strong>de</strong>s <strong>de</strong> estado,<br />

comportamento, relações e semântica.<br />

Classe dos clientes<br />

Todos distintos uns dos outros<br />

Todos têm nome, morada, nº contribuinte, ...<br />

Todos estão aptos para realizar as mesmas acções:<br />

encomendar produto, pagar factura, alterar morada, ...<br />

Todos se relacionam com os mesmos tipos <strong>de</strong><br />

objectos (p.ex, com os produtos que adquirem).<br />

Representam a realida<strong>de</strong>s da mesma natureza (tem a<br />

mesma semântica)<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 5


Classe: Representação gráfica<br />

Classe dos clientes<br />

Cliente<br />

Nr. contribuinte<br />

Nome<br />

Morada<br />

Encomendar produto ( )<br />

Pagar factura ( )<br />

Mudar <strong>de</strong> morada ( )<br />

Nome (único no domínio)<br />

Atributos<br />

Operações<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 6


Atributos<br />

Um atributo numa classe representa uma<br />

característica típica dos objectos <strong>de</strong>ssa classe<br />

Po<strong>de</strong> assumir qualquer valor, se não houver mais<br />

nenhuma especificação relativamente ao atributo<br />

Po<strong>de</strong> especificar-se um tipo <strong>de</strong><br />

dados para um atributo<br />

– Neste caso, os valores que po<strong>de</strong>m<br />

ser atribuídos ao atributo estão<br />

condicionados à compatibilida<strong>de</strong><br />

com o tipo<br />

Factura<br />

Nr. Factura: Integer<br />

Data: Date<br />

Estado: String<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 7


Atributos: obrigatorieda<strong>de</strong> <strong>de</strong> preenchimento<br />

Em UML, um atributo é <strong>de</strong> preenchimento opcional:<br />

– Em cada novo objecto que seja criado, o dito atributo<br />

po<strong>de</strong>rá ser ou não preenchido.<br />

Em <strong>de</strong>senho <strong>de</strong> base <strong>de</strong> dados é importante<br />

i<strong>de</strong>ntificar a obrigatorieda<strong>de</strong> <strong>de</strong> preenchimento<br />

– Normalmente feito apenas sobre o mo<strong>de</strong>lo relacional<br />

– Se for consi<strong>de</strong>rado muito relevante colocar essa<br />

informação no diagrama <strong>de</strong> classes UML, indicar em<br />

caixa <strong>de</strong> comentário UML<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 8


Atributos: valor por omissão<br />

Em UML po<strong>de</strong> especificar-se um valor por omissão (<strong>de</strong>fault value)<br />

para um atributo<br />

Mais a<strong>de</strong>quado para aplicar em situações em que existe um valor<br />

inicial<br />

Segurado<br />

Nome<br />

Morada<br />

Tipo = “Limpo”<br />

Os novos segurados começam<br />

por não ter participações.<br />

Requisição<br />

Nr. requisição<br />

Data<br />

Estado = “Por aprovar”<br />

Uma requisição é criada por um<br />

subordinado e mais tar<strong>de</strong> aprovada<br />

pela chefia<br />

Jogo <strong>de</strong> futebol<br />

Data<br />

Golos visitado = 0<br />

Golos visitante = 0<br />

Neste caso, torna-se não<br />

necessário fornecer o número <strong>de</strong><br />

golos quando se cria o jogo.<br />

Não é muito a<strong>de</strong>quado para mo<strong>de</strong>lar o conceito <strong>de</strong> valor mais<br />

frequente<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 9


Atributos <strong>de</strong> i<strong>de</strong>ntificação 1<br />

Ao <strong>de</strong>finir os atributos <strong>de</strong> uma classe, <strong>de</strong>verá incluirse<br />

sempre um (ou mais) atributo(s) que possa(m)<br />

funcionar como mecanismo <strong>de</strong> i<strong>de</strong>ntificação dos<br />

objectos <strong>de</strong>ssa classe.<br />

Isto é, um (ou mais) atributo(s) para o(s) qual(is):<br />

– todos os objectos têm valor;<br />

– o valor nesse atributo (ou conjunto <strong>de</strong> atributos)<br />

garantidamente não se repete em quaisquer dois<br />

objectos.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 10


Atributos <strong>de</strong> i<strong>de</strong>ntificação 2<br />

Em certas classes, não se conseguem apurar atributos naturais para este efeito.<br />

Especificamos um atributo adicional, cujos valores serão “artificialmente” atribuídos a<br />

cada objecto, sem causar repetições;<br />

Este atributo diz-se um I<strong>de</strong>ntificador Interno, I<strong>de</strong>ntificador Único ou I<strong>de</strong>ntificador<br />

<strong>de</strong> Objecto (OI, Object I<strong>de</strong>ntifier) e é frequente receber nomes do género:<br />

Número [<strong>de</strong> ...]<br />

Código [<strong>de</strong> ...]<br />

Id<br />

Por razões <strong>de</strong> performance, no mo<strong>de</strong>lo lógico e/ou físico da base <strong>de</strong> dados po<strong>de</strong>rá<br />

introduzir-se um atributo <strong>de</strong>stes mesmo que exista uma forma <strong>de</strong> i<strong>de</strong>ntificação<br />

natural na classe<br />

Num diagrama <strong>de</strong> classes UML um atributo <strong>de</strong>ste género apenas <strong>de</strong>verá ser<br />

indicado se não existir uma forma <strong>de</strong> i<strong>de</strong>ntificação natural na classe<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 11


Atributos enumerados<br />

Atributos que apenas po<strong>de</strong>m assumir valores entre<br />

um certo conjunto <strong>de</strong> opções<br />

Exº <strong>de</strong> especificação na própria classe<br />

Peça <strong>de</strong> vestuário<br />

Código <strong>de</strong> barras<br />

Designação<br />

Tamanho: {“XL”, “L”, “M”, “S”, “XS”}<br />

O tamanho <strong>de</strong> uma peça <strong>de</strong> vestuário apenas po<strong>de</strong> ser<br />

preenchida por um dos valores indicados<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 12


Atributos enumerados<br />

Se o conjunto <strong>de</strong> opções é<br />

usado em mais que uma<br />

classe<br />

...ou mesmo se o conjunto<br />

<strong>de</strong> opções é muito<br />

extenso, tornando a<br />

representação gráfica da<br />

classe muito larga<br />

Po<strong>de</strong> <strong>de</strong>finir-se um tipo <strong>de</strong><br />

dados enumerado, que<br />

po<strong>de</strong> ser partilhado por<br />

vários atributos<br />

Representação gráfica:<br />

«Enumeration»<br />

Tamanho <strong>de</strong> vestuário<br />

Peça <strong>de</strong> vestuário<br />

Código <strong>de</strong> barras<br />

Designação<br />

Tamanho: Tamanho <strong>de</strong> vestuário<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 13<br />

XL<br />

L<br />

M<br />

S<br />

XS


Desusos <strong>de</strong> UML para <strong>de</strong>senho <strong>de</strong> bases <strong>de</strong><br />

dados relacionais<br />

Para efeitos <strong>de</strong> <strong>de</strong>senho <strong>de</strong> base <strong>de</strong><br />

dados relacional:<br />

– Não se especificam as visibilida<strong>de</strong>s –<br />

público/protegido/privado – dos atributos:<br />

todos se assumem públicos;<br />

Se pretendêssemos <strong>de</strong>senhar uma base <strong>de</strong><br />

dados orientada por objectos, tal já seria<br />

especificado;<br />

– Relativamente a um atributo, não se faz<br />

especificação <strong>de</strong> multiplicida<strong>de</strong>s<br />

superiores a 1, pois:<br />

• O mo<strong>de</strong>lo relacional não permite que, num<br />

registo, um atributo possua mais do que um<br />

valor<br />

• Não se preten<strong>de</strong> obter um mo<strong>de</strong>lo puramente<br />

orientado por objectos<br />

+ Nome<br />

+ Morada<br />

- Rua<br />

- Porta<br />

Cliente<br />

Cliente<br />

Não se coloca<br />

Nome: String<br />

Morada: String<br />

Telefone [ 0 .. 3 ]: Int<br />

Não se usa<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 14


Desusos <strong>de</strong> UML em FBD<br />

Não se especificam as operações das classes<br />

Mas po<strong>de</strong>rá fazer-se, para especificação <strong>de</strong> stored procedures ou<br />

triggers muito directamente relacionados com <strong>de</strong>terminada classe<br />

Nome<br />

Morada<br />

Cliente<br />

Encomendar_produto ( )<br />

Pagar_factura ( )<br />

Mudar_morada ( )<br />

Não se faz em FBD<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 15


Relações 1<br />

Em qualquer sistema existem objectos que se relacionam entre si.<br />

– Sistema universitário<br />

• Objectos: alunos, cursos, exames;<br />

• os alunos relacionam-se com os cursos que frequentam e com os exames que<br />

fazem.<br />

– Sistema bancário<br />

• objectos – clientes, contas, balcões;<br />

• os clientes relacionam-se com as contas que possuem e as contas com os balcões<br />

em que estão sediadas.<br />

As ligações entre objectos relacionados também são informação<br />

Quando há interesse em conhecer as ligações entre os objectos<br />

do sistema, especificam-se relações entre as classes <strong>de</strong>sses<br />

objectos<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 16


Relações 2<br />

Em UML existem os seguintes tipos <strong>de</strong> relações, que<br />

expressam diferentes semânticas <strong>de</strong> interligação<br />

entre classes:<br />

– Associação<br />

Tem dois casos especiais:<br />

– Agregação<br />

– Composição<br />

– Generalização<br />

– Relação <strong>de</strong> <strong>de</strong>pendência<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 17


Associações<br />

Uma associação é uma relação que permite especificar<br />

que objectos <strong>de</strong> uma dada classe se relacionam com<br />

objectos <strong>de</strong> outra classe, sendo importante saber<br />

para cada objecto quais os objectos que lhe estão<br />

associados.<br />

Cliente<br />

Nr contribuinte<br />

Nome<br />

1 0…*<br />

Factura<br />

Nr factura<br />

Data<br />

Valor<br />

...<br />

Um cliente po<strong>de</strong> estar associado a várias facturas ou a nenhuma.<br />

Uma factura está sempre associada a um cliente.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 18


Multiplicida<strong>de</strong> das Associações<br />

X<br />

0 ... 3<br />

Indica quantos objectos da classe X...<br />

...po<strong>de</strong>m estar ligados a um objecto da classe Y<br />

0...1 zero ou 1<br />

Algumas hipóteses:<br />

0...* zero ou vários,<br />

sem limitação <strong>de</strong> quantida<strong>de</strong><br />

0...3 <strong>de</strong> zero a três<br />

1...1 um e apenas um<br />

1...* no mínimo 1<br />

1...3 <strong>de</strong> 1 a 3<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 19<br />

Y<br />

po<strong>de</strong> representar-se: 1


Multiplicida<strong>de</strong> das Associações<br />

... infinitas combinações possíveis que são vulgar <strong>de</strong>signarem-se como:<br />

X<br />

X<br />

X<br />

0 ... 1<br />

1 ... 1<br />

0 ... *<br />

0 ... *<br />

0 ... 1<br />

0 ... *<br />

Y<br />

Y<br />

Y<br />

Um-para-muitos<br />

...ou Um-para-N<br />

Um-para-um<br />

Muitos-para-muitos<br />

...ou M-para-N<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 20


Curso<br />

Associação um-para-muitos 1<br />

Nome 0 ... 1 0 … *<br />

Gestão<br />

Informática<br />

Direito<br />

Sociologia<br />

Nr aluno<br />

Nome<br />

Aluno<br />

João<br />

Ana<br />

Luís<br />

Joana<br />

Semântica<br />

– Um aluno po<strong>de</strong> estar<br />

associado a (inscrito em)<br />

um e apenas um curso<br />

– A um curso po<strong>de</strong>m-se<br />

associar vários ou nenhum<br />

aluno.<br />

Funcional<br />

– Dado um aluno é possível<br />

<strong>de</strong>terminar em que curso<br />

está inscrito, e<br />

– Dado um curso é possível<br />

i<strong>de</strong>ntificar os seus alunos.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 21


Departamento<br />

Associação um-para-muitos 2<br />

Nome 1 0 … *<br />

Produção<br />

Comercial<br />

Financeiro<br />

Informática<br />

Funcionário<br />

Nr mecanográfico<br />

Nome<br />

João<br />

Ana<br />

Luís<br />

Joana<br />

Semântica<br />

– Um funcionário tem<br />

necessariamente que estar<br />

associado a um <strong>de</strong>partamento<br />

Funcional<br />

Não é possível introduzir um<br />

funcionário no sistema sem que<br />

seja indicado o <strong>de</strong>partamento a<br />

que pertence<br />

– Dado um funcionário é possível<br />

<strong>de</strong>terminar em que<br />

<strong>de</strong>partamento ele trabalha, e<br />

– Dado um <strong>de</strong>partamento é<br />

possível i<strong>de</strong>ntificar os seus<br />

funcionários.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 22


Aluno<br />

Nr aluno<br />

Nome<br />

João<br />

Ana<br />

Luís<br />

Joana<br />

Associação muitos-para-muitos 3<br />

0 ... * 0 … *<br />

A mesma ligação<br />

Nome<br />

Disciplina<br />

Matemática<br />

Direito<br />

Marketing<br />

Informática<br />

Um objecto não po<strong>de</strong> estar<br />

duplamente associado a outro<br />

objecto (Joana / Marketing).<br />

À semelhança das classes (em que<br />

os objectos são distintos), as<br />

associações também têm que ter<br />

ocorrências distintas.<br />

–Não há nada que distinga as duas<br />

ligações entre Joana e Marketing;<br />

–O sistema <strong>de</strong> base <strong>de</strong> dados <strong>de</strong>verá<br />

consi<strong>de</strong>rar a 2ª ligação como<br />

redundante: Não interessa registar<br />

duas vezes que Joana e Marketing<br />

estão ligados<br />

–Se interessa, então a associação<br />

muitos-para-muitos não é<br />

representação correcta<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 23


Factura<br />

Nr factura<br />

Data emissão<br />

Valor<br />

Nr recibo<br />

Associação um-para-um<br />

1 0…1<br />

Recibo<br />

Nr recibo<br />

Data pagamento<br />

Nr cheque<br />

Banco<br />

É a associação que atribui um<br />

número <strong>de</strong> recibo à factura.<br />

– Caso contrário, uma factura<br />

po<strong>de</strong>ria ficar associada a dois<br />

números <strong>de</strong> recibo (o indicado no<br />

atributo da factura e o indicado no<br />

objecto Recibo ao qual a factura<br />

estivesse ligada).<br />

– O atributo Nr <strong>de</strong> recibo na classe<br />

Factura é redundante – não <strong>de</strong>ve<br />

ser especificado<br />

Apesar <strong>de</strong> haver uma<br />

correspondência um a um, não<br />

se <strong>de</strong>ve especificar apenas<br />

uma classe, pois cada classe<br />

representa uma realida<strong>de</strong><br />

– Inclusive, <strong>de</strong>via haver a classe<br />

Cheque.<br />

– Mais alguma?<br />

Pelas multiplicida<strong>de</strong>s percebese<br />

que uma factura será<br />

necessariamente introduzida<br />

antes do respectivo recibo<br />

(quanto muito,<br />

simultaneamente)<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 24


Nomes <strong>de</strong> associações 1<br />

As associações po<strong>de</strong>m (e <strong>de</strong>vem) ter nomes<br />

– Substantivo<br />

– Verbo<br />

Indicar sempre o<br />

sentido <strong>de</strong> leitura<br />

Indispensável quando há<br />

duas associações entre as<br />

mesmas classes<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 25<br />

Aluno<br />

Aluno<br />

Cliente<br />

0 ... *<br />

0 ... *<br />

0 ... *<br />

inscrição<br />

inscrito em<br />

0 ... *<br />

0 ... *<br />

titularida<strong>de</strong><br />

0 ... * 0 ... *<br />

autorização <strong>de</strong> movimentação<br />

0 ... *<br />

Disciplina<br />

Disciplina<br />

Conta


Nomes <strong>de</strong> associações 2<br />

Em UML puro, duas<br />

associações po<strong>de</strong>m ter o<br />

mesmo nome <strong>de</strong>s<strong>de</strong> que sejam<br />

entre classes diferentes<br />

Algumas ferramentas impõem<br />

restrições mesmo que as<br />

associações sejam entre duas<br />

classes diferentes ⇒ duas<br />

associações não <strong>de</strong>vem ter<br />

nome igual<br />

– É o caso da ferramenta<br />

PowerDesigner, usada nos<br />

laboratórios: associações com<br />

nomes iguais originam<br />

posteriormente duplicação <strong>de</strong><br />

i<strong>de</strong>ntificadores na base <strong>de</strong><br />

dados.<br />

Seminário<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 26<br />

0 ... *<br />

0 ... *<br />

Inscrição<br />

Inscrição<br />

0 ... *<br />

0 ... *<br />

Professor<br />

Aluno


Atributo enumerado vs. vs. Associação N-para-1<br />

Problema:<br />

Numa base <strong>de</strong> dados bancária, preten<strong>de</strong>-se guardar informação sobre cada<br />

conta, incluindo o seu tipo <strong>de</strong> conta.<br />

Conta<br />

Tipo <strong>de</strong> conta: { À or<strong>de</strong>m, A prazo, CPH, CPA }<br />

Atributo enumerado: Deve usar-se<br />

apenas se, previsivelmente, as<br />

opções serão sempre as mesmas<br />

Associação: Deve usar-se se as opções po<strong>de</strong>m<br />

mudar e queremos possibilitar que seja o<br />

utilizador a gerir essas opções<br />

– Se a quantida<strong>de</strong> <strong>de</strong> opções po<strong>de</strong> mudar.<br />

– Se po<strong>de</strong>m mudar <strong>de</strong> <strong>de</strong>signação.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 27<br />

Conta<br />

0 ... *<br />

tipificação<br />

1<br />

Tipo <strong>de</strong> conta<br />

Designação


0... vs. vs. 1...<br />

Usar o 1...* quando, <strong>de</strong> todo, não se quer a informação do<br />

lado muitos sem a informação do lado 1. Quando não tem<br />

utilida<strong>de</strong> sem a informação do lado 1. Mesmo que na<br />

realida<strong>de</strong> a multiplicida<strong>de</strong> seja 1...*.<br />

– Exemplo:<br />

• Um curso tem pelo menos uma disciplina (portanto, na realida<strong>de</strong>: 1...*).<br />

• Mas po<strong>de</strong>mos querer manter informação acerca do curso sem ainda<br />

termos indicado as suas disciplinas – logo: 0...*<br />

– Exemplo:<br />

• Uma receita médica prescreve um ou mais medicamentos.<br />

• O médico não <strong>de</strong>ve po<strong>de</strong>r guardar a receita sem ter indicado um dos<br />

medicamentos.<br />

• Sem pelo menos um medicamento, a informação sobre a receita não tem<br />

qualquer utilida<strong>de</strong> – logo: 1...*.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 28


São associações que se<br />

“transformam” em classes…<br />

… quando :<br />

<strong>Classes</strong> associativas<br />

– É necessário colocar atributos<br />

na associação:<br />

– É necessário associar uma<br />

classe a uma associação<br />

Encomenda<br />

Nr Encomenda<br />

Quantida<strong>de</strong><br />

0...* 0...*<br />

Item <strong>de</strong> encomenda<br />

Quantida<strong>de</strong><br />

Morada<br />

Contacto<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 29<br />

0...*<br />

Produto<br />

Código<br />

Quantida<strong>de</strong><br />

Local<br />

Entrega<br />

1


As classes associativas<br />

são mais frequentemente<br />

necessárias nas<br />

associações muitos para<br />

muitos.<br />

<strong>Classes</strong> associativas<br />

Mas, em casos mais raros,<br />

fazem também sentido em<br />

associações <strong>de</strong> outras<br />

cardinalida<strong>de</strong>s.<br />

Nome<br />

Morada<br />

Pessoa<br />

Nome<br />

Morada<br />

Núm. <strong>de</strong> beneficiário<br />

Pessoa<br />

0...* 0...1<br />

Sistema <strong>de</strong> saú<strong>de</strong><br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 30<br />

0...*<br />

Benefíciário<br />

0...1<br />

Núm. <strong>de</strong> beneficiário<br />

Sistema <strong>de</strong> saú<strong>de</strong><br />

Nome<br />

Nome


Classe associativa vs.<br />

Classe com duas associações muitos-para-um<br />

Classe associativa<br />

– Não permite ligar duas vezes os<br />

mesmos dois objectos;<br />

– No exemplo: Po<strong>de</strong> registar-se<br />

apenas umas vez que <strong>de</strong>terminado<br />

colaborador participou em<br />

<strong>de</strong>terminado projecto;<br />

Classe com duas associações<br />

– Permite ligar várias vezes os<br />

mesmos dois objectos;<br />

– No exemplo: Po<strong>de</strong>m registar-se<br />

várias participações do mesmo<br />

colaborador no mesmo projecto<br />

Projecto<br />

Projecto<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 31<br />

0...*<br />

0 ... *<br />

Participação<br />

Data <strong>de</strong> início<br />

Data <strong>de</strong> fim<br />

0 ... *<br />

0...*<br />

Colaborador<br />

Colaborador<br />

1 Participação<br />

1<br />

Data <strong>de</strong> início<br />

Data <strong>de</strong> fim


Agregações<br />

As Agregações são associações que se utilizam quando se<br />

preten<strong>de</strong> representar a noção <strong>de</strong> Todo/Parte (um todo<br />

constituído por partes).<br />

Holding<br />

Nome 0...1 0 … *<br />

Empresa<br />

Nome<br />

Morada<br />

Uma holding é constituída por empresas.<br />

Uma empresa po<strong>de</strong> estar incluída numa holding.<br />

Automóvel<br />

Matrícula<br />

Marca<br />

Mo<strong>de</strong>lo<br />

1 4<br />

Um automóvel inclui 4 rodas e 1 volante,<br />

nem mais nem menos.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 32<br />

1<br />

Roda<br />

Nº <strong>de</strong> série<br />

Tipo <strong>de</strong> pneu<br />

Tipo <strong>de</strong> jante<br />

Volante<br />

Nº <strong>de</strong> série<br />

Material<br />

As agregações são representadas graficamente por uma linha<br />

adornada com losângulo branco no extremo correspon<strong>de</strong>nte ao todo.


Composições<br />

As composições são um caso especial <strong>de</strong> agregações<br />

Isto é, tal como as agregações, representam situações em que um objecto <strong>de</strong> uma<br />

classe (composição) inclui um conjunto <strong>de</strong> objectos <strong>de</strong> outra classe (componentes)...<br />

...mas têm semântica adicional:<br />

Os componentes apenas existem no contexto do todo.<br />

Factura<br />

Número<br />

Data<br />

1 0 … *<br />

Linha <strong>de</strong> factura<br />

Produto<br />

Quantida<strong>de</strong><br />

Preço unitário<br />

Uma factura é uma composição <strong>de</strong> linhas:<br />

- A factura é constituída por linhas;<br />

- As linhas não existem senão <strong>de</strong>ntro da factura.<br />

Graficamente, o losângulo é<br />

preenchido a cheio quando a<br />

associação é do tipo<br />

composição.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 33


Composições<br />

O facto <strong>de</strong> numa composição os objectos componentes apenas<br />

existirem no contexto do objecto composto significa:<br />

– Quando se remove o objecto composto, todos os seus componentes<br />

são automaticamente removidos<br />

– Os objectos componente incluem no seu mecanismo <strong>de</strong> i<strong>de</strong>ntificação<br />

o mecanismo <strong>de</strong> i<strong>de</strong>ntificação do objecto composto<br />

• Uma linha <strong>de</strong> factura só se po<strong>de</strong> i<strong>de</strong>ntificar univocamente se também<br />

mencionarmos a i<strong>de</strong>ntificação da factura a que diz respeito<br />

• Os nome dos <strong>de</strong>partamentos po<strong>de</strong>m repetir-se entre empresas – se não<br />

juntarmos o nome da empresa não conseguiremos distinguir certos<br />

<strong>de</strong>partamentos que possuam idêntica <strong>de</strong>signação em empresas distintas<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 34


Factura nº 123 Data: 12/12/1999<br />

Cliente: João Silva Nº Cont. 1234567<br />

Linha Produto Quant. P. Unit Total<br />

1 Produto A 2 5000 € 10000 €<br />

2 Produto B 1 3000 € 3000 €<br />

3 Produto X 3 2000 € 6000 €<br />

Total 19000 €<br />

Composições<br />

Linhas <strong>de</strong> factura diferentes, apesar <strong>de</strong><br />

possuírem os mesmo valores.<br />

Factura nº 100 Data: 12/10/1999<br />

Cliente: Ana Silva Nº Cont. 1234568<br />

Linha Produto Quant. P. Unit Total<br />

1 Produto X 2 5000 € 10000 €<br />

2 Produto B 1 3000 € 3000 €<br />

3 Produto Y 3 2000 € 6000 €<br />

Total 19000 €<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 35


Problema:<br />

Preten<strong>de</strong>-se base <strong>de</strong><br />

dados para sítio <strong>de</strong> Web<br />

com serviço <strong>de</strong> reserva <strong>de</strong><br />

bilhetes para vários<br />

cinemas.<br />

Solução:<br />

Reserva<br />

Data<br />

Hora da sessão<br />

Nome da pessoa<br />

1 0 … *<br />

Composições<br />

Nome<br />

Código<br />

Cinema<br />

1<br />

1…*<br />

1<br />

1…*<br />

1<br />

1…*<br />

Sala<br />

Designação<br />

Fila<br />

Ca<strong>de</strong>ira<br />

Nr. <strong>de</strong> ca<strong>de</strong>ira<br />

<br />

<br />

<br />

Não conseguimos i<strong>de</strong>ntificar uma<br />

sala <strong>de</strong> cinema se não dissermos<br />

em que cinema está incluída<br />

Não conseguimos i<strong>de</strong>ntificar<br />

uma fila se não dissermos a que<br />

sala pertence<br />

Não conseguimos i<strong>de</strong>ntificar<br />

uma ca<strong>de</strong>ira se não dissermos<br />

a que fila pertence<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 36


Composições vs. vs. Agregações<br />

Apesar da obrigatorieda<strong>de</strong> existir em ambas as associações<br />

seguintes, são situações com semânticas distintas:<br />

Departamento<br />

Designação<br />

Factura<br />

Número<br />

Data<br />

1 0…*<br />

1 0…*<br />

Funcionário<br />

BI<br />

Nome<br />

Salário<br />

Linha <strong>de</strong> factura<br />

Produto<br />

Quantida<strong>de</strong><br />

Preço unitário<br />

• Significa que um funcionário que não trabalhe num<br />

<strong>de</strong>partamento não é relevante para o domínio em causa<br />

(se o seu <strong>de</strong>partamento for removido ele terá que ser<br />

excluído ou reposicionado em outro <strong>de</strong>partamento).<br />

• No entanto, o funcionário existe per si, não necessita<br />

<strong>de</strong> estar associado a um <strong>de</strong>partamento para ser<br />

referido/i<strong>de</strong>ntificado<br />

A Linha da factura só po<strong>de</strong> ser referida (distinguida das<br />

restantes) se for indicada a factura correspon<strong>de</strong>nte.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 37


A Composição como conceito <strong>de</strong> i<strong>de</strong>ntificação<br />

Em <strong>de</strong>senho <strong>de</strong> base <strong>de</strong><br />

dados, <strong>de</strong>signam-se por<br />

entida<strong>de</strong>s fracas aquelas<br />

entida<strong>de</strong>s que <strong>de</strong>pen<strong>de</strong>m <strong>de</strong><br />

outras para se i<strong>de</strong>ntificar<br />

A composição é a figura que<br />

em UML permite representar<br />

entida<strong>de</strong>s fracas.<br />

Mesmo que não haja<br />

semântica <strong>de</strong> todo-parte, <strong>de</strong>ve<br />

usar-se uma composição nas<br />

situações em que haja<br />

semântica <strong>de</strong> entida<strong>de</strong> fraca.<br />

Exemplo:<br />

Preten<strong>de</strong>-se manter numa base <strong>de</strong><br />

dados informação acerca <strong>de</strong> todas<br />

as cobranças <strong>de</strong> portagem nas<br />

auto-estradas nacionais.<br />

Como i<strong>de</strong>ntificar cada uma das<br />

cobranças?<br />

Não há semântica <strong>de</strong> todoparte.<br />

Apenas <strong>de</strong> entida<strong>de</strong> fraca: as<br />

cobranças i<strong>de</strong>ntificam-se<br />

através do dia e hora e da<br />

cabine on<strong>de</strong> ocorreram.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 38


Generalização<br />

Generalização é uma relação<br />

que permite representar a<br />

noção <strong>de</strong> subdivisão e<br />

especificida<strong>de</strong> em conjuntos <strong>de</strong><br />

objectos<br />

Todos os sócios partilham<br />

características comuns<br />

– Nome, morada, telefone, valor<br />

<strong>de</strong> quotização, etc.<br />

Mas há subgrupos com<br />

especificida<strong>de</strong>s<br />

– Individuais: Ida<strong>de</strong><br />

– Organizações: Número <strong>de</strong><br />

elementos<br />

Sócios<br />

Individuais<br />

Organizações<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 39


Generalização<br />

Porque têm atributos específicos<br />

Porquê distingui-los?<br />

exº: O CAE (Código <strong>de</strong> Activida<strong>de</strong> Económica) nas Organizações, a Ida<strong>de</strong> nos Individuais<br />

Porque têm associações específicas<br />

exº: Mercados on<strong>de</strong> as Organizações actuam<br />

Ou apenas porque se quer dar relevo a um subconjunto do domínio<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 40


O que é<br />

específico<br />

dos sócios<br />

individuais<br />

O que é<br />

comum a<br />

todos os<br />

sócios<br />

Individual<br />

Ida<strong>de</strong><br />

Profissão<br />

Generalização<br />

Sócio<br />

Nome<br />

Morada<br />

Telefone<br />

Organização<br />

São relações um-para-um: um sócio sócios apenas organização<br />

po<strong>de</strong> correspon<strong>de</strong>r a uma organização<br />

e uma organização correspon<strong>de</strong> (obrigatoriamente) a um sócio;<br />

Um Sócio não po<strong>de</strong> ser simultaneamente Individual e Organização;<br />

Um Sócio po<strong>de</strong> não ser nem Individual nem Organização;<br />

CAE<br />

0...* 1<br />

O que é específico dos<br />

Honorário<br />

Mercado<br />

Designação<br />

Um Sócio po<strong>de</strong> ser Honorário e Individual ou Honorário e Organização;<br />

As subclasses herdam todos os atributos da supraclasse/superclasse.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 41


Generalização vs. associação N-para-1<br />

Conta à<br />

or<strong>de</strong>m<br />

Conta bancária<br />

NIB<br />

Saldo<br />

C. Poupança<br />

Habitação<br />

...<br />

C. Poupança<br />

Reforma<br />

Se o conjunto <strong>de</strong> opções é imutável<br />

Se as diferentes opções têm especificida<strong>de</strong>s<br />

(atributos ou associações próprias)<br />

Se algumas opções irão ter um tratamento especial –<br />

por exemplo, permissões <strong>de</strong> acesso especiais<br />

Se as opções realçam conceitos importantes, por<br />

exemplo, se transmitem terminologia própria do<br />

domínio aplicacional<br />

ou<br />

?<br />

Conta bancária<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 42<br />

NIB<br />

Saldo<br />

0...* 1<br />

Tipo <strong>de</strong> conta<br />

Designação<br />

Se com alguma probabilida<strong>de</strong> po<strong>de</strong>m surgir novas<br />

opções ou as existentes po<strong>de</strong>m necessitar <strong>de</strong><br />

alterações<br />

Se não há especificida<strong>de</strong>s<br />

Se todas as opções têm igual tratamento<br />

Se as opções não correspon<strong>de</strong>m a conceitos <strong>de</strong><br />

gran<strong>de</strong> relevância no domínio aplicacional


Problema:<br />

Associações N-árias<br />

Empresa <strong>de</strong>seja efectuar<br />

divulgação através <strong>de</strong><br />

anúncios em vários<br />

meios <strong>de</strong> comunicação<br />

social. Para controlo <strong>de</strong><br />

custos e pagamentos<br />

necessita <strong>de</strong> registar as<br />

divulgações.<br />

Anúncio<br />

Solução 1: Permite a introdução <strong>de</strong> informação<br />

duplicada (mesmo anúncio no mesmo canal no<br />

mesmo dia)<br />

Solução 2: Associação ternária<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 43<br />

Título<br />

1<br />

Anúncio<br />

Título<br />

0...*<br />

Divulgação<br />

Data 0...*<br />

Dia<br />

Data<br />

Canal <strong>de</strong> divulgação<br />

Nome<br />

0...* 0...*<br />

0...*<br />

Divulgação<br />

1<br />

<br />

<br />

Canal <strong>de</strong> divulgação<br />

Nome


Associações N-árias<br />

No plano dos objectos, uma ligação N-ária envolve sempre N objectos<br />

Anúncio<br />

...um <strong>de</strong> cada classe argumento:<br />

“X é cabeça <strong>de</strong> cartaz”<br />

Anúncio<br />

Anúncio<br />

“X sabe bem”<br />

“X é a escolha da selecção”<br />

Anúncio<br />

Título<br />

Dia<br />

Data<br />

0...* 0...*<br />

0...*<br />

Dia<br />

1-Out-2005<br />

Divulgação<br />

Dia<br />

3-Jan-2005<br />

Dia<br />

7-Set-2005<br />

Dia<br />

8-Jul-2005<br />

Canal <strong>de</strong> divulgação<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 44<br />

Nome<br />

Canal <strong>de</strong> divulgação<br />

SIC<br />

Antena 3<br />

Canal <strong>de</strong> divulgação<br />

Expresso<br />

Canal <strong>de</strong> divulgação


Multiplicida<strong>de</strong>s em associações N-árias<br />

Definição <strong>de</strong> multiplicida<strong>de</strong>s numa relação ternária<br />

Nº <strong>de</strong> anúncios possível para<br />

um par {um dia, um canal}<br />

Anúncio<br />

Título<br />

Dia<br />

Data<br />

0...* 0...*<br />

0...*<br />

Divulgação<br />

Canal <strong>de</strong> divulgação<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 45<br />

Nome<br />

Nº <strong>de</strong> dias possível para um<br />

par {um anúncio, um canal}<br />

Nº <strong>de</strong> canais possível<br />

para um par {um<br />

anúncio, um dia}


Multiplicida<strong>de</strong> em associações N-árias<br />

Definição <strong>de</strong> multiplicida<strong>de</strong>s numa relação ternária<br />

Nº <strong>de</strong> homens possível para um<br />

par {uma mulher, uma criança}.<br />

Adoptar o Joãozinho com a<br />

Ana, apenas po<strong>de</strong> ter sido com<br />

um homem. Se o Joãozinho<br />

não foi adoptado pela Ana,<br />

então há zero homens<br />

associados ao par {Ana,<br />

Joãozinho}. Logo: 0 ou 1<br />

homens.<br />

0...1<br />

Homem<br />

Adopção<br />

Criança<br />

0...*<br />

Mulher<br />

Nº <strong>de</strong> mulheres possíveis para um<br />

par {um homem, uma criança}.<br />

Nº <strong>de</strong> crianças possíveis para um par<br />

{um homem, uma mulher}.<br />

O Pedro e a Ângela, juntos, po<strong>de</strong>m ter<br />

0 (zero) ou várias crianças adoptadas.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 46<br />

0...1<br />

Atenção que não é o nº <strong>de</strong> crianças<br />

envolvidas numa adopção!


Associações N-árias vs. (N-1) associações<br />

binárias<br />

Exemplos:<br />

– Inscrição: Aluno-disciplina-ano lectivo<br />

– Docência: Docente-disciplina-ano lectivo<br />

– Adopção: Casal-criança<br />

– Atribuição <strong>de</strong> óscar: Óscar-Filme-Ano<br />

– Reserva: Pessoa-Ca<strong>de</strong>ira-Sessão-Dia<br />

– Vendas<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 47


Associações n-árias: notação alternativa<br />

Ilustrar a notação losangular utilizada por várias<br />

ferramentas (por exemplo: Visio).<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 48


Associações reflexivas<br />

Também chamadas associações singulares<br />

Um funcionário po<strong>de</strong> ter 0 ou vários<br />

funcionários como subordinados<br />

subordinado<br />

Funcionário<br />

0...*<br />

chefe<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 49<br />

0...1<br />

Chefia<br />

Um funcionário po<strong>de</strong> ter 0 ou 1 chefe


Solução 1:<br />

Não permite registar ligações<br />

(aéreas) nem escalas.<br />

Associações reflexivas<br />

Problema:<br />

Agência <strong>de</strong> viagens preten<strong>de</strong><br />

registar reservas <strong>de</strong> voo.<br />

Aeroporto<br />

Nome<br />

1 origem 0...*<br />

<strong>de</strong>stino<br />

1 0...*<br />

Reserva<br />

Data<br />

Hora<br />

<br />

A uma reserva precisamos <strong>de</strong> po<strong>de</strong>r<br />

associar vários pares origem-<strong>de</strong>stino<br />

Solução 2:<br />

Aeroporto<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 50<br />

Nome<br />

origem<br />

0...*<br />

<strong>de</strong>stino<br />

0...*<br />

Perguntas extra:<br />

Permite voos Lisboa-Lisboa?<br />

Ligação aérea<br />

0...*<br />

0...*<br />

Reserva<br />

Data<br />

On<strong>de</strong> <strong>de</strong>verá ficar o atributo Hora?<br />

trajecto


Relações <strong>de</strong> <strong>de</strong>pendência<br />

As relações <strong>de</strong> <strong>de</strong>pendência permitem evi<strong>de</strong>nciar <strong>de</strong>pendências que<br />

não têm expressão como relações estruturais.<br />

Existe uma relação <strong>de</strong> <strong>de</strong>pendência quando uma alteração na<br />

especificação <strong>de</strong> uma classe origina uma alteração na especificação<br />

<strong>de</strong> outra classe.<br />

– Surgem quando alguma acção sobre os objectos <strong>de</strong> uma classe (a classe<br />

<strong>de</strong>pen<strong>de</strong>nte) envolve a utilização <strong>de</strong> objectos <strong>de</strong> outra<br />

– Só se especificam se não existir uma relação já <strong>de</strong>finida entre essas duas<br />

classes – esta, existindo, já dá indicação <strong>de</strong> <strong>de</strong>pendência entre as classes<br />

Disciplina<br />

Nome<br />

...<br />

Inscrição<br />

0...* 0...*<br />

Aluno<br />

Nome<br />

...<br />

(classe <strong>de</strong>pen<strong>de</strong>nte)<br />

<strong>de</strong>pendência<br />

Folha <strong>de</strong> receitas<br />

Data<br />

(classe <strong>de</strong> que é<br />

<strong>de</strong>pen<strong>de</strong>nte)<br />

• A inscrição <strong>de</strong> um aluno numa disciplina<br />

origina uma entrada <strong>de</strong> receitas – a classe<br />

Aluno <strong>de</strong>pen<strong>de</strong> da classe Folha <strong>de</strong><br />

receitas.<br />

• Não interessa manter registo das<br />

ligações entre alunos e folhas <strong>de</strong> receitas –<br />

não se especifica uma associação<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 51


Constraint: subset<br />

Usado para expressar que as ligações estabelecidas no<br />

contexto <strong>de</strong> uma dada associação são um subconjunto das<br />

estabelecidas no contexto <strong>de</strong> outra associação<br />

Clube<br />

Nome<br />

...<br />

0...1 plantel 0…*<br />

{ subset }<br />

0...1 0...1<br />

capitão<br />

Jogador<br />

Nr <strong>de</strong> camisola<br />

...<br />

O capitão <strong>de</strong> uma equipa (<strong>de</strong> um clube) é um dos elementos que figura no<br />

seu plantel.<br />

Este esquema indica que a base <strong>de</strong> dados não <strong>de</strong>verá <strong>de</strong>ixar apontar como<br />

capitão <strong>de</strong> uma equipa um jogador que não faça também parte do seu<br />

plantel.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 52


Constraint: xor<br />

Usa-se quando duas associações são exclusivas relativamente à classe que têm em<br />

comum – i. é, cada objecto <strong>de</strong>sta classe só po<strong>de</strong> estar associada a outro objecto por<br />

via <strong>de</strong> uma <strong>de</strong>stas associações, nunca por via das duas associações<br />

simultaneamente;<br />

Lê-se: “égzór”.<br />

Automóvel<br />

Matrícula<br />

Marca<br />

Mo<strong>de</strong>lo<br />

Um automóvel ou tem mudanças<br />

automáticas ou manuais.<br />

(Consi<strong>de</strong>re-se que aqueles carros<br />

que possibilitam a transição entre<br />

mudanças automáticas e manuais<br />

possuem uma caixa automática, a<br />

qual também possibilita uma<br />

condução manual).<br />

1 4<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 53<br />

1<br />

{xor}<br />

1<br />

Roda<br />

Caixa automática<br />

Caixa manual


Produto<br />

Código<br />

Nome<br />

Preço<br />

Dimensões<br />

...<br />

0 … * 0 … *<br />

1 … *<br />

Constraint: re<strong>de</strong>fines<br />

{re<strong>de</strong>fines}<br />

0 … *<br />

Carro <strong>de</strong> compras<br />

Encomenda<br />

Homem Mulher<br />

0…1 Namoro 0…1<br />

Homem casado<br />

namorado namorada<br />

{re<strong>de</strong>fines}<br />

0…1 0…1<br />

marido<br />

Casamento<br />

esposa<br />

Mulher casada<br />

O domínio <strong>de</strong> aplicação é um sítio <strong>de</strong> vendas on-line.<br />

• Os visitantes do sítio colocam produtos no seu carro <strong>de</strong><br />

compras.<br />

• As encomendas são carros <strong>de</strong> compras que foram<br />

aprovados para compra (o cliente <strong>de</strong>u or<strong>de</strong>m <strong>de</strong><br />

compra).<br />

• Necessariamente, ao passar a encomenda, um carro <strong>de</strong><br />

compras tem que ter pelo menos um produto – notar o<br />

“1...* ” na associação <strong>de</strong> baixo<br />

O conceito representado por uma relação homemmulher<br />

muda quando estes passam a ser pessoas<br />

casadas.<br />

Uma ligação <strong>de</strong> casamento substitui sempre uma<br />

ligação <strong>de</strong> namoro.<br />

• Pergunta: Porque é que a cardinalida<strong>de</strong> da<br />

associação Casamento é 0...1 e não 1...1?<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 54


Constraint: or<strong>de</strong>red<br />

Usa-se quando se preten<strong>de</strong> expressar que a base <strong>de</strong> dados<br />

<strong>de</strong>ve manter uma or<strong>de</strong>nação quanto às ligações<br />

estabelecidas para cada objecto<br />

Clube<br />

Nome<br />

...<br />

0...1 0…*<br />

plantel<br />

0...1 0... 3<br />

{ or<strong>de</strong>red }<br />

capitão<br />

Jogador<br />

Nr <strong>de</strong> camisola<br />

...<br />

• Um clube po<strong>de</strong> ter até 3 jogadores <strong>de</strong>signados para capitães <strong>de</strong> equipa.<br />

• Um é o 1º capitão e é este quem habitualmente <strong>de</strong>sempenha a função<br />

<strong>de</strong> chefia <strong>de</strong> equipa em campo. O 2º capitão só <strong>de</strong>sempenha esta função se<br />

o 1º estiver ausente. O mesmo se passa entre o 3º e 2º capitão.<br />

É importante registar a or<strong>de</strong>m pela qual os 3 capitães <strong>de</strong> uma equipa<br />

(clube) estão <strong>de</strong>signados, pois é o 1º capitão quem <strong>de</strong>sempenha.<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 55


Outras notações gráficas comuns em<br />

mo<strong>de</strong>lação <strong>de</strong> dados<br />

Mostrar aqui que muitos dos conceitos apresentados<br />

existem em outros formalismos, sendo frequente<br />

encontrar estes mesmos conceitos representados <strong>de</strong><br />

outras formas, nomeadamente:<br />

– Notação Crow’s foot<br />

– Notação Chen-ERD (E-R original)<br />

2006 / 2007 FBD - Desenho <strong>de</strong> Bases <strong>de</strong> Dados com UML. (c) José Farinha, Pedro Ramos Sli<strong>de</strong> 56

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!