Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos...

36
Pedro Ramos, DCTI/ISCTE Índic e UML – Diagrama de Classes Pedro Nogueira Ramos ([email protected]) DCTI / ISCTE

Transcript of Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos...

Page 1: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes

Pedro Nogueira Ramos

([email protected])

DCTI / ISCTE

Page 2: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) 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

Page 3: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 4: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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).

Page 5: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 6: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 7: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 8: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 9: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 10: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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)

Page 11: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 12: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 13: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 14: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 15: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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}

Page 16: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 17: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 18: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 19: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 20: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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.

?

Page 21: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 22: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 23: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 24: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 25: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 26: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 27: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 28: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 29: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 30: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 31: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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?

Page 32: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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.

Page 33: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 34: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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.

Page 35: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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

Page 36: Índice Pedro Ramos, DCTI/ISCTE UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro.Ramos@iscte.pt) DCTI / ISCTE.

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.