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
Propriedades
Classes so descritas via suas propriedades
Primitivas: representadas como atributos Compostas: representadas como associaes para outras classes
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 0..1 1 (equivalente a 1..1 * (equivalente a 0..*) 1..*
Valores clssicos
default)
- 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
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 -pedidosFechados -data: Date -numero: int 0..* -valor: Money +finaliza()
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?
{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
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
Classes de associao
Permitem a adio de informaes em uma associao Devem ser transformadas em classes comuns posteriormente para viabilizar implementao
Cliente -nome: String -endereco: String Loja 0..* 0..*
Cadastro +valorTotalGasto
Loja
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 /
Animal +fala()
Interfaces
Uma classe sem nenhuma implementao
Todas operaes so abstratas
ArrayList
List
ArrayList
ArrayList
+get(position:int)()
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
herana
policies
<<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