Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos...
Transcript of Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos...
Pedro Ramos, DCTI/ISCTE Índice
UML – Diagrama de Classes
Pedro Nogueira Ramos
DCTI / ISCTE
Pedro Ramos, DCTI/ISCTE Índice
Diagrama de Classes - Índice
Conceitos Básicos
Associações (# / #)
Classes Associativas
Agregações
Composições
Generalizações
Atributos Versus Classes
Associações n/1-árias
Associações singulares (uma classe)
Relações de Dependência
Roles
Navegação
Especificação de Atributos
Packages
Pedro Ramos, DCTI/ISCTE Índice
Objectos
Objecto: qualquer coisa relevante do domínio que pretendemos modelar e que têm:
. Identidade (forma de o identificar)
. Estado (conjunto de atributos)
. Comportamento (operações que sobre ele podem ser efectuadas)
Cliente ‘João Silva’
É distinto de outros clientes da empresa
Atributos: nome, morada, nº contribuinte, ...
Operações: emitir facturas, alterar morada, ...
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Classes
UML – Diagrama de Classes
Classe: conjunto de objectos que partilham o mesmo Mecanismo de Identificação, Estado, Comportamento, Relações e Semântica.
Classe dos Clientes
Todos distintos uns dos outros
Partilham atributos e operações
Relacionam-se com as mesmas classes (e.g., produtos que adquirem)
Representam a mesma realidade (semântica)
Os objectos não têm necessariamente que corresponder a entidades humanas ou, mais genericamente, a entidades com representação física (e.g., uma factura). Um conceito abstracto, por exemplo um departamento, pode ser um
objecto (caso seja relevante para o domínio em causa).
Pedro Ramos, DCTI/ISCTE Índice
Classe: Representação Gráfica
Classe dos Clientes
Cliente
Num. ContribuinteNomeMorada
Atribuir Factura()
Designação (distinta)
Atributos (relevantes)
Operações (relevantes)
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Relações
Em qualquer sistema existem objectos que se relacionam entre si. Por exemplo, se considerarmos a classe das facturas da empresa, o cliente ‘João Silva’ relaciona-se com as facturas a ele emitidas.
A relação entre objectos é representada através das relações entre as classes, que podem ser de dois tipos:
1) Associações
2) Generalizações
Casos especiais:
Composição
Agregação
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Associações
Uma associação é uma relação que permite especificar que objectos de uma dada classe se relacionam com objectos de outra classe.
Cliente
Num. ContribuinteNomeMorada
Factura
Data EmissãoData PagamentoValorNúmero de Factura
0 … *1
Um cliente pode estar associado a n facturas, ou a nenhuma ([0,*]), e
Uma factura está obrigatoriamente associada a um e apenas a um cliente ([1,1]).
Nota: 1 é equivalente a 1 ... 1
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Multiplicidade das Associações
0 ... 1, zero ou um 1 ... 1, um e apenas um
0 ... *, de zero a n 1 ... *, de um a n
0 ... 3, de zero a 3 1 ... 3, de um a 3
... infinitas combinações que é vulgar agruparem-se em:
0 … *0 …1
0 … 11 …1
0 … *0 … *
“um para muitos”
“um para um”
“muitos para muitos”
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Associação “um para muitos”
Funcionário
Num. ContribuinteNomeMorada
Departamento
Designação10 … *
João
Ana
Joana
Luís
Produção
Comercial
Financeiro
Semântica
Um funcionário tem necessariamente que estar associado a um departamento, e, a um departamento podem-se associar vários ou nenhum funcionários.
Informática
Funcional
Dado um funcionário é possível determinar em que departamento ele trabalha, e, dado um departamento é possível identificar os seus funcionários.
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Associação “muitos para muitos”
Aluno
NúmeroNomeMorada
Disciplina
Designação0 ... *0 … *
João
Ana
Joana
Luís
Matemática
Direito
Marketing
Um objecto não pode estar duplamente associado a outro objecto (Joana / Marketing). À semelhança das classes (em que os objectos são distintos), as associações também têm que ser distintas.
InformáticaAs associações podem ter nomes, nomes esses que terão que ser distintos
frequenta
UML – Diagrama de Classes
A mesma associação (domínio e co-domínio idênticos)
Pedro Ramos, DCTI/ISCTE Índice
Associação “um para um”
Factura
Data EmissãoData PagamentoValorNúmero de FacturaNº Recibo
Recibo
Nº ChequeBancoNº Recibo
0 … 11
É a associação que atribui um número de recibo à factura. Caso contrário, uma factura estaria associada a dois recibos (o recibo indicado no atributo da factura e o recibo resultante da associação).
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Classes Associativas (I)
As Classes Associativas são associações que se transformam em classes quando é necessário:
a) Colocar atributos na associação ou/e;
Licenciatura
DesignaçãoTipo Avaliação
Disciplina
DesignaçãoTipo Avaliação
1 … *0 … *
Disciplinas da Licenciatura
Tipo Avaliação
0 … *
UML – Diagrama de Classes
Pedro Ramos, DCTI/ISCTE Índice
Classes Associativas (II)
b) Associar uma classe a uma associação.
Licenciatura
DesignaçãoTipo Avaliação
Disciplina
DesignaçãoTipo Avaliação
1 … *0 … *
Disciplinas da Licenciatura
Tipo Avaliação
Docente
Num. ContribuinteNomeMorada
0 … *0 … *
Nota: As Classes Associativas apenas são necessárias nas associações “muitos para muitos”.
0 … *
0 … *
UML – Diagrama de Classes
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.