65
Unified Modeling Language (UML) - Modelação da Estrutura - Alberto Manuel Rodrigues da Silva Prof. DEI/IST/UTL Análise e Concepção de Sistemas Análise e Concepção de Sistemas de Informação de Informação

Unified Modeling Language (UML) - Modelação da Estrutura -

  • Upload
    argus

  • View
    31

  • Download
    0

Embed Size (px)

DESCRIPTION

Análise e Concepção de Sistemas de Informação. Unified Modeling Language (UML) - Modelação da Estrutura -. Alberto Manuel Rodrigues da Silva Prof. DEI/IST/UTL. Modelação da Estrutura. Classes Relações Interfaces, Tipos, e Papeis Packages Instâncias Diagramas de Classes e de Objectos. - PowerPoint PPT Presentation

Citation preview

Page 1: Unified Modeling Language (UML) -  Modelação da Estrutura  -

Unified Modeling Language (UML)- Modelação da Estrutura -

Alberto Manuel Rodrigues da Silva

Prof. DEI/IST/UTL

Análise e Concepção de Sistemas de Análise e Concepção de Sistemas de InformaçãoInformação

Page 2: Unified Modeling Language (UML) -  Modelação da Estrutura  -

2ACSI/UML-Stat, Copyright, Alberto Silva

Modelação da EstruturaModelação da Estrutura

Classes Relações Interfaces, Tipos, e Papeis Packages Instâncias Diagramas de Classes e de Objectos

Page 3: Unified Modeling Language (UML) -  Modelação da Estrutura  -

3ACSI/UML-Stat, Copyright, Alberto Silva

ClassesClasses

Uma classe é a descrição de um conjunto de objectos que partilham os mesmos:– atributos– operações– relações– semântica

Dictionary

size()isEmpty()

itemsatributos

operações

nome

As classes são os mais importantes componentes de construção de sistemas OO

Page 4: Unified Modeling Language (UML) -  Modelação da Estrutura  -

4ACSI/UML-Stat, Copyright, Alberto Silva

Classes - Nome de ClassesClasses - Nome de Classes

Page 5: Unified Modeling Language (UML) -  Modelação da Estrutura  -

5ACSI/UML-Stat, Copyright, Alberto Silva

Classes - AtributosClasses - Atributos

[visibility] [/] name [: type] [ multiplicity ] [= default] [{ property-string }]

Tipos de visibilidade: + : público; -: privado; #: protegido

Page 6: Unified Modeling Language (UML) -  Modelação da Estrutura  -

6ACSI/UML-Stat, Copyright, Alberto Silva

Membro

- Membro()+ Membro(nome, email)+ obterNome() : String+ obterMorada() : String+ obterEmail() : String+ obterInstituicao() : String+ obterUserName() : String+ validaPasswd(pwd : String) : Boolean+ obterRecebePropostas() : Boolean

Membro

<<Constructor>> - Membro()<<Constructor>> + Membro(nome, email)<<GetSet>> + obterNome() : String<<GetSet>> + obterMorada() : String<<GetSet>> + obterEmail() : String<<GetSet>> + obterInstituicao() : String<<GetSet>> + obterUserName() : String<<Manage>> + validaPasswd(pwd : String) : Boolean<<GetSet>> + obterRecebePropostas() : Boolean

[visibility] name [( parameter-list )] : [return-type] [{ property-string }]

Classes - OperaçõesClasses - Operações

Page 7: Unified Modeling Language (UML) -  Modelação da Estrutura  -

7ACSI/UML-Stat, Copyright, Alberto Silva

Classes - SugestõesClasses - Sugestões

Uma classe deve corresponder a algo tangível ou a uma abstração conceptual existente no domínio do problema ou no dominio da solução

Uma classe bem estruturada ... Providencia uma abstração definida a partir do

vocabulário do domínio do problema ou do domínio da solução.

Agrega um conjunto restrito e bem definido de responsabilidades.

Providencia uma separação clara entre a especificação abstracta e a sua implementação.

É simples, e facilmente entendida.

Page 8: Unified Modeling Language (UML) -  Modelação da Estrutura  -

8ACSI/UML-Stat, Copyright, Alberto Silva

Classes - ExercícioClasses - Exercício

Usar classes para definição de dicionário de dados de um sistema “O Jogo de Futebol”

