Você está na página 1de 21

Diagrama de Classes

Diagrama de Classes

O caso de uso fornece uma perspectiva do sistema


de um ponto de vista externo (do ator)
Internamente os objetos colaboram para atender s
funcionalidades do sistema
Demonstra a estrutura esttica dessa colaborao,
mostra as classes de um sistema, seus atributos e
operaes, e como as classes se relacionam.


Diagrama de Classes Um
Exemplo
Store
1

Uses

O diagrama de objetos (que pode ser visto como uma


instanciao do diagrama de classes) tambm
representa a estrutrua esttica

Perspectivas de um Diagrama de
Classes

address : Address

name : Text

ProductSpecification
ProductCatalog

addSale()

description : Text

Contains
1

Looks-in

price : Quantity
1..

upc : UPC

specification()

O diagrama de classes evolui com o sistema


e pode ter diferentes perspectivas

Houses
1
1

Describes

Sale

POST

date : Date

SalesLineItem

isComplete : Boolean
time : Time

Captures
endSale()
enterItem()
makePayment()

Contains
1

quantity : Integer
1.. *

becomeComplete()

subtotal()

makeLineItem()
makePayment()
total()

Logs-completed 4

Payment

Na anlise identificamos objetos (classes)


no domnio do problema
No projeto pensamos em objetos (classes)
para a soluo

Paid-by
amount : Quantity
1

Perspectivas de um Diagrama de
Classes
O modelo conceitual (anlise) representa as
classes no domnio do negcio em questo. No
leva em considerao restries inerentes
tecnologia a ser utilizada na soluo de um
problema.
O modelo de classes de especificao (projeto)
obtido atravs da adio de detalhes ao modelo
anterior conforme a soluo de software escolhida.
O modelo de classes de implementao
corresponde implementao das classes em
alguma linguagem de programao.

Definio de Objetos


Conceitual: representa uma entidade,


coisa , processo ou conceito do mundo
real e que possui:





Identidade valor de uma caracterstica que o


identifica para reconhecimento
Atributos qualidades, caractersticas
Comportamento habilidades de
processamento

Definio de Objetos


Definio de Classes

De implementao: representa um mdulo de


sw que recebe e produz dados



Identidade identificador em lg de implementao


Atributos variveis e seus tipos, que recebem
diferentes valores e definem o estado do objeto
Comportamento funes ou procedimentos, os
resultados dessas funes determinam o
comportamento do objeto

Definio de Classes


Conceitual: so agrupamentos de objetos, so


abstraes de um coletivo de entidades do
mundo real
O modelo genrico desse coletivo contm
atributos e comportamentos comuns.

Notao UML para Classes

De implementao: corresponde a um tipo de


uma lg de programao
Um modelo genrico para criar variveis que
armazenaro os objetos correspondentes.

Identificao
da classe

Atributos
Mtodos

Atributo
Caracterstica, qualidade de um objeto ou classe.
Seus valores servem para diferenciar objetos
(Instncias)
Overriding (ou Sobreposio)
Mecanismo para redefinir ou tornar um atributo
no aplicvel

<<entidade>>
Cliente

<<entidade>>
Cliente

De Pacote Vendas

De Pacote Vendas

Atributos
Mtodos

Notao UML para Atributos




A maioria opcional, seu uso vai depender do


tipo de viso no qual estamos trabalhando e
podem ser abstratos ou utilizar a notao de uma
lg de programao
[Visibili/d]Nome[Multiplici/d]:[Tipo]=[Valor][{Proprie/ds}]

Notao UML para Atributos Visibilidade




+ : visibilidade pblica: o atributo visvel


no exterior da classe.
- : visibilidade privada : o atributo visvel
somente por membros da classe.
# : visibilidade protegida: o atributo
visvel tambm por membros de classes
derivadas

Notao UML para Atributos Multiplicidade




Ex: notas[10]
matrizDeValores[5,10]

Notao UML para Atributos Tipos




Indicam o formato do valores que o atributo


pode assumir
Na viso conceitual o tipo abstrato
Ex: dataDaVenda: tipoData
Na viso de implementao utilizam-se os
tipos da lg de programao
Ex: salario: float

Mtodos ou Servios
Processamento realizado por um objeto que
indica o seu comportamento, em funo do
recebimento de uma mensagem

Mensagens
Ativao de um mtodo. Um objeto se utiliza
de um servio ou se comunica com outro
objeto enviando uma mensagem

Usada para especificar atributos que so


arranjos
Indica dimenso de vetores e matrizes

Notao UML para Atributos


Valor Inicial e Propriedades


Pode-se indicar o valor ou contedo do


