Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do...

44
Modelagem de Classes do Domínio

Transcript of Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do...

Page 1: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Modelagem de Classes do Domínio

Page 2: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Introdução O modelo de casos de uso fornece uma

perspectiva do sistema a partir de um ponto de vista externo.

De posse da visão de casos de uso, os desenvolvedores precisam prosseguir no desenvolvimento do sistema.

Page 3: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Introdução A funcionalidade externa de um sistema

orientado a objetos é fornecida através de colaborações entre objetos.◦ Externamente, os atores visualizam resultados de

cálculos, relatórios produzidos, confirmações de requisições realizadas, etc.

◦ Internamente, os objetos colaboram uns com os outros para produzir os resultados que são visíveis de fora.

Page 4: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Uma colaboração pode ser vista sob o aspecto dinâmico e sob o aspecto estrutural estático.

Aspecto dinâmico: ◦ Descreve a troca de mensagens entre os objetos

e sua reação a eventos que ocorrem no sistema.

Aspectos dinâmico e estático

Page 5: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Aspecto estrutural estático◦ Permite compreender como o sistema está

estruturado internamente. Este é estrutural, pois seu foco encontra-se na

representação da estrutura das classes e nas relações entre estas.

Este é estático, pois não apresenta informações sobre as interações dos objetos no decorrer do tempo

Aspectos dinâmico e estático

Page 6: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Aspectos dinâmico e estático

Lembre-se:

Os aspectos estático e dinâmico deum SW não são independentes !

Na verdade, a construção de um serve para adicionar detalhes ao outro.

Page 7: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Modelo de classes O diagrama da UML utilizado para representar o

aspecto estático é o diagrama de classes.◦ O modelo de classes é composto desse diagrama e de

alguma descrição textual associada. Assim como outros modelos, o modelo de classes

evolui durante o desenvolvimento do sistema.◦ À medida que o sistema é desenvolvido, o modelo de

classes é incrementado com novos detalhes. Três níveis sucessivos de abstração:

◦ Domínio◦ Especificação◦ Implementação.

Page 8: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Modelo de classes

O modelo de classes de domínio ◦ Representa as classes no domínio do negócio em

questão. ◦ Este modelo é construído na fase de análise.◦ Por definição, este modelo é abstrato e não deve

considerar restrições inerentes à tecnologia a ser utilizada na solução de um problema.

Page 9: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Modelo de classes O modelo de classes de especificação

◦ É obtido através da adição de detalhes (classes da solução tecnológica, tipos, visibilidades, parâmetros,...) ao modelo anterior.

◦ Este modelo é construído (por iteração) na fase de projeto

O modelo de classes de implementação ◦ Corresponde à implementação de classes anteriores

em alguma LPOO◦ Este modelo é construído (por iteração) na fase de

implementação

Page 10: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Modelo de classes

Resumindo... ◦ As classes de domínio são definições abstratas que

descrevem o problema sem considerar a tecnologia

usada na solução. O foco está nas classes e não nos seus atributos e

operações Quando atributos ou operações são representados, define-se

apenas o nome destes (nada de tipo, visibilidade,

parâmetros,...)

Page 11: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Modelo de classes

◦ As classes de especificação e implementação

consideram a tecnologia usada na solução, entretanto: As classes de especificação descrevem a solução com um

elevado nível de abstração (independente de uma LPOO).

As classes de implementação descrevem a solução

considerando a implementação da solução em uma LPOO

Page 12: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

É fortemente recomendado que se padronize a nomenclatura a ser usada para os elementos do modelo de classes.

A seguir, é apresentada uma sugestão de padronização

◦ Para nomes de Identificadores (regra geral): Remover qualquer espaço em branco, preposição, artigo,

acento ou caracter especial. EX: OrdemPedido, obterTotal(), precoUnitario, ...

Padronizando a Nomenclatura

Page 13: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

◦ Para nomes de Classes e de Relacionamentos: Iniciar as palavras com letra maiúscula. EX: Cliente, ItemPedido, Pedido, OrdemPedido,...

◦ Para nomes de propriedades (Atributos) e operações (Métodos): A primeira palavra inicia com letra minúscula, as demais

iniciam com letras maiúsculas. Acrescentar parênteses às operações e Siglas ficam inalteradas. EX: nome, precoUnitario, obterTotal(), CPF, ...