“O jogo de futebol é realizado por duas equipas de jogadores. Cada equipa é composta por 11 jogadores, com diferentes funções: o guarda-redes, defesas, médios, atacantes, e pontas de lança. O ponta de lança é um atacante especial por ter especiais características de goleador...O jogo é realizado num campo com medidas regulamentares (em comprimento e largura), tem duas balizas, cada qual em extremos opostos do campo. Ganha o jogo a equipa que marcar mais golos (I.e., colocar a bola) na baliza do adversário. No jogo apenas existe um única bola, que apresenta características (peso, diâmetro, …) regulamentares...O jogo de futebol é mediado por uma equipa de 3 árbitros, em que um é o árbitro principal, e os outros dois árbitros auxiliares…

De um jogador conhece-se o nome, morada, telefones (pode ter mais que um), data-nascimento, ... A idade de um jogador tem de ser inferior a 40 anos...”

Page 9: Unified Modeling Language (UML) -  Modelação da Estrutura  -

9ACSI/UML-Stat, Copyright, Alberto Silva

RelaçõesRelações

Uma relação é uma ligação entre elementos.

Na modelação OO os 3 tipos de relações mais importantes são:

– dependências– generalizações– associações

elemento A

elementoB

relação

Page 10: Unified Modeling Language (UML) -  Modelação da Estrutura  -

10ACSI/UML-Stat, Copyright, Alberto Silva

Relações - DependênciaRelações - Dependência

Uma dependência indica que a alteração na especificação de um elemento (e.g., pacote “UML 0.9”) pode afectar outro elemento que o usa (e.g., pacote “UML 1.0”) mas não necessariamente o oposto.

Em UML as dependências são usadas entre normalmente com packages, componentes e notas.

Page 11: Unified Modeling Language (UML) -  Modelação da Estrutura  -

11ACSI/UML-Stat, Copyright, Alberto Silva

Relações - DependênciaRelações - DependênciaTipos de dependência predefinidos Abstração:

– «refinement»: Usado quando o cliente representa melhorias, junçõe, alterações e outros aspectos relativamente ao conteúdo do(s) fornecedor(es).

– «trace»: Usado quando se pretende representar relações históricas e dependência de elementos ao longo do tempo

Ligação:– «bind»: Usado para estabelecer ligações entre parâmetros

genéricos e parâmetros efectivos, na criação de elementos não parametrizados

Permissão:– «import»: Usado quando o pacote fornecedor concede ao pacote

cliente acesso aos seus elementos públicos, de forma que o nome desses elementos passem a poder ser referenciados directamente no pacote cliente.

Utilização:– «include», «extend», «communicate»: Usados no contexto de

diagramas de casos de utilização

Page 12: Unified Modeling Language (UML) -  Modelação da Estrutura  -

12ACSI/UML-Stat, Copyright, Alberto Silva

Relações - DependênciaRelações - Dependência

Exemplo de dependência com semântica de «refinement»

– «refinement»: Usado quando o cliente representa melhorias, junções, alterações e outros aspectos relativamente ao conteúdo do(s) fornecedor(es).

Page 13: Unified Modeling Language (UML) -  Modelação da Estrutura  -

13ACSI/UML-Stat, Copyright, Alberto Silva

Relações - GeneralizaçãoRelações - Generalização

Shape

originmove()resize()display()

Uma generalização é uma relação entre um elemento geral (superclasse) e um tipo mais específico desse elemento (subclasse).

Geralmente conhecida como uma relação “is-a” ou “is-a-kind-of”.

Rectanglecorner: Point

Circleradius: Float

Polygnpoints: List

Square

No contexto de classes usam-se generalizações para ilustrar relações de herança.

Page 14: Unified Modeling Language (UML) -  Modelação da Estrutura  -

14ACSI/UML-Stat, Copyright, Alberto Silva

Relações - GeneralizaçãoRelações - Generalização

Tipos de Generalização...

Page 15: Unified Modeling Language (UML) -  Modelação da Estrutura  -

15ACSI/UML-Stat, Copyright, Alberto Silva

Relações - GeneralizaçãoRelações - Generalização

Tipos de Generalização...

Generalização disjunta {disjoint}: – tipo por omissão– especifica o facto de uma classe descendente de X poder ser apenas

descendente de uma das subclasses de X. Generalização sobreposta {overlapping}:

– especifica o facto de uma classe descendente de X pertence ao produto cartesiano das subclasses de X

– No exemplo, a classe CírculoComEtiqueta é uma combinação das subclasses de FiguraGeométrica).

Generalização completa {complete}: vs. incompleta {incomplete}: – especifica o facto de uma generalização ser completamente

especificada ou não– No exemplo, o caso da decomposição segundo a dimensão “etiqueta”

Page 16: Unified Modeling Language (UML) -  Modelação da Estrutura  -

16ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Uma associação é uma relação semântica entre dois ou mais elementos de um modelo .