atributo imediatamente aps a sua criao,
ou o seu valor default
Ex: resultado: int=0
As propriedades descrevem comentrios ou
indicaes sobre o atributo, podem mostrar
se ele ou no opcional
Ex: dataDaVenda {valor constante}

Mtodos ou Servios
Ligao Dinmica (late binding)
Mecanismo pelo qual se decide o destino de
uma mensagem em tempo de execuo
Ex: int (*f)();
i =f();

a funo s definida
durante a execuo

Mtodos ou Servios

Mtodos ou Servios

Sobrecarga de operadores (Overloading)


Operaes de mesmo nome, mas
implementadas de maneira diferente

Polimorfismo
Possibilidade de uma funo poder manipular
valores com tipos (formas) diversas
Ex: function comp(L:lista):integer

Ex: operaes de adio, subtrao


implementadas diferentemente para real e
inteiro

qualquer tipo de lista (genrico)


mesma implementao

Mtodos ou Servios

Mtodos ou Servios
Construtor/Destrutor
Funo para criao/remoo de instncias
de objetos/classes

Notao UML para Mtodos Parmetros

Notao UML para Mtodos




A notao e uso vai depender do tipo de viso


no qual estamos trabalhando e podem ser
abstratos ou utilizar a notao de uma lg de
programao
[Visibili/d]Nome(Parmetros)]:[Retorno][{Proprie/ds}]

Os parmetros dados de entrada e/ou sada


para o mtodo so representados por
Nome-do-Parmetro:Tipo=Valor-Padro
Ex:


Viso conceitual
ImprimirData(data:TipoData)
Viso de implementao
ArmazenarDados(nome:char[30],salario:float=0.0)

Notao UML para Mtodos


Tipo de Retorno
O Valor-de-Retorno indica se o mtodo retorna
algum valor ao trmino de sua execuo e qual
o tipo de dado do valor retornado.
Ex:


Viso Conceitual
CalcularValor(): TipoDinheiro
Viso de implementao
ArmazenarDados(nome:char[30]): bool

Notao UML para Mtodos


Propriedades


til distingir operaes de mtodos. Operaes


algo que se evoca sobre um objeto (a chamada do
procedimento). Para realizar uma operao a classe
implementa um mtodo (o corpo do procedimento)
til distingir operaes que alteram ou no o estado
(atributos) de uma classe
No alteram: query, mtodos de obteno, getting
methods
Alteram: modificadores, mtodos de atribuio ou
fixao, setting methods

Construo do Diagrama de Classes


Refinamentos Sucessivos

VisoAbstrata  detalhadamento (impl.)