Padronizando a Nomenclatura

Page 14: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Classes Uma breve revisão...

◦ Uma classe representa um grupo de objetos semelhantes.

◦ Uma classe descreve esses objetos através de atributos e operações.

◦ Os atributos correspondem às informações que um objeto armazena.

◦ As operações correspondem às ações que um objeto sabe realizar.

Page 15: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Classes Notação para uma classe

◦ Uma classe é representada através de uma “caixa” com, no máximo, três compartimentos exibidos (nome da classe, atributos e métodos). Por convenção, o nome de uma classe é apresentado no

singular.◦ A notação utilizada depende do nível de abstração

desejado.

Page 16: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Classes Exemplo: classe ContaBancaria

Page 17: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Associações Representa relacionamentos que são formados

entre objetos.

◦ Embora as associações sejam representadas entre

classes, tais associações representam ligações entre

objetos das classes envolvidas.

São representadas através de um segmento de

reta.

Page 18: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Associações

Exemplos:

Cliente Produto

ContaCorrente HistóricoTransações

Hóspede Quarto

Page 19: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Multiplicidades das Associações Representam os limites inferior e superior da

quantidade de objetos aos quais um outro objeto pode estar associado.

Cada associação em um diagrama de classes possui duas multiplicidades, uma em cada extremo da linha de associação.

Page 20: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Multiplicidades das Associações

Nome SimbologiaApenas Um 1..1 (ou 1)

Zero ou Muitos 0..* (ou *)

Um ou Muitos 1..*

Zero ou Um 0..1

Intervalo Específico li..ls

Page 21: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Multiplicidades das Associações Exemplo 1:

◦ Pode haver um cliente que esteja associado a vários pedidos.

◦ Pode haver um cliente que não esteja associado a pedido algum.

◦ Um pedido está associado a um, e somente um, cliente.

Cliente Pedido

1 0..*

Page 22: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Multiplicidades das Associações Exemplo 2:

◦ Uma corrida está associada a, no mínimo, dois velocistas ◦ Uma corrida está associada a, no máximo, seis velocistas. ◦ Um velocista pode estar associado a várias corridas.

◦ Uma lista de intervalos pode ser especificada na multiplicidade de uma associação EX: “1,3,5..9,11” equivale a um intervalo {1,3,5,6,7,8,9,11}

Velocista Corrida2..6 0..*

Page 23: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Conectividade das Associações A conectividade corresponde ao tipo de

associação entre duas classes: ◦ um para um◦ um para muitos◦ muitos para muitos.

A conectividade da associação entre duas classes depende da multiplicidade da associação.Conectividade Em um

extremoNo outro

extremoUm para um 0..1 ou 1 0..1 ou 1

Um para muitos 0..1 ou 1 * ou 1..* ou 0..*

Muitos para muitos * ou 1..* ou 0..* * ou 1..* ou 0..*

Page 24: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Conectividade das Associações Exemplo:

um para um

um para muitos

muitos para muitos

Page 25: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Participação das Associações Indica a necessidade da existência da

associação. A participação pode ser

◦ Obrigatória. Se o valor mínimo da multiplicidade de uma associação é

igual a 1◦ Opcional

Se o valor mínimo da multiplicidade de uma associação é igual a 0.

Por exemplo:

obrigatórioopcional

Page 26: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Detalhando uma associação Para melhor esclarecer o significado de uma

associação no diagrama de classes, a UML

define três recursos de notação:◦ Nome da associação: fornece algum significado

semântico a mesma.

◦ Direção de leitura: indica como a associação deve

ser lida

◦ Papel: para representar um papel específico em

uma associação.

Page 27: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Detalhando uma associação

PapelNome

Papel

Direção

Page 28: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Detalhando uma associação

Atenção:

É preferível não nomear associações a usar nomes vagos ou óbvios demais.

O mesmo vale para papéis!

O objetivo é ter diagramas claros e não “poluídos”.

Isto é, equilibrar o entendimento e a concisão !

Page 29: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Detalhando uma associação Embora ocorra com pouca freqüência, pode-se

definir mais de uma associação entre duas

classes.

Nestes casos, já que as duas classes

envolvidas são as mesmas, o detalhamento

das associações (uso de papéis, nomes de

associações e/ou direção de leitura) é