Uma pessoa pode trabalhar para várias (0 ou mais) empresas. Numa empresa trabalha 1 ou mais pessoas.

Page 17: Unified Modeling Language (UML) -  Modelação da Estrutura  -

17ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Multiplicidade– Define quantos objectos participam na relação– O número de instâncias de uma classe relacionadas com

uma instância da outra classe– Especificada para cada participante (classe) da associação

1

0..* ou *

1..*

0..1

2..4

2, 4..6

Não especificada

Apenas uma

Zero ou mais

Uma ou mais

Zero ou uma

Intervalo especificado

Valores múltiplos

Page 18: Unified Modeling Language (UML) -  Modelação da Estrutura  -

18ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Adornos básicos das associações:- nome- o papel de cada participante na associação- a multiplicidade de cada participante na associação- tipo de agregação

Page 19: Unified Modeling Language (UML) -  Modelação da Estrutura  -

19ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Adornos básicos das associações:- restrições

As empresas têm um conjunto de empregados, o qual é uma lista ordenada pelo “nome” da pessoa. Adicionalmente, foi definido a restrição de que os empregados são todos do género masculino.

Page 20: Unified Modeling Language (UML) -  Modelação da Estrutura  -

20ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Outros Adornos das Associações

– Navegação– Visibilidade– Qualificação– Vários tipos de Agregação

Page 21: Unified Modeling Language (UML) -  Modelação da Estrutura  -

21ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Por omissão a navegação numa associação é bidireccional.

A navegação é um adorno mais relevante na fase de desenho...

“Dado um pessoa é relevante obter a lista das empresas em que se encontra ligado. Mas não é relevante ou interessante obter-se os

empregados de cada empresa .”

Navegação

Page 22: Unified Modeling Language (UML) -  Modelação da Estrutura  -

22ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Quando se pretende limitar a visibilidade a objectos externos a determinada associação.

Tipos de visibilidade: + : público; -: privado; #: protegido

User Password

Navegação da associação

1 *

+owner

Instâncias de UserGroup podem aceder a instâncias de User(e vice-versa) mas não podem, por sua vez, ver as instâncias de Password dos respectivos User.

Visibilidade

UserGroup-key+user

* *

Page 23: Unified Modeling Language (UML) -  Modelação da Estrutura  -

23ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Um qualificador é um atributo, ou lista de atributos, cujos valores servem para partir o conjunto de instâncias associadas a uma instância ao longo de uma associação. Os qualificadores são atributos da associação.

Pessoa

qualificador*

Qualificação

Banco

NrConta

0..1

Quadrado

1

TabuleiroXadrez

LinhaColuna

1

Page 24: Unified Modeling Language (UML) -  Modelação da Estrutura  -

24ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

A associação entre classes sem agregação reflecte que ambas as classes se encontram no mesmo nível conceptual.

Por vezes, estabelecem-se relações do tipo “is-part-of” ou “has-a”, que devem ser representadas através de agregação.

Agregação Simples

Page 25: Unified Modeling Language (UML) -  Modelação da Estrutura  -

25ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

A composição é uma variante à agregação simples, em que é adicionada a seguinte semântica: (1) forte pertença do “todo” em relação à “parte”, e (2) tempo de vida delimitado (as “partes” não podem existir sem o “todo”). Adicionalmente, o “todo” é responsável pela disposição das suas “partes”, ou seja, “o todo” é responsável pela criação e destruição das suas “partes”.

Composição (Agregação Composta)

... Um Departamento não existe sem o contexto de uma Empresa...

Page 26: Unified Modeling Language (UML) -  Modelação da Estrutura  -

26ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Page 27: Unified Modeling Language (UML) -  Modelação da Estrutura  -

27ACSI/UML-Stat, Copyright, Alberto Silva

Relações - Associação, ExercícioRelações - Associação, Exercício

Modelize o seguinte discurso:

«Uma mesa de café é constituída por um tampo e por quatro pernas…»

«Uma mesa de café é constituída por um tampo e por duas a seis pernas, as quais têm de estar ordenadas…»

Composição (Agregação Composta)

Page 28: Unified Modeling Language (UML) -  Modelação da Estrutura  -

28ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Numa associação entre classes, a associação pode também ter as suas próprias propriedades, devendo ser, por conseguinte, modelizada também como uma classe.

Classes-Associação

Pessoa Empresa1..* *

empregado empregador

Tarefa

descriçãodataIníciosalário

classe associação

Page 29: Unified Modeling Language (UML) -  Modelação da Estrutura  -

29ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Associações com aridade 3 ou superior.São pouco comuns, mas há casos que a sua aplicação é vantajosa...

