Escolar Documentos
Profissional Documentos
Cultura Documentos
Classes e Associoções
Classes e Associoções
Tarefas:
Identificar classes
Organizar classes em pacotes de classes
Identificar associaes entre estas classes
Identificar atributos destas classes
Escopo:
Podem-se efetuar estas tarefas:
sobre um caso de uso por vez
sobre todos os casos de uso de um pacote de casos de uso (sub-sistema)
sobre todos os casos de uso do sistema (todos os pacotes de casos de uso)
Tipos de Classe - RUP.
Classes de Entidade
Classes Limtrofes
Classes de Controle
Cada um desses tipos ser visto a seguir
Tipos de Classe - Entidade
Exemplos:
Scio
Fita
Filme
Esteretipo: entity
Um Esteretipo um mecanismo para a extenso da UML. Se voc descobrir que
voc precisa de um componente para a modelagem que no faz parte da UML, mas
que parecido com algo existente na UML, voc trata seu componente como um
esteretipo do componente da UML.
Normalmente possuem vida longa (persistncia).
O comportamento no depende da forma do ambiente (dos diversos tipos possveis
de interface, por exemplo).
Responsveis pelas informaes do negcio.
Podem ser utilizadas em mais de uma aplicao.
Exemplos:
JanelaEmprestimoFitas
JanelaReservaFilmes
BoletoEmprestimoFitas
SistemaAutorizacaoCredito
Esteretipo: boundary
Tipos de Classe - Controle
Classes de Controle modelam o comportamento seqencial de um caso de uso. Classes
de Controle coordenam os eventos necessrios para realizar o comportamento
especificado no Caso de Uso. Voc pode pensar em uma Classe de Controle como a
responsvel por rodar o Caso de Uso elas representam a dinmica do Caso de Uso.
Classes de Controle so, tipicamente, dependentes da aplicao.
Exemplo:
CTLEmprestimoFitas
Esteretipo: control
Contm comportamento que no nem de interface, nem de entidade.
Coordenao, Controle de Transaes, Controle de outros objetos.
Normalmente utilizado para encapsular controle relacionado a um caso de uso
especfico.
Cria, inicializa, recupera e exclui objetos controlados.
Coordena a execuo dos objetos controlados (gerente).
Eventualmente podem encapsular uma lgica complexa de negcio envolvendo
diversos outros objetos.
Modelo Conceitual
Modelo dos conceitos do domnio do problema que aparecem nos casos de uso /
regras de negcio.
E formado por:
Conceitos (classes)
Descobrindo classes
Estratgia dos nomes.
A partir da descrio dos casos de uso, faa uma lista dos nomes encontrados.
Um nome pode acabar virando:
um objeto/classe
um atributo de um objeto/classe
Descritores
Modelo do Avio
Lugares
Transaes
Itens de Transao
Papis
Organizaes
Departamento de Vendas
Conceitos
Degrau Tarifrio
Eventos
Registro Fiscal/Contratual
VideoLocadora
Fita
Filme
Emprstimo
ItemEmprestimo
Reserva
Scio
Nome de classe:
no singular
Diagrama de Classes
Um diagrama de classes ilustra a estrutura das classes e seus relacionamentos.
Uma classe representa por um retngulo com trs sees:
Nome da Classe
Atributos
Operaes
Esteretipo
Classificao de uma classe
Esteretipos comuns:
boundary
entity
control
Esteretipos Jude
Pode-se visualizar um esteretipo na forma de um cone (um smbolo especial para a
classe) ou de um Label em uma representao normal de uma classe.
Exemplo: Representao de um objeto de entidade.
Esteretipo Jude
Descrio da Classe
Dificuldades em nomear ou descrever uma classe podem indicar que a classe no uma
boa abstrao. A lista abaixo identifica situaes que podem ocorrer ao nomear ou
descrever uma classe:
Associaes
Uma associao estabelece uma relao semntica estrutural entre duas ou mais
classes que descreve as ligaes entre suas instncias (uma pessoa trabalha para uma
companhia, uma companhia tem vrios escritrios, etc.).
O tipo mais comum de associao a binria (entre duas classes).
O diagrama indica que um Pedido vem de um nico cliente e que um Cliente pode fazer
vrios pedidos ao longo do tempo. Cada Pedido tem vrios Itens de Pedido, cada um
dos quais se refere a um nico Produto. A associao tem dois lados, cada lado ligado
a uma classe indicando um relacionamento entre as classes. A terminao de uma
associao pode ser explicitamente nomeada (cliente, pedido ou produto, no exemplo).
Este nome chamado de papel (role). Assim, um objeto da classe Produto exerce o
papel de produto para a classe ItemPedido. Um objeto da classe Pedido exerce o papel
pedido para a classe ItemPedido e assim por diante.
A terminao de uma associao tambm tem uma multiplicidade, que uma indicao
do nmero de objetos que podem participar do relacionamento. O * no lado do Pedido
na Associao Pedido-Cliente indica que um Cliente pode ter vrios Pedidos associados
com ele, enquanto que o 1 do outro lado indica que um Pedido vem de um nico
Cliente.
A partir do diagrama, posso inferir a seguinte interface para as classes em Java:
class Pedido {
private boolean ehPrePaga;
private String numero;
private double preco;
private Date dataRecebimento;
private Cliente cliente; // associacao com Cliente
private List itemPedido = new ArrayList();
// associacao com ItemPedido
public void despacha() {
// acrescentar cdigo
}
class Cliente {
private String nome;
private String endereco;
private List pedido = new ArrayList();
Multiplicidade
1 ou 1..1
exatamente 1
* ou 0..*
zero ou mais
1..*
um ou mais
0..1
zero ou um
5..8
intervalo especfico
4..7, 9
combinao (4,5,6,7,9)
Mltiplas Associaes
Agregao e Composio
Agregao/Composio so formas especiais de associao onde o TODO est
relacionado s suas PARTES.
Agregao o relacionamento parte-de. como dizer que um carro tem um motor e
rodas como partes integrantes. Isto fcil entender, mas a parte difcil entender qual
a diferena entre agregao e uma associao. Antes da UML, as pessoas
eram normalmente bastante vagas em relao ao que era agregao e o que era
associao. Ainda pior, vago ou no, estavam sempre inconsistentes com todos os
outros. Como resultado, muitos analistas acham que o conceito de agregao
importante ainda que por razes diferentes. Ento a UML incluiu o conceito de
agregao, mas sem qualquer semntica. Como diz Jim Rumbaugh, "Pense
em agregao como um placebo para modelagem" (Rumbaugh, Jacobson, e Booch
1999).
Alm de agregao, a UML oferece uma variedade mais forte de agregao, chamada de
composio. Na composio, o objeto parte pode pertencer a s um objeto todo; mais
ainda, esperado que as partes normalmente vivam e morram com o todo.
Normalmente, considera-se que a destruio do todo propaga-se para as partes. Esta
destruio em cascata considerada parte integrante de uma composio, mas ela
implcita para qualquer associao com multiplicidade 1..1; se voc realmente quer
excluir um Cliente, por exemplo, voc deve excluir todos os pedidos para aquele Cliente
(e, em conseqncia, todos os itens de pedido para estes Pedidos).
Voc poderia no usar composies/agregaes em seus diagramas e substitu-las por
associaes simples, mas voc no estaria expressando toda a semntica do
relacionamento.
Composio
A "parte" pode compor apenas 1 "todo" em um determinado instante do tempo.
O "todo" responsvel pela vida de suas partes (criao e destruio).
A "parte" no tem vida independente do "todo"
Ex: Mo x Dedos
Agregao
A parte pode estar em mais de 1 "todo"
A parte tem vida independente do todo.
Agregao / Composio no Jude
Atributos
Os atributos so muito semelhantes s associaes.
No nvel conceitual, um atributo nome do Cliente indica que Clientes tm nomes. Ao
nvel da especificao, este atributo indica que um objeto Cliente pode informar seu
nome e tem um meio de gravar este nome. Ao nvel da implementao, um Cliente tem
um campo (tambm chamado de varivel de instncia) para seu nome.
Dependendo do nvel de detalhe no diagrama, a notao para um atributo pode mostrar
o nome do atributo, seu tipo, e o valor default. A sintaxe da UML para um atributo
visibilidade: tipo = valorDefault, onde visibilidade a mesma dos mtodos (public,
private ou protected).
Ento, qual a diferena entre um atributo e uma associao?
Da perspectiva conceitual, no h nenhuma diferena. Um atributo carrega somente
outro tipo de notao que voc pode usar, se lhe parecer conveniente. Atributos,
normalmente tm um nico valor. Normalmente, um diagrama no indica se um atributo
opcional ou mandatrio, embora voc possa por a multiplicidade depois do nome do
atributo entre colchetes, por exemplo: dateReceived[0..1] : Date.
A diferena ocorre nos nveis de especificao e implementao. Os atributos implicam
em navegao somente do tipo ao atributo. Alm disso, implcito que o tipo contm
sua prpria cpia do atributo, implicando em que atributos tm semntica de valor ao
invs de referncia.
No momento, melhor pensar em atributos como tipos simples de dados, tais como
Strings, datas, quantias, inteiros e reais.
Atributos representam propriedades que todas as instncias da classe possuiro.
Pessoa
nome
endereo
telefone
dataNascimento
nome
nome : Tipo
Outros tipos bsicos podem ser definidos e utilizados para a definio de atributos.
Ex:
Endereo
Telefone
CPF
CEP
ou
CPF:
size: int
atributo opcional
Default: [1..1]
Atributos: Jude
Atributo Derivado
Atributo cujo valor pode ser derivado de valores de outros atributos do prprio
objeto ou de outros objetos.
Regra de derivao deve ser especificada em documento parte.
Exemplo:
classe Venda
atributo valorTotal
valorTotal = somatrio dos valores dos itens da venda
Exerccio
Desenhe a representao UML da classe Produto, considerando que ela possui os
seguintes elementos:
Atributos:
cdigo de barras
descrio resumida
preo unitrio
Exerccio
Inclua um relacionamento de Produto com uma classe ItemVenda, supondo que 1
produto est relacionado com vrios itens (no obrigatrio) e 1 item est relacionado
obrigatoriamente com 1 produto.
O item assume o papel de itemVendido, enquanto o produto assume o papel de
Produto na associao.
O item possui os atributos quantidade e preo de venda.
Generalizao
Define um relacionamento entre classes, onde uma classe compartilha a estrutura e o
comportamento de uma ou mais classes.
hierarquia simples: subclasse especializa apenas uma superclasse
Hierarquia mltipla: subclasse especializa vrias superclasses
Regra dos 100%:
Regra -UM:
Generalizao
Herana de mtodos
Resumindo...
A subclasse herda todos os atributos, operaes e associaes da superclasse.
Cada subclasse pode definir novos atributos
Cada subclasse pode definir novas operaes
Cada subclasse pode redefinir operaes da superclasse
Cada subclasse pode participar de associaes especficas
Como identificar?
Processo de Generalizao:
Voc definiu algumas classes e nota que existe uma estrutura e comportamento
comum entre elas.
Processo de Especializao
Uma classe tem atributos e/ou mtodos que so usados somente em cenrios
muito especficos
Motivao
O principal motivo para extrair uma subclasse a percepo de que uma classe
tem comportamento usado por algumas instncias da mesma (objetos) e no por
outras . Muitas vezes este fato sinalizado por uma enumerao (um switch ou um
case) nos mtodos da classe.
Herana Mltipla
VeiculoAnfibio v;
v.acelerar();
Herana x Delegao
Um exemplo inocente...
Uma vez que, por exemplo, um aluno de mestrado pode ser um aluno de tempo parcial
ou integral, como juntar as duas classificaes?
Dica: Existem conceitos misturados: dados cadastrais de aluno, dados relativos
dedicao do aluno (parcial ou integral) e dados relativos ao curso do aluno (graduao,
mestrado ou doutorado)
Outro problema: Metamorfose
Empresa tem empregados de dois tipos. Horistas e Assalariados
Os horistas recebem de acordo com um valor hora e o nmero de horas trabalhadas
Os assalariados tem um valor mensal fixo
Produto
Filme
Jogo