Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
Cliente
-data: Date
-numero: int
-valor: Money
-nome: String
-endereco: String
Associaes
Atributos
Visibilidade
Nome
Tipo
Multiplicidade
Valor padro
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
- 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..*
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
Operaes ou mtodos
Operaes so descritas via
Visibilidade
Nome
Lista de parmetros
Tipo de retorno
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
Anlise x Design
Em anlise no se atenha aos detalhes mas em design sim
Visibilidade
Navegabilidade
Tipo
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?
+filho
{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
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
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
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
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 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
Animal
+fala()
Interfaces
Uma classe sem nenhuma implementao
Todas operaes so abstratas
<<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
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
<<import>>
builtin
Dicas
Inicie com um diagrama simples
O que normalmente tem em todo diagrama
Classes
Atributos
Operaes
Associaes
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