Associação N-Ária (N 3)

Pessoa Empresa* *

Tarefa

descriçãodataIníciosalário

classe associação

TipoTarefa*

Tarefa

A multiplicidade em associações n-árias pode ser especificada mas é menos óbvia que a multiplicidade em associações binárias.

A multiplicidade num papel representa o número de tuplos (de instâncias) numa associação quando os outro N-1 valores são fixos.

Page 30: Unified Modeling Language (UML) -  Modelação da Estrutura  -

30ACSI/UML-Stat, Copyright, Alberto Silva

Relações - AssociaçãoRelações - Associação

Associação N-Ária (N 3)

As associações N-árias podem ser transformadas em várias relações binárias entre a classe-associação e as restantes classes participantes.

Se for esta a estratégia adoptada deve ser assinalado esse facto (por exemplo, através de um estereótipo ou de uma anotação) junto à classe-associação

Pessoa Empresa1 1

Tarefa

descriçãodataIníciosalário

TipoTarefa1

*

“Tarefa” é uma classe resultante da associação entre as classes “Pessoa”, “TipoTarefa” e “Empresa”

* *

Page 31: Unified Modeling Language (UML) -  Modelação da Estrutura  -

31ACSI/UML-Stat, Copyright, Alberto Silva

Relações - Associações ReflexivasRelações - Associações Reflexivas

Quando uma classe tem uma associação consigo própria...

Docente *

1professor

assistente

“um docente, enquanto professor, é responsável por outros docentes, designados por assistentes”

Page 32: Unified Modeling Language (UML) -  Modelação da Estrutura  -

32ACSI/UML-Stat, Copyright, Alberto Silva

Relações - SugestõesRelações - Sugestões

Usar dependência apenas quando a relação não é estrutural.

Usar generalização apenas quando se tem uma relação do tipo is-a ou is-a-kind.

Herança múltipla pode ser geralmente substituida pela agregação.

Evitar relações de generalização ciclicas Manter as generalizações balenceadas (nem muito largas,

nem muito fundas)

Usar associações sempre que existirem relações semânticas entre objectos.

Page 33: Unified Modeling Language (UML) -  Modelação da Estrutura  -

33ACSI/UML-Stat, Copyright, Alberto Silva

Diagramas de classesDiagramas de classes

Perspectivas: Modelo de Análise – diagrama representa os conceitos do dominio

em análise; normalmente existirá uma relação com as classes que os implementarão (tb. modelos de domínio)

Modelo de Desenho - o diagrama representa o desenho da implementação do software

São muito ricos, podem-se tornar complicados Não se deve utilizar todas as notações disponíveis Começar com: classes, atributos, associações, generalizações e

restrições Utilizar correctamente as diferentes perspectivas (análise vs

desenho)

Page 34: Unified Modeling Language (UML) -  Modelação da Estrutura  -

34ACSI/UML-Stat, Copyright, Alberto Silva

Diagramas de classesDiagramas de classes

Representam a visão lógica do sistema, expressa pelo conjunto de todas as suas classes e respectivas relações.

Elementos UML que são representados num diagrama de classes:– Classes e toda a sua estrutura interna– Relações

Tipos (Associações, Agregações, Dependências, Generalização) Multiplicidade Navegabilidade Nome da relação e papel de cada interveniente ....

Page 35: Unified Modeling Language (UML) -  Modelação da Estrutura  -

35ACSI/UML-Stat, Copyright, Alberto Silva

ExercíciosExercícios

1. Modelizar o diagrama de classes de um jogo de futebol Usar as classes anteriormente definidas Introduzir as relações entre as classes

2. Como representaria a seguinte informação: “Um aluno pode-se inscrever em algumas disciplinas de um curso, que têm precedência entre si.”?

Page 36: Unified Modeling Language (UML) -  Modelação da Estrutura  -

36ACSI/UML-Stat, Copyright, Alberto Silva

Exercício: Facturas&ClientesExercício: Facturas&Clientes

Enunciado: Um sistema de facturação mantém informação sobre clientes, sobre

tipos de produtos e de serviços vendidos/prestados.

Um cliente é identificado univocamente pelo NIF, e tem ainda nome, morada, telefones, e tipo de cliente. Um cliente pode ter mais que uma morada…

Uma factura é identificada univocamente pelo IDFactura, que é um número sequencial. Tem ainda a informação sobre data de facturação, cliente, valor total. Uma factura tem várias linhas, cada qual especificando a venda de um bem ou serviço…

Uma factura pode ser paga por uma ou mais prestações. Cada pagamento parcial/total corresponde à emissão de respectivo recibo...

