...

Diagramas de Classes e O Paradigma da Orientação a Objetos

by user

on
Category: Documents
1

views

Report

Comments

Transcript

Diagramas de Classes e O Paradigma da Orientação a Objetos
Diagramas de Classes e O
Paradigma da
Orientação a Objetos usando
UML
Prof. Ricardo A. Ramos
UML – Unified Modeling
Language
• É uma linguagem para especificação,
construção, visualização e documentação
de sistemas de software;
• É a união da sintaxe gráfica de vários
métodos, com vários símbolos removidos
e vários adicionados;
UML - Classes
UML - Classes
UML – Classe (no Rational Rose)
P es soa
Qualificadores:
Protegido
Privado
Publico
nom e
endereco
cpf
rg
divida
atualizarD ivida()
atualizarD ivida(valor)
atualizarD ivida(valor1, valor2)
Nome da classe
(inicial maiúscula)
Atributos da classe
(Dados) inicia com
minúsculo. Se houver
concatenação, a inicial
da segunda palavra é
maiúscula.
Métodos ou Operações
da classe.
(Comportamento)
UML – Classe (no astah)
Nome da classe
(inicial maiúscula)
Qualificadores:
Protegido
Privado
Publico
Atributos da classe
(Dados) inicia com
minúsculo. Se
houver
concatenação, a
inicial da segunda
palavra é maiúscula.
Métodos ou Operações
da classe.
(Comportamento)
Relacionamentos - Associação
Relacionamentos – Associação
(no Rational Rose)
Nome da associação
associação
Pes soa
nom e
endereco
cpf
rg
divida
atualizarD ivida()
atualizarD ivida(valor)
atualizarD ivida(valor1, valor2)
P roduto
com pra
0..*
desc ric ao
pre c o
0..*
getP reco()
multiplicidades
Relacionamentos – Associação
(no astah)
Associação com navegação
Agregação (simples)
• A associação entre classes sem agregação
reflete que ambas as classes se encontram no
mesmo nível conceitual.
• Por outro lado, uma relação de associação com
agregação traduz que existe uma relação do
tipo “is-part-of” ou “has-a”, o que corresponde
ao fato de uma instância de determinada classe
possuir ou ser composta por várias instâncias
de outra classe.
• A informação de agregação é representada por
um losango colocado junto à classe que
representa o elemento agregador ou “o todo”.
Relacionamentos - Agregação
Relacionamentos - Agregação
Casa
c or
tam anho
Janela
dim e ns ao
m ate rial
P orta
altura
larg ura
m ateri a l
O diamante indica
a classe Todo
(a que agrega)
Pa rede
loca lizacao
altura
Relacionamentos - Agregação
O diamante indica
a classe Todo
(a que agrega)
Agregação (composta)
• A composição, ou agregação composta é uma variante à
agregação simples, em que é adicionada a seguinte
semântica:
– (1) forte pertença do “todo” em relação à “parte”, e
– (2) tempo de vida delimitado (as “partes” não podem existir sem o
“todo”).
• Adicionalmente, o “todo” é responsável pela disposição
das suas “partes”, ou seja, “o todo” é responsável pela
criação e destruição das suas “partes”.
• A informação de agregação composta é representada por
um losango cheio colocado junto à classe que representa o
elemento agregador ou “o todo”.
Agregação composta
Agregação composta
Relacionamentos - herança
V eicu lo
num eroR odas
qtdAs s entos
cor
calcularVelocidade()
trocarPneus ()
B ic icleta
qtdR aias
ti poC orrente
Carro
capacidadePortaMalas
limp arPortaMalas ()
tr ocar Guidao ()
A seta indica
a classe pai
Classe de Associação
• Numa relação de associação entre
classes, a associação pode também ter os
seus próprios atributos (e eventualmente
operações), devendo ser, por
conseguinte, modelada também como
uma classe.
• Este tipo de classes designa-se por
classe-associação
Classe de Associação
Classe de Associação
Relacionamento de uma classe
com a “associação”
Pes soa
nom e
endereco
cpf
rg
divida
atualizarD ivida()
atualizarD ivida(valor)
atualizarD ivida(valor1, valor2)
Produto
com pra
0..*
descricao
pre co
0..*
getPreco()
Pedido
n um ero
d ata
q tdItens
Classe de Associação
Associações N - Árias (N 3)
• Associações N-ária, com “n” maior ou
igual a 3, são pouco comuns na
modelagem de classes. Contudo, há
situações em que a aplicação deste tipo
de associações é vantajosa em termos da
clareza do modelo.
• Nestas circunstâncias, a associação é
representada por um losango com linhas
para todas as suas classes participantes
Associações N - Árias (N 3)
Interfaces
• Uma interface define um comportamento
obrigatório que alguma classe deve possuir.
• As interfaces permitem conhecer um
determinado elemento, escondendo os seus
detalhes internos, por exemplo: os detalhes
de implementação.
• Uma interface é realizada (ou
implementada) por uma ou mais classes, as
quais prometem implementar todos os
métodos nela especificados.
Como representar a Interface
Interfaces
Formas Expandidas e Compactas
Interfaces
Exemplo (Rational Rose)
V ei c ulo
num eroRod as
qtdAs s entos
c or
IVeiculo
ca lcular Veloc idade()
c alcular Veloc idade()
troc arPneus ()
Interfaces
Exemplo (astah)
Classes Abstratas
P ess oa
nom e
endereco
cpf
rg
divida
atualizarD ivida()
atualizarD ivida(valor)
atualizarD ivida(valor1, valor2)
O nome em itálico indica que uma
classe é abstrata
Uma classe abstrata não pode
ser instanciada, sendo assim,
sua finalidade fica restrita a
definir comportamentos para
que outras classes possam herdar.
Um Estereotipo pode ser inserido
para indicar uma Classe Abstrata
Objetos instanciados
Exemplo
E ndereco
Fornecedor
rua
num ero
bairro
cidade
cep
Pr odutos : Vector
c odigo
n ome
e ndere co
1
1..*
Cliente
c od ig o
no me
en derec o
divida
1
s a ldo
IC liente
P roduto
P edido
0..*
cliente
p rodutos : Vector
d ata
1..*
0..*
codigo
des crica o
preco
calcular Divida()
verificarSaldo()
Fisico
c pf
rg
IFis ico
ver ifi car Salar io()
Ju ridic o
cnpj
ins cricao
A cabado
tinta
aca bam en to
NaoA cabado
m ateriaPrim a
m aterial
Exemplo
Localizacao
PrevisaoCompra
0..1
1
IdFornecedor
1
1
1
TransferenciaEs o
t ques
DataRecebimentoForn1
1
1
1
1 1
1
1
MovimentoMes2
1
Material
1
1
1
10..4
1 1
DataRecebimentoForn2
1
d
I Pri nc ip alAplicacao
IdPrincipalMovimento
1
For nec edor
1
0..3
1
1
DirecionaMaterialAplicacao
11
ComunicadoRecebimento2
1
1
1
DevolucaoMaterialFornecedor
1
1
1
EstoqueDestino
CorrecaoEstoqueFisico
ComunicadoRecebimento1Seq
1
ChaveMateriais
MovimentoMes1
IdSec undar ioMovimento
IdPrevisao
DataRecebimentoForn3
0..*
Mov imentoMes3
1
1
1
1
DevolucaoMaterial
ContaAplicacao
1
Mov imentoMater ia l
1
1
1
ParcelaCR2
MovimentoMesAtual
RequisicaoInter naMater ial
1
NotaFiscal
MovimentoAno
1
DetalhesMaterial
1
1
IdConta 1
1
1
IdEspecificacao
Conta
1
SolicitacaoExternaMaterial
1
1
1
ComunicadoRecebimento1
1
1
RequisicaoRessuprimento
ParcelaCR1
CorrecaoLancamento
Compra
1
1
1
1
Descricao
1
CodigoConta
Requisicao
Ressuprimento
SubContaAplicacao
1
IdCompra
1
Errado
1
Correto
IdPrincipalSubContaAplicacao
O Caos na UML com os diagramas
de Classes
Conceitos da OO Usando
UML
Classes /Objetos
• Uma classe pode ser vista como uma
fábrica de objetos similares
• Define os dados e comportamento que
todos os seus objetos terão
• Cada objeto de uma classe diferencia-se
do outro por meio do valor de seus
atributos
Classes e Objetos
Classe Pessoa
Pes soa
Em UML
nom e
ende reco
cpf
rg
alteracao()
correr()
andar()
calcSalario()
Ricardo
João
Objetos - instâncias
Cada objeto possui seu
próprio nome, endereco,
cpf e rg
Pedro
Encapsulamento
• Com o advento da Internet e a exposição
de sistemas nessa grande rede, a
segurança tornou-se algo fundamental.
• Esse conceito está relacionado à proteger
os dados da classe
Encapsulamento
• Cada componente do programa deve conter uma única
funcionalidade
• A interface do componente deve expor o mínimo possível sobre o
funcionamento interno do componente
• Usuários de uma biblioteca necessitam saber apenas sua interface
(assinatura dos métodos) para utilizá-la. Alterações no algoritmo não
afetam os usuários que a utilizam.
• Combina-se atributos e serviços que agem sobre esses atributos
Encapsulamento – ex.
• Agrupa seus registradores
internos e disponibiliza ao
usuário apenas as funções
necessárias.
• Não se tem acesso ao seu
Interior.
• é uma caixa preta
Encapsulamento – ex.
Func ionario
codigo
nom e
id ade
alteracao()
calcSalari oLiquido()
im pres s ao()
calcSalario()
Para utilizar a classe deve-se
conhecer apenas a interface pública
que ela fornece.
Herança
• Um módulo (classe) pode ser quase o que
queremos...
• Simplifica a definição de classes que são quase
iguais às que já foram definidas
• Permite a reutilização de definições comuns
• Geralmente identifica-se uma herança quando
diz-se a palavra “é um”
• Por exemplo:
– Bicicleta é um veículo
– Carro é um veículo
– Caminhão é um veículo
Herança
B ic ic leta
qtdR aias
tipoC orrente
trocarGuidao()
Generalização
Especialização
Classe Pai
V eiculo
num eroR odas
qtdAs s entos
potenciaMotor
calcu larVelocidade()
trocarPneus ()
Carro
Bicicleta, Carro e Caminhão são veículos.
Sendo assim, eles possuem seu comportamento
(atributos + métodos) específico mais o
comportamento herdado.
Esse tipo de relacionamento entre classes também
é conhecido como generalização/especialização.
Pois, analisando-se as classes filhas pode-se generalizar o comportamento na Pai. Do mesmo modo
analisando-se a classe Pai pode-se especializar
classes filhas.
Cam inhão
capacidadePortaMalas
corC arreta
lim parPortaMalas ()
trocarC arreta()
Classes Filhas
Herança múltipla
Veiculo
B icicleta
qtd R aias
tipoC orrente
trocarGuidao()
A utom ovel
num eroR od as
qtd As s entos
potenc iaMotor
nr oR e gis tro
placa
c or
calc ular Velocida de()
trocarPne us ()
al terar Pla c a()
verificarMultas ()
Carro
C am inhã o
capacidadePo rtaMalas
corC arreta
lim p arPortaMalas ()
trocar C arr eta()
Carro e Caminhão, além
de serem Veículos
também são automóveis.
Sendo assim, herdam o
comportamento de ambas
as classes
Mensagens
• Objetos se comunicam por meio de mensagens
• Um mensagem é um sinal enviado à um objeto
requisitando a execução de um serviço através
da execução de uma operação
• Essa operação é executada dentro do objeto
que recebe a mensagem com base nos dados
de seus alcance na hierarquia de classes
• Sender e receiver
• As mais conhecidas são: Agregação e
Associação
Exemplo Mensagem
Pe s s o a
nom e
e n d e re co
cp f
rg
d i vi d a
a tu a l i za rDi vi d a ()
Pro d u to
co mp ra
Calça.getPreco()
d e s crica o
p re co
g e tP re co ()
É enviada uma
Mensagem ao
Objeto “calça”
Pedindo o seu preço.
Ex. Um objeto “João” necessita atualizar seu atributo “divida”. Para isso há
necessidade de saber o preço do produto que o “João” comprou. Sendo assim,
o método getPreco() da classe Produto deve ser invocado (mensagem) para
obter o preço do produto.
Todo-Parte (Agregação)
• Esse conceitos permite a construção de uma classe
agregada a partir de outras classes componentes.
• Usa-se dizer que um objeto da classe Agregada
(Todo) tem objetos da classe componente (Parte)
• Por exemplo: Pode-se imaginar esse tipo de
relacionamento como uma casa, que é composta
por portas, janelas, paredes, etc.
• A pergunta a ser feita para identificar um
relacionamento de agregação é: “é parte de ?”
Todo-Parte (Agregação)
TO DO
PARTES
Exemplo Agregação
Cas a
cor
tam anho
Janela
dim e ns ao
m ate rial
Porta
altu ra
largu ra
m ate rial
Dessa forma representa-se que
um objeto Casa é composto pelos
objetos Janela, Porta e Parede
P arede
localizacao
altu ra
Associação
• Usada para agrupar objetos que ocorrem
sob algumas circunstâncias similares ou
um ponto específico no tempo
• Associação é um relacionamento
estrutural que ocorre entre classes;
• Esse relacionamento existe porque um
objeto necessita de outros para cumprir
certas responsabilidades;
Associação
E studante
F az
Sala
T este
Associação
C lie n te
Faz
P e d id o
Associação - exemplo
Pes s oa
nom e
e n de r e co
cp f
rg
d iv id a
atu al i za rDi vi da ( )
Pr oduto
co mp ra
des cricao
preco
getPreco()
Associação
Uma compra é um evento que relaciona uma pessoa e um
produto e que ocorre em algum ponto do tempo
Polimorfismo
• Refere-se à diferentes formas de um objeto
• Polimorfismo refere-se a capacidade de uma
mesma operação realizar funções diferentes
dependendo do objeto que a recebe e dos
parâmetros que lhes são passados.
• Por exemplo, pode-se ter em uma classe uma
operação denominada “calcularDivida()”. Caso
essa operação seja invocada sem parâmetros
ela realizará algo, caso seja invocada passando
um determinado parâmetro realizará algo
diferente.
Exemplo – Polimorfismo
P ess oa
nom e
endereco
cpf
rg
divida
atualizarD ivida()
atualizarD ivida(valor)
atualizarD ivida(valor1, valor2)
Três métodos com o mesmo
nome, porém, são
diferenciados devido a
quantidade de parâmetros
passados
Exemplo – Polimorfismo
Geom etrico
Dependendo de quem
area()
invoca a msg area
ela irá calcular a área
Quadrado
Triangulo
Losango
do objeto correto.
Fly UP