Pedro Ramos, DCTI/ISCTE Índice
Agregações (I)
UML – Diagrama de Classes
As Agregações são associações que se utilizam quando se pretende representar a noção de Todo/Parte (um todo constituído por partes). A associação “lê-se” de forma semelhante às restantes associações.
Empresa
DesignaçãoMorada
Departamento
Designação1
0 … *
Automóvel
MatrículaMarcaModelo
Roda
Tipo PneuTipo Jante
1 4
Volante
Material1
Pedro Ramos, DCTI/ISCTE Índice
Agregações (II)
UML – Diagrama de Classes
Schmuller, 99
Permite a indicação explícita de disjunções (Or) nas agregações.
Automóvel
MatrículaMarcaModelo
Roda
Tipo PneuTipo Jante
1 4
Volante
Material1
Caixa Automática
Caixa Manual
1
1
{or}
Pedro Ramos, DCTI/ISCTE Índice
Composições (I)
As composições são um caso especial de Agregações (normalmente associações “um para muitos”) que representam situações em que um objecto de uma classe (composição) resulta da composição de um conjunto de objectos de outra classe (componente), e em que os componentes apenas existem no contexto da classe composição. São Agregações em que o sentido da pertença é mais forte.
Caso optasse pela seguinte representação escondia uma realidade que pode ser considerada relevante: as linhas apenas existem enquanto existir a factura da qual fazem parte. Na representação anterior fica explicitamente descrito que, por exemplo, se remover-mos uma factura, as linhas dessa factura também serão removidas.
Factura
NúmeroData
Linha da factura
ProdutoQuantidadePreço Unitário
1 … *1Uma factura é uma composição de linhas.
Factura
NúmeroData
Linha da factura
ProdutoQuantidadePreço Unitário
1 … *1
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Composições (II)
Factura nº 123 Data: 12/12/1999
Cliente João Silva Nº Cont. 1234567
Produto Quant. P. Unit Total
Produto A 2 5000 10000
Produto B 1 3000 3000
Produto X 3 2000 6000
Total 19000
Só existe no contexto da factura 123
Factura nº 100 Data: 12/10/1999
Cliente Ana Silva Nº Cont. 1234568
Produto Quant. P. Unit Total
Produto X 2 5000 10000
Produto B 1 3000 3000
Produto Y 3 2000 6000
Total 19000
linhas diferentes,
daí que uma linha apenas esteja associada a uma factura.
Factura
NúmeroData
Linha da factura
ProdutoQuantidadePreço Unitário
1 … *1
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Composições (III)
Factura
NúmeroData
Linha da factura
ProdutoQuantidadePreço Unitário
1 … *1Funcionário
Num. ContribuinteNomeMorada
Departamento
Designação10 … *
Apesar da obrigatoriedade existir em ambas as associações (1), são situações com semânticas distintas.
O funcionário existe per si, não necessita de estar associado a um departamento para ser referido. No entanto, um funcionário que não trabalhe num departamento não é relevante para o domínio em causa (se o seu departamento for removido ele terá que ser excluído).
A Linha da factura só pode ser referida (distinguida das restantes) se for indicada a factura correspondente.
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Composições (IV)
Escola
DesignaçãoMorada
Aluno
NomeMorada
1 … *1 … *
Escola
DesignaçãoMorada
1 … *1
Aluno
NomeMorada
1 … * 1
Aluno Inscrito
Nº Inscrição
abreviatura de ...
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Composições (V)
UML – Diagrama de Classes
Schmuller, 99 considera que a composição é uma Agregação em que a parte só pode ter no máximo um todo.
?
Pedro Ramos, DCTI/ISCTE Índice
Generalização (I)
A generalização é uma relação (“um para um”) que permite representar a noção de pertença ou especificidade.
Sócios
Organizações
Individuais
Todos os sócios partilham informação comum:
Nome, morada, telefone, valor quotização, etc. ...
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Generalização (II)
Porquê distingui-los?
1) Atributos específicos, ex. CAE em Organizações, Idade em Individuais;
2) Associações específicas: ex. Mercados onde as Organizações actuam;
3) Dar relevo a uma especificidade do domínio.
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Generalização (III)Sócio
NomeMoradaTelefone
Individual
IdadeProfissão
Organização
CAE
País
País0 … * 0 … *
Honorário
• São associações “um para um”: um sócio apenas pode corresponder a uma organização e uma organização corresponde (obrigatoriamente) a um sócio;
• Um sócio não pode ser simultaneamente Individual e Organização;
• Um sócio pode não ser nem Individual nem Organização;
• Um sócio pode ser Honorário e Individual, ou Honorário e Organização;
• As subclasses herdam todos os atributos da supraclasse.
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Atributos versus Classes (I)
Docente
NomeMoradaTelefoneDisciplina
Docente
NomeMoradaTelefone
Disciplina
Designação
0...1
0 … *ou ?
É relevante realçar a noção de disciplina ?
É importante referir que é obrigatório um docente estar associado a uma disciplina ?
É importante validar as disciplinas (apenas permitir associar a um docente uma disciplina pré-definida)?
A designação das disciplinas pode ser alterada?
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Atributos versus Classes (II)
Docente
NomeMoradaTelefone
Disciplina
Designação
0...1
0 … *
no computador
Em rigor, não é necessária a Classe Disciplina para poder obter a funcionalidade indicada. No entanto, caso a classe não exista, as disciplinas válidas são constantes (não é permitida a sua manutenção).
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Atributos versus Classes (III)
Docente
NomeMoradaTelefone
Idade
Idade
1
0 … *
no computadorMesmo que pretenda a funcionalidade indicada, os limites de idade são imutáveis, logo a validação não necessita de ser efectuada através de uma classe Idade.
Conjunto dos inteiros (>18 e < 100)
Não parece ser relevante destacar a Idade.
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Associações n-árias (I)
Disciplina do Curso
Ano da Licenciatura
Licenciatura
Designação
Disciplina
Designação
0 … *
0 … *
Gestão
Informática
Comunicação
Matemática
Marketing
2º Ano
2º Ano
1º Ano
3º Ano
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Associações n-árias (II)
Gestão Matemática2º Ano / 1º Ano
Cenário de Reestruturação de Licenciatura (ano de transição): Matemática ocorre no 1º e 2º ano da Licenciatura em Gestão.
1º Ano
Não devem existir atributos multi-valor
Apesar de o ano ser diferente nas duas associações, as associações são as mesmas: uma associação é identificada (distingue-se) através dos seus argumentos (e não pelos atributos).
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Associações n-árias (III)
Ano Licenciatura
Ano
Disciplina do Curso
0 … *
Licenciatura
Designação
Disciplina
Designação
0 … *
0 … *
Gestão Matemática
2º Ano
1º Ano
UML – Diagrama de Classes
Não é necessária a classe associativa
Pedro Ramos, DCTI/ISCTE Índice
Associações n-árias (IV)
Ano Licenciatura
Ano
Disciplina do Curso
0 … *
Licenciatura
Designação
Disciplina
Designação
0 … *
0 … *Ano Licenciatura
Ano
Disciplina do Curso
1 … *
Licenciatura
Designação
Disciplina
Designação
0 … *
0 … *
0 … *
alternativa
UML – Diagrama de Classes
Uma instância em Disciplina do Curso têm que estar obrigatoriamente associada a um ano
Pedro Ramos, DCTI/ISCTE Índice
Associações com apenas uma Classe
Funcionário
Num. ContribuinteNomeMorada
1
0 … * chefe
Aeroporto
NomeCidadePais
Reserva Voo
DataNúmero ReservaPassageiro
Ligações
0 … * 0 … *
1
0 … *trajecto
Aeroporto
NomeCidadePais
0 … *
0 … *
1
1
origem
destino
Alternativa
Não armazena ligações nem escalas
UML – Diagrama de Classes
Evitam Lisboa - Lisboa?
Pedro Ramos, DCTI/ISCTE Índice
Relações de Dependência
UML – Diagrama de Classes
As relações de dependência permitem evidenciar dependências comportamentais que não transparecem nas relações estruturais.
Existe uma relação de dependência quando uma alteração num objecto de uma classe origina uma alteração em outro objecto de outra classe.
Uma inscrição de um aluno em uma disciplina, origina uma entrada de uma receita. A seta aponta para a classe dependente. Uma relação entre Aluno e Folha de Receitas não é esclarecedora.
Aluno
Nome
Disciplina
Designação1 … *1 ... *
Inscrição Disciplina()
Folha Receitas
DataMovimentoMontante
Registo Receita()
0 … 11 ... *
Não é necessário indicar quais os métodos envolvidos.
Pedro Ramos, DCTI/ISCTE Índice
Roles
UML – Diagrama de Classes
Uma forma alternativa à utilização de nomes das associações consiste na indicação do papel (roles) de cada uma das classes na associação.
Na associação o Funcionário representa o papel do empregado e a empresa o de empregador (alternativa a designar a associação de “Trabalha”). Pode-se indicar apenas a designação de um role.
Funcionário
Num. ContribuinteNomeMorada
Empresa
Designação10 … *
empregado empregador
Pedro Ramos, DCTI/ISCTE Índice
Navegação
UML – Diagrama de Classes
Caso seja relevante, pode ser indicado na associação o sentido na navegação, i.e., a forma preferencial de leitura da associação. Formalmente, a indicação de um sentido de navegação não implica que não exista uma relação estrutural bi-direccional.
Docente
NomeMoradaTelefone
Idade
Idade
1
0 … *
tem
Não é relevante realçar que para uma idade podem corresponder vários docentes.
Pedro Ramos, DCTI/ISCTE Índice
Especificação de Atributos
UML – Diagrama de Classes
Na especificação dos atributos, para além da sua designação, é possível indicar outras propriedades.
CD Audio
Título: String
Género Música: String = “Rock”
Data: DateValor por omissão
Pedro Ramos, DCTI/ISCTE Índice
Packages
Conta
UML – Diagrama de Classes
Os Packages são agrupamentos de classes.
Contabilidade
Processamento Salários
Factura
Tab IRS
Funcionário
Por exemplo, correspondem a sistemas informáticos distinctos
Relação de dependência: a activação de pelo menos um método de uma classe do package Processamento de Salários activa um método do outro package.