Page 37: Unified Modeling Language (UML) -  Modelação da Estrutura  -

37ACSI/UML-Stat, Copyright, Alberto Silva

InterfacesInterfaces

permite compreender melhor uma abstração sem se ter de conhecer os detalhes da sua implementação

Promove a abstração; desenvolvimento baseado em componentes; separação de aspectos

Suportada pela generalidade das modernas linguagens de programação (Java, VB, VisualC++, Delphi, Corba IDL, COM IDL, …)

A adequada definição de interfaces é essencial para um bom desenho/desenvolvimento de sistemas OO

Visão externa

Visão interna

interface

elemento

Uma interface é um ...contrato na forma de uma colecção de assinaturas de métodos que providencia um mecanismo para separação clara entre a vista externa e a vista interna de um determinado elemento

Page 38: Unified Modeling Language (UML) -  Modelação da Estrutura  -

38ACSI/UML-Stat, Copyright, Alberto Silva

InterfacesInterfaces

Uma interface é uma coleção de operações que são usadas para especificar um serviço de uma classe ou de uma componente

Page 39: Unified Modeling Language (UML) -  Modelação da Estrutura  -

39ACSI/UML-Stat, Copyright, Alberto Silva

InterfacesInterfaces

exemplo de interfaces de uma componente em Active-X...

Page 40: Unified Modeling Language (UML) -  Modelação da Estrutura  -

40ACSI/UML-Stat, Copyright, Alberto Silva

Interfaces - RelaçõesInterfaces - Relações

Uma interface pode participar em relações do tipo generalização, associação, e dependência

Adicionalmente pode participar em relações do tipo “realização”

A realização é uma relação semântica entre duas entidades, em que uma específica um contrato, e a outra garante a sua execução. Quais?

Page 41: Unified Modeling Language (UML) -  Modelação da Estrutura  -

41ACSI/UML-Stat, Copyright, Alberto Silva

Interfaces – em UML 2.0Interfaces – em UML 2.0

Considere a situação:

A universidade promove várias actividades de cariz socio-profisssional (e.g., jantares-debates, cursos de curta duração, visitas a empresas), as quais podem ser patrocionadas por empresas

Considere que “Actividade” é uma interface...

Jantar-DebateEmpresa

Actividade

obterResponsável()obterPatrocionadores()obterCusto()

<<Interface>>

patrociona >

OK!

Jantar-DebateEmpresa

Actividade

patrociona >

??!

Page 42: Unified Modeling Language (UML) -  Modelação da Estrutura  -

42ACSI/UML-Stat, Copyright, Alberto Silva

Interfaces – em UML 2.0Interfaces – em UML 2.0

Considere a situação:

A universidade promove várias actividades de cariz socio-profisssional (e.g., jantares-debates, cursos de curta duração, visitas a empresas), as quais podem ser patrocionadas por empresas

Considere que “Actividade” é uma interface...

Page 43: Unified Modeling Language (UML) -  Modelação da Estrutura  -

43ACSI/UML-Stat, Copyright, Alberto Silva

Interfaces - SugestõesInterfaces - Sugestões

Simples, ainda que completa: providencia todas as operações necessárias para especificar

um determinado serviço ou papel E.g., serialização, gestão de nomes, estabelecimento de

conexões HTTP, acesso a objecto remoto, …

Compreensível: providencia informação suficiente para ser, quer usada, quer

realizada sem ser necessário examinar-se a sua realização

Fácil de aprender/utilizar providencia informação para ser fácil utilizar as suas operações

principais, sem se ter que dominar, em detalhe, todas as operações

Uma interface bem estruturada é:

Page 44: Unified Modeling Language (UML) -  Modelação da Estrutura  -

44ACSI/UML-Stat, Copyright, Alberto Silva

PackagesPackages

Torna-se difícil, impraticável, modelizar de uma “só vez” sistemas de média/grande dimensão ou complexidade

Motivação

É um mecanismo genérico para organizar elementos em grupos

O que é?

Package A

package

Um package pode conter outros elementos, incluindo: classes, interfaces, … e mesmo outros packages

Qq elemento é definido em apenas um único package Um package providencia suporte para um espaço de

nomes adequado e.g., X::A é diferente de X::Y:A, diferente de

Z::A, ...

Page 45: Unified Modeling Language (UML) -  Modelação da Estrutura  -

45ACSI/UML-Stat, Copyright, Alberto Silva

Packages - ExemplosPackages - Exemplos

Page 46: Unified Modeling Language (UML) -  Modelação da Estrutura  -

