Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Classes
Modelagem
Visual
Sobre Classes
• Classes são o elemento mais importante de
qualquer sistema orientado a objetos
• Uma classe é uma descrição de um conjunto de
objetos com os mesmos atributos,
relacionamentos, operações e semântica
Modelagem
Visual
relacionamentos, operações e semântica
• Classes são usadas para capturar o vocabulário
de um sistema, representando os conceitos
envolvidos
• Classes podem ser abstrações do domínio do
problema, como “Cliente”, “Banco”, “Conta”
• Classes podem também ser usadas a nível de
implementação (listas, filas, eventos)
Nomes
• Toda classe deve ter um nome no singular que a
distingüa das outras classes
• Um nome pode ser simples (apenas o nome), ou
pode ser precedido pelo nome do pacote em que
a classe está contida
Modelagem
Visual
a classe está contida
Sensor de
temperatura
ClienteParede
Interface Gráfica:: JanelaPrincipal
Exceções:: ClienteNaoEncontrado
Notação básica
origem
Forma
nome
atributos
Modelagem
Visual
mover()
redimensionar()
exibir()
origem
operações
Atributos
• Um atributo representa alguma propriedade do
que está sendo modelado, que é compartilhada
por todos os objetos da classe.
• Os atributos descrevem os dados contidos nas
instâncias de uma classe
Modelagem
Visual
instâncias de uma classe
• Em um momento dado, um objeto de uma classe
conterá valores para todos os atributos descritos
na sua classe.
Atributos (notação)
• Atributos podem ser identificados apenas com
nomes.
nome
endereço
telefone
Cliente
Modelagem
Visual
telefone
dataNascimento
• Atributos podem ter seus tipos (ou classes)
especificados e terem valores padrão definidos.
altura: Real
largura: Real
espessura: Real
ehUmaViga: Boolean = false
Parede
Operações
• Uma operação é uma abstração de alguma coisa
que se pode fazer com um objeto –
comportamento, e que é compartilhada por
todos os objetos da classe
• Uma classe pode ter qualquer número de
Modelagem
Visual
• Uma classe pode ter qualquer número de
operações, inclusive nenhuma
Operações (notação)
• Como para os atributos, você pode
especificar uma operação apenas
com seu nome
• Você pode também especificar a
mover()
aumentar()
diminuir()
esticar()
estaVazio()
Retângulo
Modelagem
Visual
• Você pode também especificar a
assinatura da operação: seus
parâmetros, o tipo desses
parâmetros e o tipo de retorno
estaVazio()
mover(dx: int, dy: int)
aumentar(perc: float)
diminuir(perc: float)
esticar(dx: int)
estaVazio(): boolean
Retângulo
Visibilidade
• Você pode usar marcações de acesso para
especificar o tipo de acesso permitido aos
atributos e operações
• Classificador: classes, interfaces, componentes,
nós, use cases, subsistemas
Modelagem
Visual
nós, use cases, subsistemas
+ publico: todos os classificadores podem
usar.
# protegido: qualquer descendente do
classificador poderá usar .
- privado: somente o próprio classificador
poderá usar.
Visibilidade
#creditoPermitido: Currency
#nivelCredibilidade()
-nome: String
-endereco: String
-dataPrimeiraCompra: Date
-dataUltimaCompra: Date
-totalComprado: Currency
Cliente
Modelagem
Visual
#nivelCredibilidade()
nomeContato: String
telefones[1..10]: String
CGC: String
FAX[1..3]: String
Cliente pessoa-jurídica
colocarListaNegra()
nome: String
CPF: String
numCartaoCredito
Cliente pessoa-física
Sobre Relacionamentos
• Poucas classes vivem sozinhas.
• A maioria das classes colabora com outras
classes de várias maneiras.
• Tipos de relacionamentos especialmente
importantes na modelagem orientada a objetos:
Modelagem
Visual
importantes na modelagem orientada a objetos:
– Dependências
– Generalizações
– Associações
– Agregação
– Composição
– Realização
Dependência
• Dependências são relações de uso.
• Uma dependência indica que mudanças em um
elemento (o “servidor”) podem afetar outro
elemento (o “cliente”).
Modelagem
Visual
• Uma dependência entre classes indica que os
objetos de uma classe usam serviços dos
objetos de outra classe
Cliente Servidor
Generalização
• Uma generalização é um relacionamento entre
um elemento mais geral (chamado de
superclasse ou pai) e um mais específico
(chamado de subclasse ou filho).
Forma
Ponto
Modelagem
Visual
mover()
redimensionar()
exibir()
origem
Forma
canto: Ponto
Retângulo
raio: float
Circulo
exibir()
pontos: ListaPontos
Polígono
x: int
y: int
Ponto
Quadrado
Associação
• A associação é um relacionamento estrutural que
especifica que objetos de um elemento estão
conectados a objetos de outro elemento.
Modelagem
Visual
Companhia Empregado
emprega
Associação: Navegabilidade
• Em geral a navegação entre as classes de uma
associação é bi-direcional
• Porém é possível limitá-la a apenas uma direção
Modelagem
Visual
SenhaUsuário navegação da associação
• Link: uma conexão física ou conceitual entre
objetos. Um link é uma uma instância de uma
associação
Associação: um relacionamento entre instâncias de
duas ou mais classes descrevendo um grupo de
links, com estrutura e semântica comuns.
Associação e Link
Modelagem
Visual
Companhia
nome
endereço
Empregado
nome
endereço
cpf
emprega
links, com estrutura e semântica comuns.
Associação com Atributos
• Modela as propriedades associadas com uma
associação.
• Para indicar os atributos de uma associação,
usamos uma linha tracejada para unir a
associação às suas propriedades.
Modelagem
Visual
associação às suas propriedades.
• As propriedades e/ou conceitos devem ser
representadas por uma classe.
Associação com atributo
Companhia Empregado
Modelagem
Visual
Função
Salário
• Papéis : um dos lados da associação.
• Uma associação binária possui duas
“terminações”. Cada uma delas pode possuir um
“nome de papel”. Uma associação n-ária pode
Associação e papéis
Modelagem
Visual
“nome de papel”. Uma associação n-ária pode
possuir um “papel” para cada terminação.
• Nomes de papéis são necessários para
associação entre dois objetos da mesma classe
Associação e papéis
Companhia Empregado
*1
contrata
0..1
1..*
+chefe
+subordinado
gerencia0..1
*1
Modelagem
Visual
Função
Salário
performance
� Nome de papéis são úteis para distinguir
associações entre o mesmo par de classes.
Associação e papéis
0..*
contém
0..*
Modelagem
Visual
usuário diretório
+proprietário possui
+user autorizado
acessa
*
0..*0..*
*
+sub-dir
• Associação qualificada: uma associação que
relaciona uma classe e um qualificador a outra
classe.
• O qualificador é um atributo especial que reduz a
efetiva multiplicidade de uma associação
• Associações do tipo um-para-muitos e muitos-
Associação e Qualificador
Modelagem
Visual
• Associações do tipo um-para-muitos e muitos-
para muitos podem ser qualificadas
microcomputador
• Uma forma especial de associação, entre o todo
e suas partes, no qual o todo é composto de
partes.
Agregação
Modelagem
Visual
monitor
caixa do
sistema
mouse teclado
HD CPU RAM Ventilador
Agregação
• Distingue um “Todo” de uma “Parte”.
• Não muda o significado de navegação entre o
“Todo” e as “Partes”.
Modelagem
Visual
“Todo” e as “Partes”.
• Não impõe que a vida das “Partes”’ esteja
relacionado com a vida do “Todo”.
Composição
• Uma forma mais forte de agregação.
• Há uma coincidência da vida
das partes.
• Uma vez criada a parte ela irá viver e morrer
com ele.
Modelagem
Visual
com ele.
• O “Todo” é responsável pelo gerenciamento da
criação e destruição das partes.
Composição
+confirmar()
+cancelar()
-calcularTotal():Currency
gerarNovoCodigo: String
-codigo: Integer
-dataRecebido
-total: Currency
Pedido
Modelagem
Visual
-emEstoque: Boolean
-quantidade: Integer
-preco: Currency
Item de Pedido
Produto
*
*
Realização
• É um relacionamento semântico entre
classificadores no qual um classificador
especifica um contrato que outro classificador
garante cumprir.
• Entre dependência e generalização
Modelagem
Visual
• Entre dependência e generalização
• Será usado no contexto de interface.
• Uma interface é uma coleção de operações que
será usada para especificar os serviços de uma
classe ou componente.
• A interface especifica um contrato que a classe
ou componente irá executar.
Realização
IAgentedeRegras
adiçãoRegra()
mudançaRegra()
<<Interface>>
RegrasdeNegóciodaConta
Modelagem
Visual
mudançaRegra()
explicarRegra()
realiza
Interfaces
• Uma interface é um conjunto de operações
usado para especificar um serviço de uma classe
ou componente
• Diferentemente das classes, as interfaces não
especificam nenhuma estrutura
Modelagem
Visual
especificam nenhuma estrutura
• Interfaces não podem conter atributos
Interfaces
• Com as interfaces, é possível se concentrar
apenas nos serviços oferecidos por classes ou
componentes
• O uso de interfaces é uma maneira elegante e
poderosa de isolar a especificação da
Modelagem
Visual
poderosa de isolar a especificação da
implementação
• Uma interface especifica o contrato para uma
classe ou componente, sem definir como ele
será implementado
Interfaces (notação)
<<interface>>
Empregado
Modelagem
Visual
verificarFicha( )
calcularSalario( )
calcularDeducoes( )
Empregado
Interfaces e realização
• Realização é uma relação pela qual um
elemento especifica o contrato que outro
elemento deve implementar
• A realização é um relacionamento entre uma
especificação e sua implementação
Modelagem
Visual
especificação e sua implementação
Realização (notação)
verificarFicha( )
calcularSalario( )
<<interface>>
Empregado
Empregado_Impl
Modelagem
Visual
calcularSalario( )
calcularDeducoes( )
Empregado
Empregado_Impl
Dicas
• Não comece a construção do modelo apenas
colocando junto classes, associações e herança.
Primeiro você deve entender o problema que vai
ser resolvido
• Tente manter o modelo simples
Modelagem
Visual
• Tente manter o modelo simples
• Não tente resolver toda a multiplicidade tão
cedo
• Use sempre que possível associação qualificadas
• Evite generalizações em muitos níveis
• Desconfie de associações um-para-um. Em
geral é opcional ou zero-ou-uma
• Revise o modelo várias vezes
• Peça a outros para fazer a revisão
Dicas
Modelagem
Visual
• Peça a outros para fazer a revisão
• Sempre documente o seu Diagrama de Classe
• Não é necessário o uso de todos os construtores
apresentados no Diagrama de Classe
Modelagem
Visual
Diagrama de classe
1
Associação
Agregação
{ou}
Indivíduo
Organização
Cliente
CódigoDoCliente
limiteDeCrédito
Pedido
Incluir Pedido ()
atender Pedido ()
Modelagem
Visual
*
1 Agregação
Multiplicidade
Classe
Atributos
Organização
cliente
Produto
Leite Chocolate Biscoito
Operações
Subclasse
Generalização
{disjunção, incompleto}
Classe associativa
Restrição
Superclasse
Pedido,item
qualidade
incluirItemPedido ()
calcularTotalPedido ()