Diagrama de Classes
Diagrama de Classes
Diagrama de Classes
Aula 4
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
Representao
As classes so representadas por caixas contendo
Nome (obrigatrio)
Lista de atributos
Lista de 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
Atributos so descritos via
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
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..*
Associaes
Associaes
Guarda as mesmas informaes dos atributos
Utiliza uma notao grfica
Deve ser utilizado para propriedades que so relevantes ao
diagrama
Determina o papel das classes na associao
Operaes
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
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]
Direo (opcional)
in (default)
out
inout
Nome
Tipo
Primitivo
Classe
Valor padro (opcional)
Em anlise...
No se atenha aos detalhes
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
Traduza o seguinte diagrama em cdigo Java
Crie mtodos de acesso para as propriedades da classe Cliente
Palavras-chave, propriedades e
restries
Apoiam a linguagem grfica com informaes textuais
Permitem dar mais semntica aos elementos do modelo
Notao de palavra-chave
Textual: <<palavra>> (ex.: <<interface>>)
Icnica: imagem representando a palavra-chave
Notao de propriedades e restries
{propriedade} (ex.: {readonly})
{nome = valor} (ex.: {verso = 1.0}
{restrio} (ex.: {Me deve ser do sexo feminino})
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
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 onde se espera
instncias de Funcionrio
Gera o efeito de herana e polimorfismo quando mapeado
para cdigo
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
Composio
uma associao com a semntica de composto de
Serve como uma relao todo-parte forte
O todo no existe sem as partes
As partes pertencem a somente um todo
A remoo do todo implica na remoo das partes
Dependncia
Deixa explcito que mudanas em uma classe podem gerar
consequncias 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
No tente mostrar todas as dependncias no seu diagrama!
Classes de associao
Permitem a adio de informaes em uma associao
Devem ser transformadas em classes comuns posteriormente
para viabilizar implementao
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()
So sublinhadas no diagrama
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 /
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 indicas as classes que
implementam a interface
Equivalente a generalizao
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
Leonardo
Pacotes
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
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
Slides de Leonardo Murta
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.