46ACSI/UML-Stat, Copyright, Alberto Silva

Packages - Importação/ExportaçãoPackages - Importação/Exportação

O package origem tem acesso ao conteúdo (público) do package destino.

A tem acesso a B, mas o recíproco não é verdade.

Page 47: Unified Modeling Language (UML) -  Modelação da Estrutura  -

47ACSI/UML-Stat, Copyright, Alberto Silva

Packages - Tipos StandardPackages - Tipos Standard

facade: – pacote com elementos (tipicamente classes e interfaces) que

constituem a fachada (ou a interface de programação) providenciada conjunta e coerentemente por outros pacotes

framework: – um framework é uma arquitectura de classes e interfaces com

inúmeros pontos de variabilidade ou de extensão e com estruturas de objectos padronizadas, conhecidas por padrões de desenho

stub: – um adaptador (stub) é usado quando se pretende partir um sistema

em diferentes pacotes por motivos, e.g., de divisão de trabalho subsystem:

– uma parte independentemente do sistema inteiro system:

– pacote que representa o sistema inteiro; tipicamente este pacote agrega pacotes dos restantes tipos (subsistema, fachada, etc.)

5 estereótipos standard para packages…

Page 48: Unified Modeling Language (UML) -  Modelação da Estrutura  -

48ACSI/UML-Stat, Copyright, Alberto Silva

Packages - Conselhos ...Packages - Conselhos ...

Um package bem estruturado é: Coerente:

– providencia uma fronteira bem definida que agrega um conjunto de elementos relacionados

Minimiza as dependências: – exporta apenas os elementos que outras packages necessitarão; e importa de

outras packages os elementos estritamente necessários Tem hierarquias balanceadas

– evitar largas/profundas hierarquias de packages aninhadas Tem conteúdo balanceado

– dentro do conjunto de packages de um sistema, não deverão existir packages nem demasiado grandes (partir), nem demasiado pequenos (juntar)

Quando utilizar Packages? Sempre que um determinado diagrama que representa o sistema (ou

subsistema) não seja legível numa “folha A4”

Particularmente úteis para os testes unitários => um caso de testes por package

Úteis ainda em termos de unidades de programação

Page 49: Unified Modeling Language (UML) -  Modelação da Estrutura  -

49ACSI/UML-Stat, Copyright, Alberto Silva

Packages - ExercícioPackages - Exercício

Considere o sistema de jogos de futebol. Defina 4 packages respectivamente para agrupar classes relativas a (1) equipas de jogadores; (2) equipas de arbitragem; (3) clubes de futebol; e (4) os jogos propriamente ditos.

Defina o diagrama de packages respectivo, evidenciando as classes exportadas e as dependências de importação correspondentes.

Page 50: Unified Modeling Language (UML) -  Modelação da Estrutura  -

50ACSI/UML-Stat, Copyright, Alberto Silva

InstânciasInstâncias

Uma instância é uma manifestação concreta de uma abstracção, à qual um conjunto de operações pode ser aplicado, e que tem um estado que regista os efeitos das operações

Em geral designa-se “instância” a “objecto” e vice-versa; mas rigorosamente são conceitos distintos. E.g.,

instância de uma classe é um objecto instância de uma associação é um link instância de um nó é um computador que se encontra fisicamente num local instância de um use case é um cenário

Page 51: Unified Modeling Language (UML) -  Modelação da Estrutura  -

51ACSI/UML-Stat, Copyright, Alberto Silva

Instâncias - ObjectosInstâncias - Objectos

Um objectos é ... uma instância de uma classe, herdando, por conseguinte,

todos os atributos e métodos definidos na própria classe e possuindo uma representação de execução própria, a qual se pode designar genericamente por estado, bem como uma identificação única no contexto da sua execução

Nome-do-objecto : Nome-da-classe

Page 52: Unified Modeling Language (UML) -  Modelação da Estrutura  -

52ACSI/UML-Stat, Copyright, Alberto Silva

Instâncias - ObjectosInstâncias - Objectos

Estado de um objectos... é dado pelos valores assumidos pelo conjunto de atributos

de um objecto. é naturalmente um facto dinâmico, variando ao longo do

tempo e do espaço na medida em que o objecto interactua com outros objectos

Page 53: Unified Modeling Language (UML) -  Modelação da Estrutura  -

53ACSI/UML-Stat, Copyright, Alberto Silva

Instâncias - Objectos ActivosInstâncias - Objectos Activos

Para representar objectos activos: processos, threads, agentes, aplicações,...

:AgentNews

t:HandlerNetworkThread

:Produtor:ProdutorLinhas com maior espessura

