Processo Unificado
Marcio de Carvalho Victorino
[email protected]
Unidade IV: Análise OO
(Aspectos Estáticos)
Modelo de Classes

O Modelo de Classes evolui durante as iterações do
desenvolvimento do sistema. À medida que o
sistema é desenvolvido, o Modelo de Classes é
incrementado com novos detalhes. Há três níveis
de abstração pelos quais o Modelo de Classes
passa:



Modelo de Classes de Domínio.
Modelo de Classes de Especificação.
Modelo de Classes de Implementação.
3
Modelo de Classes

Modelo de Classes de Domínio:



Representa as classes de domínio do negócio em
questão.
É construído durante a atividade de análise das iterações.
Não leva em consideração restrições inerentes à
tecnologia a ser utilizada na solução de um problema.
4
Modelo de Classes

Modelo de Classes de Especificação:




É uma extensão do Modelo de Classes de Domínio.
Possui detalhes específicos inerentes a solução de
software escolhida.
São definidas novas classes necessárias para desenvolver
a solução do problema.
É construído na atividade de projeto das iterações.
5
Modelo de Classes

Modelo de Classes de Implementação:



É uma extensão do Modelo de Classes de Especificação.
Corresponde à implementação das classes em alguma
linguagem de programação, normalmente OO.
É construído na atividade de implementação das
iterações.
6
Diagrama de Classes


Os diagramas de classes também podem conter
pacotes ou subsitemas, utilizados para agrupar
elementos do seu modelo em um conjunto maior.
Elementos de UML presentes nos Diagramas de
Classes:





Classes, suas estruturas internas e comportamento;
Interfaces;
Associações, agregações, dependências, e relações de
herança;
Multiplicidade e indicadores de navegação;
Nomes de papéis (O que uma classe representa para
outra).
7
Classes
Nome da Classe
ContaBancaria
ContaBancaria
numero
saldo
dataAbertura
ContaBancaria
numero
saldo
dataAbertura
creditar()
debitar()
Atributos
Operações
3 formas de representar classes
8
Relacionamentos



Ao construir modelo de classe você irá descobrir
que há um numero muito pequeno de classes que
trabalham sozinhas.
Ao fazer modelagem de um sistema é preciso ver
como os itens relacionam-se entre si.
Três tipos especialmente importantes:



Dependência - que representa relacionamento de
utilização entre as classes.
Generalização - que relacionam classes generalizadas a
suas especializações.
Associações - representam relacionamentos estruturais
entre objeto.
9
Dependência
ContaBancaria
ObjValor
public class ContaBancaria {
private int numero;
private float saldo;
private Date dataAbertura;
public void creditar(ObjValor valor) {
.
.
.
}
}
10
Generalização
public class ContaBancaria {
private int numero;
private float saldo;
private Date dataAbertura;
ContaBancaria
numero
saldo
dataAbertura
public void creditar(ObjValor valor) {
.
.
.
}
creditar()
debitar()
}
Poupanca
variacao
public class Poupanca extends ContaBancaria {
private int variacao;
.
.
.
}
}
11
Associação
nome da associação
Empresta de
Pessoa
Banco
papéis na associação
Pessoa
devedor
credor
Banco
multiplicidade da associação
Pessoa
1..*
*
Banco
12
Associação: Multiplicidade



Não Especificado
Exatamente um
Zero ou mais (vários,
ilimitado)
1
0..*
*


Um ou mais
Zero ou um
1..*
0..1


Intervalo especificado
Intervalos múltiplos
2..4
2, 4..6
13
Associação
Cliente
Movimenta
1
*
ContaBancaria
public class Cliente {
private String nome;
private long cpf;
private ContaBancaria contas[ ];
.
.
.
}
14
Associação: Classe Associativa
Pessoa
nome
telefone
endereco
empregado
empregador
*
*
Empresa
rezaoSocial
endereco
Emprego
salario
dataContratacao
15
Associação: Classe Associativa
Pessoa
nome
telefone
endereco
Emprego
1
salario
*
dataContratacao *
Empresa
rezaoSocial
1
endereco
16
Associação Reflexiva
Supervisao
supervisor
1
Empregado
nome
telefone
endereco
*
supervisionado
17
Agregação
Banco
1..*
*
Cliente
18
Composição
Banco
1
*
Filial
19
Agregação & Composição
Banco
*
1
Filial
1..*
*
Cliente
20
Responsabilidades & Colaborações

