Vous êtes sur la page 1sur 37

Diagrama de Classes

Viviane Torres da Silva


viviane.silva@ic.uff.br
http://www.ic.uff.br/~viviane.silva/2012.1/es1

O que ?
 Diagrama mais utilizado da UML
 Representa os tipos (classes) de objetos de um sistema
Propriedades desses tipos
Funcionalidades providas por esses tipos
Relacionamentos entre esses tipos

 Pode ser mapeado diretamente para uma linguagem


orientada a objetos
Ajuda no processo transitrio dos requisitos para o cdigo
Pode representar visualmente o cdigo do sistema

Idia geral
 Caixas representando as classes
 Linhas representando os relacionamentos

Classes
 As classes so representadas por caixas contendo
Nome (obrigatrio)
Lista de atributos
Lista de operaes

Pedido
Pedido

Nome

-data: Date
-numero: int
-valor: Money

Atributos

+finaliza()

Operaes

Propriedades
 Classes so descritas via suas propriedades
Primitivas: representadas como atributos
Compostas: representadas como associaes para outras classes

 Quando transformadas para cdigo, as propriedades se


tornam sempre campos da classe
Atributos
Pedido

Cliente

-data: Date
-numero: int
-valor: Money

-nome: String
-endereco: String

Associaes

Atributos






Visibilidade
Nome
Tipo
Multiplicidade
Valor padro

- endereco : String[1] = Sem Endereo

Atributos: Visibilidade
 Privado (-)
Somente a prpria classe pode manipular o atributo
Indicado na maioria dos casos

 Pacote (~)