Page 54: Unified Modeling Language (UML) -  Modelação da Estrutura  -

54ACSI/UML-Stat, Copyright, Alberto Silva

Instâncias - Objectos CompostosInstâncias - Objectos Compostos Um objecto composto

– é aquele que é constituído por outros (sub)objectos. – há inúmeras situações de objectos compostos, mas em geral

reflectem relações de agregação entre as suas respectivas classes.

my:Empresa

d-fin:Departamento

d-pro:Departamento

d-ven:Departamento

d-fin:Departamento

d-pro:Departamento

d-ven:Departamento

my:Empresa

Objecto composto

A vantagem de se representar um conjunto relacionado (por agregação) de objectos através de um objecto composto é essencialmente por motivos de clareza e

simplicidade dos diagramas produzidos, para além de se explicitar desta forma o nível de coesão entre os objectos.

Page 55: Unified Modeling Language (UML) -  Modelação da Estrutura  -

55ACSI/UML-Stat, Copyright, Alberto Silva

Diagramas de ObjectosDiagramas de ObjectosUm diagrama de objectos...

– ilustra um conjunto de objectos e respectivas relações num determinado momento

– permite captar uma imagem ou fotografia momentânea sobre determinado sistema

– é um grafo composto por objectos e ligações (links) entre eles

Um diagrama de objectos não pode especificar completamente a estrutura de objectos de um dado sistema. Pois para cada classe há uma infinidade de potenciais combinações entre instâncias…

Logo, o objectivo dos diagramas de objectos é tão só expôr conjuntos relevantes de objectos de modo a melhor se entender as suas funcionalidades e inter-relações.

Page 56: Unified Modeling Language (UML) -  Modelação da Estrutura  -

56ACSI/UML-Stat, Copyright, Alberto Silva

Diagramas de Objectos Diagramas de Objectos Exemplo “Exemplo “Sistema de Gestão de AutomóveisSistema de Gestão de Automóveis ””

Uma pessoa pode ser proprietário de vários veículos e estes são possuídos apenas por uma única pessoa. Por outro lado, um veículo tem de possuir necessariamente um motor. Um veículo é identificado univocamente pela matrícula e possuí ainda outras informações, tais como a cor, data de fabrico, marca e modelo. Um motor é identificado por um número de motor, tipo de combustível e cilindrada

Pessoa Veiculomodelomatriculacor

Motornúmerocilindradacombustível

*0..1 10..1

Page 57: Unified Modeling Language (UML) -  Modelação da Estrutura  -

57ACSI/UML-Stat, Copyright, Alberto Silva

ZéMaria:Pessoa

nome=“Zé Maria”

AudiA3:Veiculo

modelo=A3 TDimatricula=99-99-MMcor=vermelho

:Motor

número=9999cilindrada=1900cccombustível=gasóleo

tem tem

(1) Alterar para:“o Zé Maria e a Rita são donos de um Audi A3 Tdi vermelho, com matricula “99-99-MM”, que tem um motor 1900cc, com número 9999”

(2) Fazer o respectivo diagrama de classes

“o Zé Maria é dono de um Audi A3 TDi vermelho, com matricula ‘99-99-MM’, que tem um motor 1900cc, com número ‘9999’

Diagramas de Objectos Diagramas de Objectos Exemplo “Exemplo “Sistema de Gestão de AutomóveisSistema de Gestão de Automóveis ””

Page 58: Unified Modeling Language (UML) -  Modelação da Estrutura  -

58ACSI/UML-Stat, Copyright, Alberto Silva

Diagramas de Objectos - Sugestões...Diagramas de Objectos - Sugestões...

Tem um foco: focaliza um determinado aspecto da visão do

desenho/processo estático do sistema

Representa uma “Fotografia”: representa uma fotografia no storyboard dinâmico

representado por um diagrama de interacções

Simples contém apenas os elementos que são essenciais à

compreensão de determinado aspecto

Consistente providencia detalhes de forma consistente com o seu nível de

abstração

Um diagrama de objectos bem estruturado é:

Page 59: Unified Modeling Language (UML) -  Modelação da Estrutura  -

59ACSI/UML-Stat, Copyright, Alberto Silva

Exercício 1: Gestão de EncomendasExercício 1: Gestão de Encomendas

A empresa XPTO compra produtos a diferentes fornecedores. Os produtos adquiridos são identificados univocamente por um código, têm uma descrição, e ainda a identificação de um tipo de produto (e.g., alimentar, vestuário, linha branca). Cada encomenda especifica um conjunto de produtos com respectivas quantidades, o fornecedor, a data de aquisição, e a data de entrega prevista…