Na viso conceitual: cada classe pode ser vista como um
conceito ou um tipo, e os mtodos so identificados
numa fase posterior.
Na viso de implementao: os mtodos aparecem
obrigatoriamente e consideramos aspectos de controle,
esteretipos, pacotes, etc.
Podem existir outras vises intermedirias (por exemplo:
de domnio e de aplicao, (anlise) de especificao
(projeto)

Notao UML para Mtodos


Visibilidade e Propriedades


Visibilidade similar ao de atributo


Comentrios ou restries para os mtodos
Ex:
Area() {rea <=600}
Restringe a 600 unidades o valor mximo das reas
a calcular

Exemplo de Uma Classe


Viso de Implementao
Viso Conceitual
Aluno
nome:TipoNome
RA: TipoCdigo

<<entidade>>
Aluno
DePacoteCadastro
-nome[30]:char
+RA: int {valorconstante}

calculaMdia():TipoNota
+calculaMdia():Double

Construo do Diagrama de
Classes
Na fase de anlise constri-se
primeiramente um diagrama de classes
sem se preocupar em definir os mtodos,
ao qual chamaremos de Modelo
Conceitual
Na fase de projeto os mtodos so
adicionados e o Modelo Conceitual
refinado gerando o Diagrama de Classes

Modelo Conceitual
Diagrama de Classes
Perspectiva Conceitual
Modelo Conceitual

Representao de conceitos no domnio do


problema
Deve mostrar: conceitos, associaes entre
conceitos e atributos de conceitos
(na fase de anlise, no se preocupa ainda
em representar mtodos os servios)

Modelo Conceitual - Exemplo

Criando um Diagrama de ClassesPerspectiva Conceitual


1. Liste os conceitos candidatos para os casos
de usos em questo usando a lista de categorias
comuns e identificao textual de nomes.
2. Desenhe-os em um modelo conceitual.
3. Adicione as associaes necessrias para
registrar os relacionamentos para os quais
preciso preservar alguma memria
4. Adicione os atributos necessrios para
cumprir os requisitos de informao.

Identificando Conceitos
(Entidades) Regras teis

Identificando Conceitos
uma entidade (idia, coisa ou objeto) do mundo
real.




Um bom modelo conceitual deve superestimar o


nmero de conceitos.


Os conceitos so associados ao esteretipo de classe


<< entidade >>
um esteretipo para uma classe UML um classificador
que mostra o tipo ao qual a classe pertence.

melhor especificar demais do que de menos


No exclua entidades simplesmente porque os
requisitos no indicam a necessidade de guardar
informaes sobre eles (comum em projeto de BD)
Comece fazendo uma lista de entidades candidatos
a partir de um checklist.
Considere os substantivos e frases nominais nas
descries textuais do domnio do problema como
possveis candidatos a entidades ou atributos

Checklist: Classes Entidades Tpicas


Categoria

Classes Entidades Tpicas

Exemplos

Objeto fsico ou tangvel

Categoria

Terminal de ponto-de-venda

Coisas em um container

Avio
Especificao, projeto, ou
descrio de coisas

Passageiro

Especificao de produto

Sistemas externos

Servio de crdito

Fome

Descrio de vo

Controle de trfego areo

Lugares

Loja

Nomes abstratos

Transaes

Aeroporto
Venda, Pagamento

Organizaes

Itens de transao

Itens de venda

Aracnofobia

Reserva

Venda, Assalto, Reunio


Vo, Decolagem

Operador

Regras e polticas

Piloto
Container de coisas

Departamento de vendas
Companhia area

Eventos

Parcelas de pagamento
Papis de pessoas

Exemplos
Item

Poltica de devoluo
Poltica de cancelamento

Loja
Avio

Identificando Entidades a partir


dos Casos de Uso

Classes Entidades Tpicas

Ao do Ator
Categoria

Exemplos

Catlogos

1. Este caso de uso comea


quando um Cliente chega no
caixa com itens para comprar.
2. O Operador registra o identificador de cada item.
Se h mais de um do mesmo
item, o Operador tambm pode
informar a quantidade.

Catlogo de produtos
Catlogo de peas

Registros de finana, trabalho,


contrato, questes legais

Recibo, Contrato de trabalho


Registro de manuteno
Linha de crdito

Instrumentos e servios
financeiros

Aes

Manuais, livros

Manual do empregado

Resposta do Sistema

3. Determina o preo do item e


adiciona informao sobre o item
transao de venda em andamento.
Mostra a descrio e o preo do
item corrente.

Manual de reparos

Usar com cuidado!




Linguagens naturais: impreciso e ambigidade

Entidades Candidatas para o


Sistema Posto Comercial
POST

Item

Store

Sale

Entidades de Relatrio


No incluir no modelo conceitual quando:




Sales
LineItem

Cashier

Customer

Payment

Product
Catalog

Product
Specification

Toda informao contida no relatrio derivada


de outras fontes

Manager

Incluir no modelo conceitual quando:




Relatrio tem um papel especial em termos das


regras de negcio


Conceitos restritos ao caso de uso Comprar Itens Verso 1

Ex.: Recibo de venda d direito devoluo dos itens


comprados

Entidades de Especificao ou
Descrio

Criando o Diagrama de ClassesPerspectiva Conceitual







Estratgia do fazedor de mapas:


Usar nomes existentes no vocabulrio do domnio
Incluir apenas conceitos pertinentes para os requisitos
(casos de uso) em questo
Excluir tudo que no h no domnio do problema

A especificao ou descrio de um objeto


deve ser representada como uma entidade em
separado
evita perda de informao quando o objeto
deletado
reduz informaes redundantes ou duplicadas

Erro comum: atributo em vez de entidade



Vo

Vo

Aeroporto

ou... ?
destino

nome

Muito comum no domnio de produtos e


vendas
Item

Atributos normalmente correspondem a um texto ou


nmero no mundo real

Ex.:

pior

Entidades de Especificao ou
Descrio Outro exemplo
data
nmero
hora

Aeroporto

Voa-para
1

pior

nome

Descrio-Vo

Descrito-por
data
hora

melhor

*
Descreve-vo-para

1
Aeroporto
nome

Identificando Atributos
Cashier
not a "simple" attribute

Worse
name
currentPOST

Better
name

Uses

Nmero serial

Representar um conceito complexo


Relacionar conceitos (atributo chaveestrangeira)

Atributos de Tipo No-Primitivo




Um atributo deve ser de tipo no-primitivo


quando:


composto de sees separadas

Precisa ser analisado ou validado

Possui outros atributos

uma quantidade com uma unidade

POST

Ex.: Data, Nmero, Texto, Hora, Endereo, etc.

Cashier

Item

Descreve
1

melhor

Atributos no devem ser usados para:

nmero

descrio
preo
UPC

Atributos devem preferencialmente


representar tipos primitivos de dados ou de
valores simples


Vo

Especificao-Produto

Identificando Atributos


Vo

descrio
preo
nmero serial
UPC

number

Ex.: endereo, data


Ex.: CPF, nmero de matrcula
Ex.: Um preo promocional com prazo de validade
Ex.: valores monetrios, medidas

Adicionando Atributos ao
Sistema POST
Conceito

Atributo Derivado


Atributos e justificativa

Pagamento

quantiaPara determinar se pagamento suficiente


e calcular troco.

Especificao-Produto

descrioPara mostrar na tela e imprimir no recibo.


UCPPara localizar especificao do item.

preoPara calcular o total da venda.


Venda

data, horaPara imprimir no recibo e registrar no log


de vendas.

Item de Venda

quantidadePara registrar a quantidade digitada


quando h mais de um do mesmo item.

Loja

nome, endereoPara imprimir no recibo.

Um atributo derivado um atributo cujo


valor pode ser deduzido a partir de outras
informaes
Ex.: quantidade em Item de Vendapode ser
deduzido a partir da multiplicidade da
associao entre Item de Venda e Item
SalesLineItem

0..1

Records-sale-of

Item

1..*

/quantity

derived attribute from


the multiplicity value

Identificando Relacionamentos


Os relacionamentos entre as classes representam a


interao entre seus objetos: em geral, representam
a utilizao de servios e/ou a organizao entre as
mesmas.

1. Associaes


Devem refletir o domnio do problema




Tipos:






Associao (associao simples)


Agregao/composio
Generalizao
Dependncia
Refinamentos

Conexo entre classes/objetos


Relacionamento que descreve uma srie de
ligaes entre duplas de classes/ objetos
Uma ligao significa por exemplo que:




elas "conhecem uma a outra


"esto conectadas com
para cada X existe um Y

Associaes
Uma associao representa relacionamentos
(ligaes) que so formados entre objetos
durante a execuo do sistema.
embora as associaes sejam representadas
entre classes do diagrama, tais associaes
representam ligaes possveis entre objetos
das classes envolvidas

Associaes


O mais comum, com apenas uma conexo,


representada por uma linha slida e um
nome (geralmente verbo)

Caixa

registra

Venda

Associaes

Nome de associao, direo de


leitura e papis

Podem possuir dois nomes, significando um


nome para cada sentido da associao e os
papis de cada classe

Para melhor esclarecer o significado de uma


associao no diagrama de classes, a UML
define trs recursos de notao:

registra

Caixa

Nome da associao: fornece algum


significado semntico mesma.
Direo de leitura: indica como a associao
deve ser lida
Papel: para representar um papel especfico em
uma associao.

Venda

registrada por

Associaes Cardinalidade
(Multiplicidade)

Exemplo (Nome de associao,


direo de leitura e papis)

Nome da
associao

Papel

Direo
de leitura
Papel

contratante

Contrata

Especifica o nmero de objetos de cada


classe envolvidos com a associao
A leitura da cardinalidade diferente para
os diferentes sentidos da associao

contratado

Organizao

Indivduo
*

registra
Caixa

Associaes - Multiplicidade
*
1..*

1..40

3, 5, 8

zero or more;
"many"

one or more

one to forty

exactly five

exactly three,
five or eight

0..*

Venda

Multiplicidades
Cada associao em um diagrama de classes
possui duas multiplicidades, uma em cada
extremo da linha de associao.

10

Exemplo (multiplicidade)

Exemplo (multiplicidade)
A caixa pode registrar vrias vendas
Uma venda registrada em somente uma
caixa
Pode haver uma caixa que no registra
nenhuma venda

Caixa

0..*

Exemplo (conectividade)
Departamento
0..1

Empregado
0..*

Um para um
Um para muitos

Muitos para muitos


Projeto

0..*

1..*

Corrida

Conectividade
Um para um
Um para muitos

Muitos
muitos

Em um
extremo
0..1
1
0..1
1

para *
1..*
0..*

No outro
extremo
0..1
1
*
1..*
0..*
*
1..*
0..*

Participao

Departamento

Empregado

0..*

Conectividade X Multiplicidade

A conectividade corresponde ao tipo de


associao entre duas classes: muitos para
muitos, um para muitos e um para um.
A conectividade da associao entre duas
classes depende dos smbolos de
multiplicidade que so utilizados na
associao.

2..6

Venda

Conectividade

Empregado

participa

Velocista

registra
1

Uma corrida est associada a, no mnimo,


dois velocistas
Uma corrida est associada a, no mximo,
seis velocistas.
Um velocista pode estar associado a vrias
corridas (a zero ou mais)

Uma caracterstica de uma associao que


indica a necessidade (ou no) da existncia
desta associao entre objetos.
A participao pode ser obrigatria ou
opcional.
Se o valor mnimo da multiplicidade de uma
associao igual a 1 (um), significa que a
participao obrigatria
Caso contrrio, a participao opcional.

11

Associaes - Navegabilidade


Associaes - Navegabilidade

Mostra a direo de navegao, ou seja do canal


de comunicao entre os objetos e classes.
Uma associao navegvel da classe A para a
classe B, se, dado um objeto de A, consegue-se
obter de forma direta os objetos relacionados da
classe B.
importante na viso de especificao e
implementao -> visibilidade entre objetos,
capacidade de um objeto de uma classe mandar
mensagem a um objeto de outra classe

Dada uma mercadoria pode-se identificar diretamente


a empresa fornecedora, mas a volta no verdadeira

fornece
Empresa

0..*

0..*

Mercadoria

Exemplo (associao
reflexiva)

Associaes reflexivas
Associa objetos da mesma classe.
Cada objeto tem um papel distinto na associao.

supervisor

A utilizao de papis bastante importante para


evitar ambigidades na leitura da associao.
Uma associao reflexiva no indica que um
objeto se associa com ele prprio.

Superviso
1

Empregado *
supervisionado

Ao contrrio, indica que objetos de uma mesma classe


se associam

Associao Exclusiva


Podem ser especificadas restries em duas ou mais


associaes
Na associao exclusiva objetos de uma classe podem
participar de no mximo uma das associaes ao
mesmo tempo
0..*

Contrato

0..*

Associao Ordenada


Especifica uma ordem entre os objetos da


associao. Ex: janelas de um sistema tm
que ser ordenadas na tela (uma est no topo,
uma est no fundo e assim por diante).

em OCL: xor

{OU}
1..*
Empresa

1..*
Pessoa

Janela Top

{ordenada}

Janela Bottom

12

Notao para uma classe


associativa

Classes de Associaes (ou


Associativas
uma classe que est ligada a uma
associao, ao invs de estar ligada a outras
classes.
criada quando duas ou mais classes esto
associadas, e necessrio manter informaes
sobre esta associao que possui operaes e
mtodos (portanto ela uma classe)
Uma classe associativa pode estar ligada a
associaes de qualquer tipo de conectividade.

Representada pela notao utilizada para uma


classe. A diferena que esta classe ligada a
uma associao.
Emprego
salrio
dataContratao
Pessoa
nome
telefone
endereo

Associaes n-rias
So utilizadas para representar a associao
existente entre objetos de n classes.
Uma associao ternria um caso mais
comum (menos raro) de associao n-ria
(n = 3).
Na notao da UML, as linhas de
associao se interceptam em um losango.

empregado

empregador

Empresa
razoSocial
endereo

Exemplo (associao ternria)


Tcnico
nome

Uso

Projeto
nome
verba

*
Computador
modelo

2. Agregao/ Composio
Associao Qualificada


Casos particulares de associao




Usadas com multiplicidades 1..* ou *. O


qualificador (chave) identifica um objeto

chave para
recupera conta

Cliente

nr.
conta

possui
0..*

ContaCorrente

conseqentemente, multiplicidades,
participaes, papis, etc. podem ser usados
igualmente
onde se puder utilizar uma
agregao/composio, uma associao tambm
poder ser utilizada.

Representam uma relao todo-parte


Uma das classes uma parte ou est contida
em outra.

13

Agregao/Composio
Caractersticas particulares:
So assimtricas: se um objeto A parte de um
objeto B, B no pode ser parte de A.
Propagam comportamento, no sentido de que
um comportamento que se aplica a um todo
automaticamente se aplica as suas partes.
As partes so criadas e destrudas pelo todo, na
classe do objeto todo, existem operaes para
remover e adicionar as partes

Como identificar
Sejam duas classes associadas, X e Y. Se
uma das perguntas a seguir for respondida
com um sim, provavelmente h uma
agregao onde X todo e Y parte.
X tem um ou mais Y?
Y parte de X?


Palavras chaves: consiste em, contm,


parte de, tem, possui, composta de, faz
parte de, etc.

Agregao, caractersticas
A destruio de um objeto todo no implica
necessariamente a destruio de suas partes
Um objeto pode pertencer a mais de um
composto, ou estar contido nele vrias vezes
- conhecida como agregao de
compartilhamento (ou compartilhada)

Composio, caractersticas
A destruio de um objeto todo implica
necessariamente a destruio de suas partes
Uma classe pertence a um nico composto (vive
nele).
- conhecida como agregao no compartilhada

composto de

Time

composto de

Jogador

captulo

Notao losango sem preenchimento

Relacionamento entre uma classe geral e outra


mais especfica (de herana). A classe mais
especfica pode ser usada no lugar da mais geral e
herda suas caractersticas
como se as caractersticas da superclasse
estivessem definidas tambm nas suas
subclasses

Representa o relacionamento -um (is-a).

seo

Notao losango com preenchimento

Notaes para generalizao

3. Generalizao/Especializao


Superclasse

Subclasse1

Subclasse2 ... SubclasseN

Superclasse

Subclasse1 Subclasse2 ... SubclasseN

Outros nomes: classe base e derivada, classe me (pai) e


filha; tipo e sub-tipo; pai e herdeira; geral e especfica;
ancestral e descentente

14

Herana de associaes

Generalizao/Especializao

Atributos e operaes e associaes so herdados


pelas subclasses.
Realiza
Cliente

Pedido
1

ClientePessoaFsica

Herana: Gerentes so tipos especiais de funcionrios.


Associao: Gerentes chefiam departamentos.

ClientePessoaJurdica

Hierarquias de generalizao
Forma
origem

Retngulo

Crculo
raio : float

Generalizao/Especializao
Transitividade: uma classe em uma hierarquia herda
propriedades e relacionamentos de todos os seus
ancestrais.
Ou seja, a herana pode ser aplicada em vrios nveis,
dando origem a hierarquia de generalizao.
uma classe que herda propriedades de uma outra classe
pode ela prpria servir como superclasse.

mover()
exibir()

ponto : Ponto

Diferena semntica entre a herana e a associao.


A primeira trata de um relacionamento entre
classes, enquanto que a segunda representa
relacionamentos entre instncias de classes.
Na associao, objetos especficos de uma classe se
associam entre si ou com objetos especficos de
outras classes.

Polgono
pontos : ListaDePontos
exibir()

Assimetria: dadas duas classes A e B, se A for uma


generalizao de B, ento B no pode ser uma
generalizao de A.
Ou seja, no pode haver ciclos em uma hierarquia de
generalizao.

Quadrado

Herana mltipla

Exemplo (Herana mltipla)

Herana mltipla: Uma classe pode ter mais de


uma superclasse.

Veculo

Tal classe herda de todas a suas superclasses.

O uso de herana mltipla deve ser evitado.


Esse tipo de herana difcil de entender.
Requer polticas para resolver conflitos de herana
Algumas LPs no do suporte implementao desse
tipo de herana (Java e Smalltalk).

Veculo Terrestre

Veculo Aqutico

Veculo Anfbio

15

Herana Mltipla
(Entrelaamento)

Herana Mltipla
_________

Herana Mltipla (Overriding)

Classes abstratas e concretas


Usualmente, a existncia de uma classe se justifica
pelo fato de haver a possibilidade de gerar
instncias (classes concretas).
No entanto, podem existir classes que no geram
instncias diretas: classes abstratas.
Utilizadas para organizar e simplificar uma
hierarquia de generalizao.
Propriedades comuns a diversas classes podem ser
organizadas e definidas em uma classe abstrata a partir
da qual as primeiras herdam.

Subclasses de uma classe abstrata tambm podem


ser abstratas, mas a hierarquia deve terminar em
uma ou mais classes concretas.

Notao para classes abstratas

Classes abstratas Sistema Post

Na UML, uma classe abstrata


representada com o seu nome em itlico.
A classe Telefone no pode
ser instanciada. Telefone Fixo
e Telefone Celular so
concretas, implementam os
mtodos e podem ser
instanciadas.
Telefone Fixo

Telefone

Telefone Celular

16

Classes abstratas Sistema Post

Restries sobre generalizaes


Restries sobre generalizaes so representadas
(entre chaves) no diagrama de classes prximas
linha do relacionamento.
Restries predefinidas pela UML:

Restries sobre generalizao e


na herana


Sobreposio (overlapping): caso em que um objeto


da superclasse pode pertencer simultaneamente a
mais do que uma subclasse
Disjuntiva (disjoint): superclasses podem se
especializar em apenas uma subclasse
Uma generalizao est completa se j foram
especificadas todas as sub-classes at aquele ponto e
est incompleta se existir a possibilidade de uma
outra especializao, caso em que um objeto da
superclasse pode no pertencer a nenhuma das
subclasses

Como identificar
O seguinte teste pode ser realizado para identificar
se duas classes X e Y se relacionam por
generalizao:
X um tipo de Y?

Regra da substituio: seja a classe A uma


generalizao de outra B. No pode haver
diferenas entre utilizar instncias de B ou de A,
do ponto de vista dos usurios de A.
Ou seja, inadequado o uso de generalizao onde nem
todas as propriedades da superclasse fazem sentido para
a subclasse.

Sobreposta
Disjunta
Completa
Incompleta

Exemplos (Restries sobre


generalizaes)
FiguraGeomtrica

Veculo

{incompleta, disjunta}

{incompleta}
Caminho

Trator

Elipse

Quadrado

Crculo

Atleta

Indivduo

{incompleta, sobreposta}

{completa, disjunta}
Mulher

Homem

Corredor

Nadador

Conformidade das subclasses


superclasse
Cliente
*

ContaBancria
-nmero
-dataAbertura
-saldo
+debitar()
+creditar()

ContaCorrente
-limiteSaque

HistricoTransaes
1

ContaPoupana
-dataAniversrio
-rendimento

17

Quais hierarquias so adequadas?

Dicas
Deve-se evitar a construo de hierarquias de
generalizao muito profundas (com mais de trs nveis)
dificultam a leitura do diagrama.
Papis e subclasses no devem ser confundidos.
Um papel corresponde ao uso de uma certa classe em
uma associao.Uma classe pode assumir vrios papis.
Deve-se evitar a criao de subclasses em situaes que
podem ser resolvidas atravs da utilizao de papis.

4. Dependncias


Conexo entre dois elementos,


representando que uma mudana no
elemento independente afeta o dependente.

elemento que depende


(usa)

Mercadoria

elemento de que se depende


(usado)

5. Refinamentos


Relacionamentos entre duas descries de uma


mesma coisa, mas em nveis de abstrao
diferentes
So usados em modelos de coordenao, ou
seja, modelos que mostram como os modelos de
diferentes fases se relacionam
Classe de
Anlise

Fornecedor

Identificao dos
Relacionamentos


Na perspectiva conceitual representam-se


relacionamentos conceituais
As associaes so estabelecidas
analisando-se os papis.
A generalizao representa a hierarquia
entre tipos e seus sub-tipos
A agregao entre um todo e suas partes.

Classe de
Projeto

Perspectiva Conceitual
Associaes


Indicam conhecimento de um
relacionamento que precisa ser preservado
durante algum tempo


Durao de milisegundos ou anos, dependendo


do contexto

18

Associaes Tpicas
Categoria
A uma parte fsica de B (*)

Associaes Tpicas

Exemplos

Categoria

Gaveta - POST

A um membro de B

Asa - Avio
A uma parte lgica de B (*)

Exemplos
Operador - Loja
Piloto - Companhia Area

Item de Venda - Venda

A uma sub-unidade
organizacional de B

Escala - Vo

Departamento - Loja
Manuteno - Companhia Area

A est fisicamente contido em B (*)

POST - Loja

A usa ou gerencia B

Operador - POST

A est logicamente contido em B (*)

Passageiro - Avio
Descrio-Item - Catlogo

A se comunica com B

Piloto - Avio
Cliente - Operador

Vo - Roteiro de Viagem
A uma descrio de B

Agente de Reserva - Passageiro

Descrio-Item - Item
Descrio-Vo - Vo

A um item de uma transao ou


relatrio B

Item de Venda - Venda

A conhecido/registrado/reportado/capturado em B (*)

Venda - POST

Opo de Reserva - Reserva

A est relacionado com uma


transao B

Cliente - Pagamento

A uma transao relacionada


com outra transao B

Pagamento - Venda

A possudo por B

Reserva - Terminal de Reserva

Passageiro - Bilhete
Reserva - Cancelamento
POST - Loja
Avio - Companhia Area

(*) Alta prioridade

Adicionando Associaes ao
Modelo Conceitual do Sistema
POST

Identificando Associaes


Regras teis:





Focar nas associaes cujo conhecimento deve ser


preservado
Usar nomes baseados em expresses verbais que faam
sentido quando lidas no contexto do modelo
Evitar mostrar associaes derivveis ou redundantes
mais importante identificar conceitos do que
associaes
Associaes demais tendem a confundir um modelo ao
invs de ilumin-lo

Aplicando o Checklist
Categoria

Exemplos

Relacionamentos fundamentais


Venda Capturada-em POST




Venda Paga-por Cliente




Para conhecer a venda corrente, calcular total e imprimir


recibo
Para saber se a venda foi paga, calcular troco, e imprimir
recibo

Catlogo-Produto Contm Especificao-Item




Para obter a especificao de um item, dado um UPC

Aplicando o Checklist
Categoria

Exemplos

A uma parte fsica de B

N.A.

A um membro de B

Operador - Loja

A uma parte lgica de B

Item de Venda - Venda

A uma sub-unidade
organizacional de B

N.A.

A est fisicamente contido em B

POST - Loja

A usa ou gerencia B

Operador - POST

A est logicamente contido em B

Item - Loja
Especificao-Produto - Catlogo

A se comunica com B

Gerente - POST
Cliente - Operador

Catlogo - Loja
A uma descrio de B

Especificao-Produto - Item

A est relacionado com uma


transao B

Cliente - Pagamento

A um item de uma transao ou


relatrio B

Item de Venda - Venda

A uma transao relacionada


com outra transao B

Pagamento - Venda

A conhecido/registrado/reportado/capturado em B

Venda (corrente) - POST

A possudo por B

POST - Loja

Operador - Pagamento

Venda (completada) - Loja

19

Eliminando Associaes
Redundantes

Preservando Associaes de
Compreenso


Associao

Considerao

Venda Iniciada-por Operador

Conhecimento no exigido nos


requisitos; derivvel da associao
Operador Registra-vendas-em POST.

Operador Registra-vendas-em POST

Conhecimento no exigido nos


requisitos.

POST Inicializado-por Gerente

Conhecimento no exigido nos


requisitos.

Venda Iniciada-por Cliente

Conhecimento no exigido nos


requisitos.

Loja Armazena Item

Conhecimento no exigido nos


requisitos.

Item de Venda Registra-venda-de Item

Conhecimento no exigido nos


requisitos.

Identificao dos
Relacionamentos
Na perspectiva de implementao representa
um canal de comunicao entre duas classes
A necessidade desse canal dada pelos
diagramas de interao. Sempre que existir
uma mensagem trocada entre dois objetos
nesses diagramas existir uma associao
entre eles, que representa as responsabilidades
das classes.

Identificando Generalizaes

Preservar apenas associaes de conhecimento pode


resultar num modelo que no transmite um completo
entendimento do domnio
Ex.: Venda Iniciada-por Cliente

Remoo deixa de fora um aspecto importante do domnio o fato


de que um cliente gera uma venda

Regra geral:
Enfatizar associaes de conhecimento, mas preservar
associaes que enriquecem o entendimento do domnio

Identificando Generalizaes




Quando particionar em Sub-Classes


a sub-classe tem atributos adicionais de interesse
a sub-classe tem associaes adicionais de
interesse
a sub-classe ser manipulada ou usada de maneira
diferente da super-classe ou das outras sub-classes
a sub-classe se comporta diferente da super-classe
ou das outras sub-classes

Identificando Generalizaes

Quando criar uma Super-Classe


as potenciais sub-classes representam variaes de
um conceito similar
as sub-classes satisfazem 100% a regra
``is-a''
todas as sub-classes possuem um atributo comum
que poder ser expresso na super-classe
todas as sub-classes possuem uma associao
comum que poder ser relacionada super-classe

20

Identificando Agregaes


Identificando Agregaes

Verificar se algumas classes podem ser


agrupadas em algum composto:


elas so geralmente criadas/destrudas no


mesmo instante.
possuem relacionamentos comuns

Exemplo de um modelo conceitual


1
Product
Specification
Contains
1

1..

1
0..1

Describes

Sales
LineItem

Store

Item

Stocks
/quantity

1
1..

address
name

Logscompleted
1

Houses
1..

Sale

POST

Payment

Captured-on
time
1

Manager

Started-by

date

Paid-by

1..*

Contained-in

description
price
UPC

Used-by

1
Initiated-by
1
Customer

as partes possuem tempo de vida limitado ao


tempo de vida do composto
possuem relacionamentos particulares e de
interesse

Referncias

Records-sale-of
Described-by

Product
Catalog

Verificar se alguma classe pode ser subdividida em partes.

Records-sales-on
1

Boock, G. and Rumbaugh, J. The Unified Modeling Language User


Guide . Addison-Wesley, 1999
Arlow, J. and Neustadt, I. UML 2 and the Unified Process: Practical
Object-Oriented Analysis and Design, 2nd Edition, The AddisonWesley Object Technology Series, 2005.
Rumbaugh, J.; Jacobson, I. and Booch , G. The Unified Modeling
Language Reference Manual, 2nd Edition, The Addison-Wesley Object
Technology Series, 2004.
Boock, G.; Rumbaugh, J. and Jacobson, I; Unified Modeling Language
User Guide, 2nd Edition, The Addison-Wesley Object Technology
Series, 2005.
Jacobson, I; Boock, G. and Rumbaugh, J., Unified Software
Development Process, Addison-Wesley, Janeiro 1999.
Larman, C. Applying UML and Patterns: An Introduction to ObjectOriented Analysis and Design Prentice-Hall, New Jersey - USA, 1997
Bezerra, E. Princpios de Anlise e Projeto com a UML, ed. CampusElsevier. 2003.

Cashier

amount

21

Você também pode gostar