apropriado para aumentar a legibilidade.

Page 30: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Detalhando uma associação

Page 31: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Associação de Agregação É um caso especial da associação

◦ conseqüentemente, multiplicidades, participações, papéis, etc. podem ser usados igualmente

É utilizada para representar conexões que guardam uma relação todo-parte entre si.

Page 32: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Associação de Agregação A diferença entre associação simples e uma

associação de agregação é puramente semântica◦ Em uma associação de agregação, um objeto está

contido no outro, ao contrário de uma associação simples que apenas relaciona objetos.

◦ Onde se puder utilizar uma associação de agregação, uma associação simples também poderá ser utilizada.

Page 33: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Associação de Agregação

Atenção:

Sejam duas classes associadas, X e Y. Se

uma das perguntas a seguir for respondida

com um sim, então, provavelmente há uma

agregação onde X é todo e Y é parte.

X tem um ou mais Y?

Y é parte de X?

Page 34: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Associação de Agregação Notação :

◦ Um segmento de reta que conecta as classes relacionadas e possui um losango branco perto da classe que representa o todo.

Exemplo:

Obs:◦ Na associação de agregação não há dependência existencial entre as partes e o todo.

Se uma Equipe for extinta, o Jogador ainda pode ser membro de outras

JogadorEquipe*

membro

*AssociaçãoEsportiva

* *

Afiliada

Page 35: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Composição Um livro é composto de capítulos

◦ Capítulo é parte essencial de livro◦ Se não existir capítulo, não existe livro◦ Capítulo não existe fora de livro

Linha com losângulo preenchido na classe “dominante”◦ Livro é composto de 1 ou mais capítulos

Page 36: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Classe Associativa É uma classe que está ligada a uma associação,

ao invés de estar ligada a outras classes. É normalmente necessária, quando duas ou

mais classes estão associadas, e é necessário manter informações sobre esta associação.

Uma classe associativa pode estar ligada a associações de qualquer tipo de conectividade. ◦ Todavia, é mais comum com conectividade muitos

para muitos

Page 37: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Notação:◦ Mesma da classe, entretanto a classe é ligada a uma associação.

Exemplo:

OBS:◦ Não se descreve a linha de associação de uma classe associativa

Classe Associativa

nometelefoneendereço

Pessoa

razãoSocialendereço

Empresa

saláriodataContratação

Emprego

*

empregado

*

empregador

Page 38: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Classe Associativa De forma geral, pode-se substituir, sem perda de informação, uma classe

associativa por uma classe ordinária

Note que a classe emprego tem participação obrigatória em ambas as associações

Page 39: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Generalizações e Especializações

O modelador também pode representar relacionamentos entre classes.◦ Esses denotam relações de generalidade ou

especificidade entre as classes envolvidas.◦ Exemplo: o conceito mamífero é mais genérico

que o conceito ser humano.◦ Exemplo: o conceito carro é mais específico que o

conceito veículo. Esse é o chamado relacionamento de

herança.◦ relacionamento de generalização/especialização◦ relacionamento de gen/espec

Page 40: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Generalizações e Especializações

Terminologia ◦ subclasse X superclasse.◦ supertipo X subtipo.◦ classe base X classe herdeira.◦ classe de especialização X classe de

generalização.◦ ancestral e descendente (herança em vários

níveis) Notação definida pela UML

Page 41: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Semântica da Herança

Subclasses herdam as características de sua superclasse◦ É como se as características da superclasse

estivessem definidas também nas suas subclasses Note a diferença semântica entre a herança e a

associação.◦ A primeira trata de um relacionamento entre

classes, enquanto que a segunda representa relacionamentos entre instâncias de classes.

Page 42: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Semântica da Herança

◦Na associação, objetos específicos de uma classe se associam entre si ou com objetos específicos de outras classes.

◦Exemplo: Herança: “Gerentes são tipos especiais de funcionários”. Associação: “Gerentes chefiam departamentos”.

Page 43: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Herança de Associações Não somente atributos e operações, mas também

associações são herdadas pelas subclasses. No exemplo abaixo, cada subclasse está

associada a Pedido, por herança.

Page 44: Modelagem de Classes do Domínio. Introdução O modelo de casos de uso fornece uma perspectiva do sistema a partir de um ponto de vista externo. De posse.

Propriedades da Herança