Analise e Projeto
de Sistemas I
Diagrama de classe
Prof. Msc Eduardo Siqueira
Classes
Na UML uma classe representada da
seguinte forma:
Venda
- Forma de Pagamento
- Valor
- Data
+ Inserir Venda()
+ Gravar Venda()
+ Excluir()
+ Totalizar()
+ Emitir Ticket()
+ Emitir Nota Fiscal()
+ Imprimir Nota Fiscal()
+ Finalizar Impresso Nota Fiscal()
+ Totalizar Impostos()
+ Finalizar Impresso Ticket()
Atividades de Anlise
Identificao das classes
Organizao das classes
Identificao dos relacionamentos
Identificao dos atributos e
heranas
Realizao dos
de uso
Reviso da anlise
casos
Identificao das Classes
Uma tcnica bsica para auxiliar na identificao
das classes procurar os substantivos existentes nos
fluxos de casos de uso.
Todos os documentos gerados tambm podem ser
utilizados.
Cada substantivo normalmente ser:
Uma provvel classe;
Um atributo de uma classe;
Uma operao de uma classe;
Um aspecto de implementao (ex. relatrio);
Um entidade fora do escopo do produto;
No se deve incluir os atores (sujeitos das frases nos
fluxos dos casos de uso) como provveis classes.
Identificao das Classes
Anlise do fluxo de caso de uso:
O caixa faz a abertura da venda.
Para cada item de venda:
O caixa registra informa a identificao e a quantidade do item.
O Sistema totaliza a venda para o cliente.
O caixa encerra a venda.
O Sistema emite o ticket de caixa para o cliente.
O caixa registra a forma de pagamento.
O Sistema faz a baixa no estoque das mercadorias vendidas.
Identificao das Classes
Anlise das classes candidatas:
Classe candidata
Anlise
abertura
operao
venda
provvel classe
item vendido
provvel classe (Item de Venda)
identificao
atributo do Item de Venda
quantidade
atributo do Item de Venda
cliente
entidade fora do escopo
ticket de caixa
relatrio (entidade de implementao)
forma de pagamento
atributo de Venda
baixa
operao
estoque
Atributo da mercadoria (saldo do estoque)
mercadoria
provvel classe
Identificao das Classes
Classes candidatas encontradas:
Venda
Item de Venda
Mercadoria
Geralmente as classes encontradas so classes
persistentes (classes que possuem dados persistentes, ou
seja, dados que devem ser armazenados pelo sistema).
As classes persistentes so aquelas que sobrevivem a
cada execuo do programa por estarem
armazenadas em arquivos ou bancos de dados.
Quando se tem um ER disponvel cada entidade
corresponde naturalmente a uma classe persistente do
problema.
Especificao das Classes
Especificao das classes identificadas: a
documentao de cada classe deve conter:
Definio clara e concisa da classe;
Lista de responsabilidades da classe;
Lista de colaboraes da classe;
Lista de regras e restries aplicveis a classe;
Ao longo da Anlise a especificao das
classes ser completada com:
Atributos e operaes necessrias para cumprir as
responsabilidades;
Relacionamentos com as classes colaboradoras.
Especificao das Classes
Neste ponto podemos verificar alguns
problemas comuns as classes identificadas:
Sintoma
Soluo
classes com diferentes nomes e documentao parecida
combinar as classes
classes com documentao muito longa
dividir a classe
classe difcil de denominar ou documentar
Necessita-se de mais anlise
Algumas abstraes que a princpio no foram
aprovadas como classes devem continuar
sempre estudadas.
Organizao das Classes
Para facilitar o entendimento da modelagem
das classes a UML possui algumas notaes
para organizao das classes.
Agrupar as classes correlatas em pacotes
lgicos.
Vendas
Compras
Administrao
Organizao das Classes
Jacobson (um dos autores da UML) prope a
diviso das classes atravs dos seguintes
esteritipos:
Entidades: modelam informaes persistentes,
sendo normalmente independentes da aplicao.
Frequentemente correspondem a entidades de
banco de dados.
Fronteiras: tratam da comunicao com o
ambiente do produto. Modelam as interfaces do
produto com usurios e outros sistemas. Surgem
tipicamente de cada par ator/caso de uso.
Controle: coordenam fluxos de casos de uso
complexos, encapsulando lgicas (especficas da
aplicao) que no se enquadram nas
responsabilidades das entidades.
Organizao das Classes
Entidade
Fronteira
Controle
Venda
<<entity>>
Tela de Venda
<<boundary>>
Emissor de Relatrios
<<control>>
Observaes:
Nem sempre os analistas mostram as classes de fronteira
considerando estas implcitas no relacionamento entre
os atores e as demais classes.
Normalmente uma classe de controle corresponde a
um caso de uso. Pode ser usada at para subfluxos mais
complexos.
As classes de controle auxiliam reaproveitamento das
classes de entidade.
Um caso tpico de uso de uma classe de controle a
gerao de operaes financeiras.
Relacionamento entre Classes
Associao
Denotam dependncias entre as classes.
Associaes entre classes indicam a possibilidade de
comunicao direta entre os objetos destas classes (objetos
de uma classe tem conhecimento dos objetos de outra
classe.
Exemplo de relacionamento de associao:
Empresa
Incluir produto()
Excluir produto()
Mercadoria
Incluir fornecedor()
Excluir fornecedor()
Listar fornaecedor()
Relacionamento entre Classes
Ao especificar uma associao pode ser til
incluir:
1) Nome da associao
fornece
Empresa
Mercadoria
emprega
Pessoa
2) Multiplicidade dos papis:
Empresa
0..1
1..*
fornece
0..*
Mercadoria
emprega
1..*
Pessoa
Relacionamento entre Classes
3) Papis dos participantes
Empresa
fornecedor
0..*
0..1
empregador
fornece
produto
0..*
Mercadoria
emprega
empregado
Pessoa
1..*
4) Restries da associao navegabilidade
fornecedor
Empresa
fornece
produto
0..*
0..*
Mercadoria
empregador
emprega
empregado
Pessoa
Relacionamento entre Classes
Associao reflexiva
indica um relacionamento entre objetos de uma
mesma classe com participaes diferentes.
Pessoa
chefe 0..1
subordinado
1..*
filho
Pessoa
pai
1..1
1..*
Relacionamento entre Classes
Observaes:
Para nomear relacionamentos recomendase usar substantivos.
Dificuldades para nomear relacionamentos
um alerta para uma possvel falha de
modelagem.
Relacionamentos obrigatrios tm
multiplicidade mnima 1.
Tanto a denominao dos relacionamentos
quanto dos papis apenas devem ser
usados quando houver necessidade.
Relacionamento entre Classes
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
Gera o efeito de herana e polimorfismo quando
mapeado para cdigo
Relacionamento entre Classes
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
Empresa
todo
Polgono
todo
0..1
0..1
1..*
3..*
Departamento
parte
Pontos
parte
Relacionamento entre Classes
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
Venda
Multiplicidade omitida: por definio,
obrigatoriamente 1
1..*
Item de Venda
Relacionamento entre Classes
Classe de associao:
Permitem a adio de informaes em uma associao
Devem
ser transformadas em classes comuns
posteriormente para viabilizar implementao
Possuem atributos e operaes que so propriedades
do relacionamento como um todo no de cada
participante isoladamente.
Emprega
empregado
empregador
Empresa
Pessoa
1..*
0..1
Emprego
Empresa
possui
tem
Emprego
1..*
0..*
1..*
Pessoa
Exemplo
Como exemplo vamos supor que voc tivesse que desenvolver um sistema para
automatizar um consultrio dentrio. As etapas bsicas envolvidas seriam:
Levantamento e anlise de requisitos do sistema a ser desenvolvido. Entrevista
com o dentista(s) e com as pessoas que trabalham no consultrio
Definio dos objetos do sistema : Paciente , agenda , dentista , servio ,
contrato , consulta , pagamento , etc..
Definio dos atores do sistema : paciente, dentista , secretria
Definio e detalhamento dos casos de uso: marcar consulta , confirmar
consulta , cadastrar paciente , cadastrar servios , etc.
Definio das classes : paciente , dentista , exame , agenda , servio
Definir os atributos e mtodos das classes
Aps toda esta anlise voc chega no diagrama de classes do sistema
(representado abaixo a ttulo de exemplo ilustrativo)
Exemplo