Costuma-se categorizar os objetos de um sistema
de acordo com o tipo de responsabilidade a ele
atribuída.




objetos de entidade
objetos de controle
objetos de fronteira
Esta categorização foi proposta por Ivar Jacobson
(Jacobson et al, 1992) em uma técnica denominada
Análise de Robustez.
21
Objetos de Entidade




Um objeto de entidade é um repositório para
alguma informação manipulada pelo sistema.
Esses objetos representam conceitos do domínio do
negócio.
Normalmente esses objetos armazenam
informações persistentes.
Há várias instâncias de uma mesma classe de
entidade coexistindo no sistema.
22
Objetos de Fronteira




Esses objetos traduzem os eventos gerados por um
ator em eventos relevantes ao sistema.
Também são responsáveis por apresentar os
resultados de uma interação dos objetos em algo
inteligível pelo ator.
Um objeto de fronteira existe para que o sistema se
comunique com o mundo exterior.
Por conseqüência, estes objetos são altamente
dependentes do ambiente.
23
Objetos de Controle



São a “ponte de comunicação” entre objetos de
fronteira e objetos de entidade.
Responsáveis por controlar a lógica de execução
correspondente a um caso de uso.
Decidem o que o sistema deve fazer quando um
evento externo relevante ocorre.


Eles realizam o controle do processamento
Agem como gerentes (coordenadores, controladores)
dos outros objetos para a realização de um ou mais caso
de uso.
24
Divisão de responsabilidades

A categorização de responsabilidades implica em
que cada objeto é especialista em realizar um de
três tipos de tarefa:




se comunicar com atores (fronteira)
manter as informações do sistema (entidade)
coordenar a realização de um caso de uso (controle).
A importância dessa categorização está relacionada
à capacidade de adaptação do sistema a eventuais
mudanças
25
Divisão de responsabilidades
«entidade»
«fronteira»
«controle»
«entidade»
«entidade»
26
Classes Avançadas

Visibilidade (UML):

A visibilidade de uma característica indica se ela pode
ser utilizada por outras classes:




Público (+) – membros da classe são acessíveis por todos os
clientes.
Package (~) - membros da classe são acessíveis somente pelas
classes do mesmo pacote (package) e pela própria classe.
Protegido (#) – membros da classe são acessíveis somente por
subclasses e pela própria classe.
Privado (-) - membros da classe são acessíveis somente pela
própria classe.
27
Classes Avançadas

Escopo:

O escopo da propriedade especifica se uma
característica aparece em cada instancia da classe ou se
haverá uma única instancia da característica para todas
as instancias da classe:


Instância – cada instancia da classe mantém seu próprio valor
para a característica.
Static (Classe) – existe apenas um valor da característica para
todas as instancias do classificador.
28
Classes Avançadas

Elementos abstratos, herança e polimorfismo:




É comum especificar classes abstratas, significando que não
poderão apresentar instancias diretas. Na UML são
representadas por nome em itálico.
Generalização (herança) é usada para fazer a modelagem de
estruturas de classes com abstrações mais gerais no topo da
hierarquia e outras mais específicas na parte inferior.
Uma operação é polimórfica, significando que, em uma
hierarquia de classes, você pode especificar operações com
a mesma assinatura em pontos diferentes da hierarquia.
Você pode especificar uma operação abstrata escrevendo o
respectivo nome em itálico.
29
Diagrama de objetos



Além do diagrama de classes, A UML define um
segundo tipo de diagrama estrutural, o diagrama
de objetos.
Pode ser visto com uma instância de diagramas
de classes
Representa uma “fotografia” do sistema em um
certo momento.

exibe as ligações formadas entre objetos conforme
estes interagem e os valores dos seus atributos.
30
Exemplo (Diagrama de objetos)
Supervisao
supervisor
1
Empregado
nome
telefone
endereco
*
supervisionado
Aline
Empregado
: Empregado
João : Empregado
Rafaela : Empregado
Antônio : Empregado
José : Empregado
Lucas : Empregado
Maria : Empregado
31
FIM
Download

Sexta Aula