Qualquer classe do mesmo pacote pode manipular o atributo

 Protegido (#)
Qualquer subclasse pode manipular o atributo

 Publico (+)
Qualquer classe do sistema pode manipular o atributo

- endereco : String

Atributos: Nome e tipo


 O nome do atributo corresponde ao nome que ser utilizado
no cdigo fonte
aceitvel utilizar nomes com espao e acentos na fase de anlise

 O tipo do atributo corresponde ao tipo que ser utilizado no


cdigo fonte
Tipos primitivos da linguagem
Classes de apoio da linguagem (String, Date, Money, etc.)

- endereco : String

Atributos: Multiplicidade
 Representa o nmero de elementos de uma propriedade
 Estrutura X..Y onde

Opcional: X = 0
Mandatrio: X = 1
Somente um valor: Y = 1
Multivalorado: Y > 1

 Valores clssicos

0..1
1 (equivalente a 1..1  default)
* (equivalente a 0..*)
1..*
- endereco : String[0..3]

Associao
 Utilizada para relacionar duas classes
 S as classes que esto relacionadas so as classes cujos
objetos podem se comunicar
 Identifica o papel das classes na associao
gerente

Empregado
0..1
subordinado

0 ..*
1..*

Atributos de uma associao


 Nome
Nome da associao

 Papis
Papis das classes que esto relacionadas pela associao
O papel da classe A o nome do atributo que a classe B possui que
guarda o objetivo da classe A

 Multiplicidades
Quantidades de objetos associados a um papel

 Navegabilidade
Indica a direo da relao entre as classes
Pedido
Cliente
-nome: String
-endereco: String

-pedidosFechados -data: Date


-numero: int
0..* -valor: Money
+finaliza()

Operaes ou mtodos
 Operaes so descritas via

Visibilidade
Nome
Lista de parmetros
Tipo de retorno

+ finaliza(data : Date) : Money

Operaes: Visibilidade
 Valem as mesmas regras de visibilidade de atributos
 Privado (-)
Funcionalidades de apoio prpria classe

 Pacote (~)
Funcionalidades de apoio a outras classes do pacote (ex. construo
de um componente)

 Protegido (#)
Funcionalidades que precisam ser estendidas por outras classes (ex.
construo de um framework)

 Publico (+)
Funcionalidades visveis por todas as classes do sistema

+ finaliza(data : Date) : Money

Operaes: Nome e tipo de retorno


 Valem as mesmas regras j vistas para atributos...
Normalmente o nome de uma operao formado por um verbo
(opcionalmente seguido de substantivo)
A ausncia de um tipo de retorno indica que a operao no retorna
nada (i.e., void)

+ finaliza(data : Date) : Money

Operaes: Lista de parmetros


 A lista de parmetros pode ser composta por zero ou mais
parmetros separados por vrgula
Parmetro: [direo] nome : tipo [= valor padro]
Nome
Tipo
Primitivo
Classe
Valor padro (opcional)

+ finaliza(data : Date) : Money

Anlise x Design
 Em anlise no se atenha aos detalhes mas em design sim
Visibilidade
Navegabilidade
Tipo

 Visibilidade pblica em propriedades


Assume campo privado e mtodos de acesso (get e set)

 Operaes
Somente as responsabilidades obvias das classes

Exerccio
 Uma loja que vende roupas possui um sistema capaz de
controlar a venda e o estoque. Cada roupa possui um cdigo
de barras, um tamanho e o nmero de exemplares que a loja
possui daquela roupa.
 Os clientes da loja so cadastrados pelo nome
 Faa um diagrama de classe que modele um sistema capaz de
respondendo as perguntas abaixo:
Quais foram as roupas compradas por um cliente?
Quais so os cliente que j compraram uma determinada roupa?
Quantos exemplares possuem de uma determinada roupa?

Palavras-chave, propriedades e restries


 Apiam a linguagem grfica com informaes textuais
 Permitem dar mais semntica aos elementos do modelo
 Notao de palavra-chave (estereotipos)
Textual: <<palavra>> (ex.: <<interface>>)
Icnica: imagem representando a palavra-chave

 Notao de propriedades e restries


{propriedade}
{nome = valor}
{restrio}

(ex.: {readonly}) s operao de leitura


(ex.: {verso = 1.0}
(ex.: {Me deve ser do sexo feminino})
+mae
<<entity>>
Pessoa
+nome: String {readonly, versao = 1.0}

+filho

Propriedades de atributos e associaes


Alguns exemplos...
 {readonly}
Somente oferece operaes de leitura

 {ordered}, {unordered}
Indica se o atributo ou associao multivalorado mantm a seqncia
dos itens inseridos

 {unique}, {nonunique}
Indica se o atributo ou associao multivalorado permite repetio

- endereco : String = Sem Endereo {readonly}

Propriedades de operaes
 {query}
No modifica o estado do sistema aps a execuo

 {sequential}
A instncia foi projetada para tratar uma thread por vez, mas no
sua responsabilidade assegurar que isso ocorra

 {guarded}
A instncia foi projetada para tratar uma thread por vez, e sua
responsabilidade assegurar que isso ocorra (ex.: metodos
synchronized em Java)

 {concurrent}
A instncia capaz de tratar mltiplas threads concorrentemente

Outros relacionamentos entre classes


 Alm das associaes, alguns outros tipos de relacionamentos
so importantes

Generalizao
Composio
Agregao
Dependncia
Classes de associao

Generalizao
 Visa estabelecer relaes entre tipos
 Leitura: um
 Se Gerente um Funcionrio
Todas as operaes e propriedades (no privadas) de Funcionrio vo
estar disponveis em Gerente
Toda instncia de Gerente pode ser utilizada aonde se espera
instncias de Funcionrio
Gera o efeito de herana e polimorfismo quando mapeado para
cdigo
Funcionrio

Gerente

Agregao





uma associao com a semntica de contm


Serve como uma relao todo-parte fraca
O todo existe sem as partes
As partes existem sem o todo

Carro

0..5
-passageiros

Pessoa

Composio
 uma associao com a semntica de composto de
 Serve como uma relao todo-parte forte
 As partes no existem sem o topo
As partes pertencem a somente um todo
A remoo do todo implica na remoo das partes

Carro

Peas

Dependncia
 Deixa explcito que mudanas em uma classe podem gerar
conseqncias em outra classe
 Exemplos:
Uma classe chama mtodos de outra
Uma classe tem operaes que retornam outra classe
Uma classe tem operaes que esperam como parmetro outra classe

 Outros relacionamento (ex.: associao com navegao)


implicitamente determinam dependncia

Leitura: classe A depende da classe B

Classes de associao
 Permitem a adio de informaes em uma associao
 Devem ser transformadas em classes comuns posteriormente
para viabilizar implementao
Qual o valor total
gasto por um cliente
em cada loja?

Cliente
-nome: String
-endereco: String

Loja
0..*

0..*

Cliente
-nome: String
-endereco: String

Loja
0..*

0..*

Cadastro
+valorTotalGasto

Cliente
-nome: String
-endereco: String

Cadastro
1

0..*

+valorTotalGasto

Loja
0..*

Propriedades e operaes estticas


 Propriedades que no so instanciadas nos objetos
 Operaes que atuam somente sobre propriedades estticas
 Ambos so acessados diretamente na classe
Ex.: Pedido.getProximoNumero()

 No necessrio um objeto para acessar a propriedade


 So sublinhadas no diagrama
Pedido
-data: Date
-numero: int
-valor: Money
+finaliza()
+getProximoNumero(): int

Propriedades derivadas
 So propriedades que na verdade no existem como atributos
ou associaes
 Podem ser inferidas por outras propriedades da classe
 interessante explicitar atravs de nota ou restrio a
frmula de derivao
 So marcadas com o smbolo /

Perodo
+inicio: Date
+fim: Date
+/duracao: int

durao = fim - incio

Classes e operaes abstratas


 Classes que no podem ter instncias
Usualmente tm operaes abstratas, ou seja, sem implementao

 Suas subclasses usualmente so concretas


Implementam mtodos com comportamentos especficos para as
operaes abstratas

 Utilizam nome em itlico

Animal
+fala()

Interfaces
 Uma classe sem nenhuma implementao
Todas operaes so abstratas

 Faz uso da palavra-chave <<interface>>


Pode ser representado tambm como um cone

 O relacionamento de realizao indica as classes que


implementam a interface
Equivalente a generalizao
<<interface>>
List
+get(position:int)()

<<interface>>
List
+get(position:int)()

ArrayList

List
+get(position:int)()

ArrayList
ArrayList

Pacotes
 Em algumas situaes se deseja ter uma viso geral das
partes do sistema
 Para isso, o diagrama de pacotes a ferramenta indicada
 Pacotes agregam classes e outros pacotes
Dependncias podem ser inferidas indiretamente

 Exemplo

Classe C1 pertence ao pacote P1


Classe C2 pertence ao pacote P2
Classe C1 depende da classe C2
Logo, pacote P1 depende do pacote P2

Pacotes

<<interface>>
policies::ArchTracePolicy
+getDescription(): String
+getRationale(): String

herana

<<interface>>
policies::PostTracePolicy
+execute(trace: Trace, action: byte)

<<interface>>
policies::PreTracePolicy
+execute(trace: Trace, action: byte)

policies

builtin::DenyImmutableAETracePolicy
+execute(trace: Trace, action: byte)
+getDescription(): String
+getRationale(): String

builtin::RemoveAncestryTracesPolicy

builtin::DenyRemovalFromBranch

+execute(trace: Trace, action: byte)


+getDescription(): String
+getRationale(): String

+execute(trace: Trace, action: byte)


+getDescription(): String
+getRationale(): String

<<import>>

builtin

Dicas
 Inicie com um diagrama simples
 O que normalmente tem em todo diagrama

Classes
Atributos
Operaes
Associaes

 Use os demais recursos da linguagem somente quando for


realmente necessrio

Dicas: Possveis candidatos


 Classes
Entidades externas que produzem ou consomem informaes (ex.:
sistema de validao do carto de crdito)
Coisas que so parte do problema e que so informaes compostas
(ex.: Produto)
Eventos que ocorrem durante a operao do sistema (ex.: Pedido)
Papeis que interagem com o sistema (ex.: Cliente)
Unidades organizacionais relevantes (ex.: Rede de lojas)
Lugares que fornecem o contexto do problema ou do sistema (ex.:
Loja)
Estruturas definidas no problema (ex.: Estoque)

Dicas: Possveis candidatos


 Atributos
Informao primitiva que precisa ser memorizada (ex.: Preo)

 Associaes
A classe A precisa se relacionar com a classe B para atender a
operaes especficas (ex.: Cliente Pedido)

 Operaes
Funcionalidades que devem ser providas por uma classe para viabilizar
o uso do sistema (ex.: calculaTotal em Pedido)

Exerccio
 Elabore um diagrama de classes para um sistema de ponto de vendas
R01. O gerente deve fazer login com um ID e senha para iniciar e finalizar o sistema;
R02. O caixa (operador) deve fazer login com um ID e senha para poder utilizar o
sistema;
R03. Registrar a venda em andamento os itens comprados;
R04. Exibir a descrio e preo e do item registrado;
R05. Calcular o total da venda corrente;
R06. Tratar pagamento com dinheiro capturar a quantidade recebida e calcular o
troco;
R07. Tratar pagamento com carto de crdito capturar a informao do carto atravs
de um leitor de cartes ou entrada manual e autorizar o pagamento utilizando o servio
de autorizao de crdito (externo) via conexo por modem;
R08. Tratar pagamento com cheque capturar o nmero da carteira de identidade por
entrada manual e autorizar o pagamento utilizando o servio de autorizao de cheque
(externo) via conexo por modem;
R09. Reduzir as quantidades em estoque quando a venda confirmada;
R10. Registrar as vendas completadas;
R11. Permitir que diversas lojas utilizem o sistema, com catlogo de produtos e preos
unificado, porm estoques separados;

Bibliografia
 Fowler, Martin. 2003. UML Distilled: A Brief Guide to the
Standard Object Modeling Language. 3rd ed. Addison-Wesley
Professional.
 Pressman, Roger. 2004. Software Engineering: A Practitioner's
Approach. 6th ed. McGraw-Hill.
 Vrias transparncias foram produzidas por Leonardo Murta
http://www.ic.uff.br/~leomurta

Vous aimerez peut-être aussi