Você está na página 1de 35

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 (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.)

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 (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)

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

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 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 /

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

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

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
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.