Page 60: Unified Modeling Language (UML) -  Modelação da Estrutura  -

60ACSI/UML-Stat, Copyright, Alberto Silva

Exercício 1: Gestão de EncomendasExercício 1: Gestão de Encomendas

(1)Diagrama de classes de análise

(2) Como especificar que a encomenda só é realizada se o seu valor total fôr superior a 100€?

(3) Diagrama de objectos para a seguinte situação:«A Nestlé satisfez a encomenda 333, em 2003/9/14, relativa à data de encomenda de 2003/8/31.A encomenda 333 tem 2 itens: (i) produto 123, chocolate BLO, Euro 30; 10000 unidades; e (ii) produto 135, leite condensado 1/4, Euro 20, 50000 unidades. Ambos os produtos são do tipo alimentar.»

Pretende-se:

Page 61: Unified Modeling Language (UML) -  Modelação da Estrutura  -

61ACSI/UML-Stat, Copyright, Alberto Silva

Exercício 1: Gestão de EncomendasExercício 1: Gestão de Encomendas

(1)Diagrama de classes de análise

Pretende-se:

Fornecedor Encomenda1 * Linha-Encomenda

Produto

Tipo-Produto

1 *

1 *

1

*

idEncdata_aqsdata_enc

quantidadevalor_totalvalor_iva

nomepreço_unitáriotx_iva

nomenifmorada

Page 62: Unified Modeling Language (UML) -  Modelação da Estrutura  -

62ACSI/UML-Stat, Copyright, Alberto Silva

Exercício 1: Gestão de EncomendasExercício 1: Gestão de Encomendas

(2)Diagrama de classes de análise, com restrição

Pretende-se:

Fornecedor Encomenda1 * Linha-Encomenda

Produto

Tipo-Produto

1 *

1 *

1

*

idEncdata_aqsdata_enc/valor_total

quantidadevalor_totalvalor_iva

nomepreço_unitáriotx_iva

nomenifmorada

{Encomenda.valor_total > 100€}

Como especificar que a encomenda só é realizada se o seu valor total fôr superior a 100€?

Page 63: Unified Modeling Language (UML) -  Modelação da Estrutura  -

63ACSI/UML-Stat, Copyright, Alberto Silva

Exercício 1: Gestão de EncomendasExercício 1: Gestão de Encomendas

Erros Tipicos

Fornecedor Encomenda1 * Linha-Encomenda

Produto

Tipo-Produto

1 *

1 *

1

*

idEncdata_aqsdata_encidFornecedor

idEncquantidadevalor_totalvalor_iva

nomepreço_unitáriotx_iva

nomenifmorada

Lista de TipoProduto

HashtableProduto

Page 64: Unified Modeling Language (UML) -  Modelação da Estrutura  -

64ACSI/UML-Stat, Copyright, Alberto Silva

Exercício 1: Gestão de EncomendasExercício 1: Gestão de Encomendas

Diagrama de objectos para a seguinte situação:«A Nestlé satisfez a encomenda 333, em 00/10/14, relativa à data de encomenda de 00/8/31.A encomenda 333 tem 2 itens: (i) produto 123, chocolate BLO, Euro 30; 10000 unidades; e (ii) produto 135, leite condensado 1/4, Euro 20, 50000 unidades. Ambos os produtos são do tipo alimentar.»

Pretende-se:

Nestlé:Fornecedor

:Encomenda

idEnc = 333data_aqs = 00/10/14data_enc = 00/8/31

P123:Produto

Alimentar:Tipo-Produto

l1:Linha-Encomenda

qty = 10000preço = 30

l2:Linha-Encomenda

qty = 50000preço = 20

P135:Produto

Page 65: Unified Modeling Language (UML) -  Modelação da Estrutura  -

65ACSI/UML-Stat, Copyright, Alberto Silva

Exercício 2: Torneio de TénisExercício 2: Torneio de Ténis

«Num torneio de ténis, cada partida é jogada entre 2 jogadores. Pretende-se manter informação sobre o nome e idade dos jogadores; data da partida e atribuição dos jogadores às partidas. O máximo de partidas que um jogador poderá realizar é 6 e o mínimo 1.»

Pretende-se(1) Diagrama de classes de nível de desenho (com atributos). Como

garantir que o jogador não jogue com ele próprio?

(3) Diagrama de objectos para a seguinte situação:«Os jogadores Zé Maria e Pedro Cunha disputaram os oitavos-final e a final, respectivamente às 16:30 e 23:00 de 2004/10/10; nos quartos-final venceu o Zé e na final o Pedro.»