Orientação a Objetos
Edson E. Scalabrin, Marcos A. H. Shmeil e
Alcides Calsavara
{scalabrin, shm, alcides}@ppgia.pucpr.br
Telefone: 0xx-41-330-1669
Introdução

Modelagem orientada a objetos
• Permite representar diretamente as entidades
do mundo real e as relações entre essas
entidades
Introdução
(continuação)
Quais são os objetos presentes no cenário e as relações
entre eles ?
Introdução
(continuação)
Modelagem orientada a objetos


Permite representar diretamente as entidades do
mundo real em ambientes informatizados, sem a
necessidade de deformar ou de decompor os
mesmos.
Relacionamentos entre entidades :
• generalização : é-um
• agregação : parte-de
• associação : relacionamento qualquer
Introdução
(continuação)
Usuário
Desenvolvedores
Geram
solicitações
Gerentes
Análise
Enunciado do
Problema
Entrevistas com o usuário
Conhecimento do domínio
Experiência do mundo real
Projeto
Constrói
Modelos
Modelo de Objetos
Modelo Dinâmico
Modelo Funcional
Introdução
O
(continuação)
modelo objeto
• especifica o que acontece a quem
• representa a estrutura estática de um sistema
O
modelo dinâmico
• especifica quando algo deve acontece
• representa a estrutura de controle de um sistema
O
modelo funcional:
• descreve os cálculos executados em um sistema
• especifica o que acontece
Bibliografia Básica






James Rumbaugh et al. Modelagem e Projetos Baseados em Objetos.
Editora Campus, 1994. ISBN 85-7001-8410-X.
Grady Booch. Object-Oriented Analysis and Design with Applications.
Second Edition. Addison-Wesley, 1994. ISBN 0-8053-5340-2.
Ivar Jacobson. Object-Oriented Software Engineering - a Use Case
Driven approach. Addison-Wesley, 1996. ISBN 0-201-54435-0.
Peter Coad. Objet Models - Strategies, Patterns & Applications.
Prentice-Hall, 1997. ISBN 0-13-840117-9.
Dennis de Champeaux. Object-Oriented Development Process and
Metrics. Prentice-Hall, 1997. ISBN 0-13-099755-2.
Gregory Satir and Doug Brown. C++ : The Core Language. O’Reilly &
Associates, 1995. ISBN 1-56592-116-X.
Bibliografia Complementar





Jag Sodhi and Prince Sodhi. Object-Oriented Methos for Software
Development. McGraw Hill, 1996. ISBN 0-07-059574-7.
Chris Zimmermann (Ed). Advances in Object-Oriented Metalevel
Architectures and Reflection. CRC Pr, 1996. ISBN 0-84-932663-X.
Jonathan Pletzke. Advanced Smalltalk.. John Wiley & Sons, 1996.
ISBN 0-47-116350-3.
Al Stevens. C++ Database Development. Mis Pr, 1994. ISBN 1-55828357-9.
Grady Booch and Ed Eykholt (Eds). The Best of Booch: Designing
Strategies for Object Technology. Prentice-Hall, 1996. ISBN 0-13739616-3.
Ementa


Conceituação de OO
Método para modelagem OO
• Modelagem de Objetos
• Modelagem Dinâmica
• Modelagem Funcional

Programação OO
Conceitos de OO
Modelagem de Objetos
Vantagens






Independência de implementação
Esconder detalhes
Flexibilidade
Clareza conceitual
Modularização
Reusabilidade
Áreas de aplicação










Linguagens de programação
Bancos de dados
Sistemas operacionais
Sistemas distribuídos
Interface gráfica
Métodos de modelagem de sistemas
Métodos formais: Z++
Empacotamento de software: classes, componentes
Integração de sistemas: CORBA, DCOM
Reflexão: tolerância a falhas, reconfiguração
Conceitos fundamentais







Objeto
Identidade
Encapsulamento
Classificação/Instanciação
Generalização/Especialização
Herança
Polimorfismo
Objeto




Um conceito, uma abstração, algo com
limites e significados definidos para o
problema em questão
Um objeto do mundo real
Um conjunto de atributos (estado) e
métodos (comportamento)
Uma instância de uma classe
Identidade


Característica peculiar de um objeto que
denota a existência em separado do objeto,
mesmo que ele tenha os mesmos valores
de atributos de outro objeto
Uma identificação única de cada objeto
Encapsulamento


Técnica de modelagem e implementação
que separa os aspectos externos de um
objeto dos detalhes internos de
implementação do mesmo objeto
Os atributos (estado) de objeto só é
modificável a partir de seus métodos
(interface)
Atributo



Propriedade denominada de uma classe, que
descreve o valor de um dado contido por cada
objeto da classe
Todo atributo tem um tipo e, opcionalmente, um
valor default inicial
Cada instância de uma classe possui todos os
atributos definidos pela classe
Método (ou Operação)



Função ou transformação que pode ser
aplicada aos objetos de uma classe
Todo método definido para uma classe pode
ser aplicado a qualquer instância daquela
classe
Um método tem um nome, uma lista de
argumentos, um tipo de retorno e uma
implementação
Classe


Descrição de um grupo de objetos com
propriedades semelhantes, comportamento,
relacionamentos e semântica comuns
Instância: um objeto descrito por uma
classe
Exemplo de classe
Nome da
classe
Atributos +
tipos
Métodos
MOTO
Marca:
cor:
estado:
String
String
boolean
ligaMotor(),
mostraAtributos()
Exemplo de classe definida em Java
class MOTO{
private String marca, cor; boolean estadoMotor;
void ligaMotor() {
if (estadoMotor == true)
System.out.println(“O motor já esta ligado”);
else {
estadoMotor = true;
System.out.println(“Agora o motor já esta ligado”);
}
} // fim do método ligaMotor
void mostraAtributos() {
System.out.println(“Cor: “ + cor+ “ Marca: “ + marca +
“Estado: “ + estadoMotor);
}
Exemplo de classe definida em Java
(continuação)
class MOTO{
. . .
public static void main ( String args[] ){
MOTO m = new MOTO();
m.marca = “Yamaha RZ350”;
m.cor = “amarela”;
m.mostraAtributos();
m.ligaMotor();
m.mostraAtributos();
m.ligaMotor();
} // fim do método main
} // fim da classe MOTO
Generalização




Relacionamento entre uma classe e uma ou
mais versões refinadas ou especializadas da
classe
Especialização: relacionamento inverso
Superclasse: versão mais abstrata de outra
classe, a subclasse
Subclasse: versão mais refinada de outra
classe, a superclasse
Herança


Mecanismo baseado em objetos que
permite que as classes compartilhem
atributos e operações baseados em um
relacionamento, geralmente generalização
Uma subclasse herda atributos e métodos
da superclasse
Polimorfismo




Assume muitas formas
A propriedade segundo a qual uma operação
(método) pode comportar-se diferentemente em
classes diferentes
A subclasse redefine a implementação de um
método herdado da superclasse
Onde se espera uma instância de um certa classe
pode aparecer uma instância de qualquer
subclasse daquela classe
Exemplo de
herança e polimorfismo
BOTÃO
Estado: boolean
cor:
Cores
x:
int
y:
int
desenhe(), aperte(),
desaperte(),
pegaEstado(),
mova(float x1, float x2)
BOTÃO QUADRADO
BOTÃO REDONDO
diagonal : int
raio : int
desenhe()
desenhe()
Implantação da classe Botão
class Botao
public void aperte()
{estado = true; }
public void desaperte()
{estado = false; }
public boolean pegaEstado()
{ return estado; }
public void desenhe()
{}
public void mova( float x1,
float y1)
{ x = x1; y = y1; }
{
boolean estado;
int cor;
float x, y;
public Botao(int cor)
{
estado = true;
cor = 0;
x = y = 0;
}
}
Implantação da classe
Botão Quadrado
class BotaoQuadrado extends Botao
{
float diagonal;
public BotaoQuadrado(int cor, float dia){
super( cor );
diagonal = dia;
}
public void desenhe(){
System.out.println("Desenhe Botão Quadrado");
}
}
Implantação da classe
Botão Redondo
class BotaoRedondo extends Botao
{
float raio;
public BotaoRedondo(int cor, float r){
super( cor );
raio = r;
}
public void desenhe(){
System.out.println("Desenhe Botão Redondo");
}
}
Implantação da classe Janela
class Janela
{
public static void main( String args[] )
{
BotaoQuadrado bq = new BotaoQuadrado(1, (float)4.5);
bq.desenhe();
BotaoRedondo br = new BotaoRedondo(1, (float)5.0);
br.desenhe();
}
}
Exercício
(Aparelho de troca de calor)
nome = E302
fabricante = Brown
peso = 5000 kg
preço = $20000
área da superfície diâmetro do tubo = 2 cm
comprimento do tubo = 6 m
pressão do tubo = 15 atm
pressão da concha = 1,7 atm
(Tanque de teto flutuante)
nome = T111
fabricante = Simplex
peso = 10000 kg
preço = $50000
volume = 400000 L
pressão = 1,1 atm
diâmetro = 8 m
(Bomba de diafragma)
altura = 9m
nome = P101
fabricante = Simplex
peso = 100 kg
preço = $5000
Escreva um diagrama de classes
pressão de sucção = 1,1 atm
para estas 3 (três) instâncias. Não
presssão de descarga = 3,3 atm
taxa de fluxo = 300 I/h
é necessário incluir métodos.
material do diafragma = Teflon
Exemplos/Exercícios




Componentes de uma interface gráfica: botões,
menus, barras, ...
Pessoas: aluno, professor, secretária, reitor
Veículos: bicicleta, veleiro, carro, caminhão, avião,
planador, motocicleta, cavalo
Habitações: tenda, caverna, barraco, garagem,
celeiro, casa, arranha-céu
Notação:
Multiplicidade e Ordenação
UML
OMT
Classe A
Classe A
1
Classe A
Classe A
0..*
Classe A
Classe A
0..1
Classe A
1+
Classe A
1..*
Classe A
2-5,10
Classe A
2-5,10
Classe A
{ordenado}
Classe A
0..* {ordenado}
Ligação




Uma conexão física ou conceitual entre objetos
Exemplo: O país Brasil tem como capital a cidade
de Brasília.
Exemplo: O funcionário João trabalha na empresa
Transamérica S.A.
Exemplo: O artigo “OO Solutions” foi publicado na
conferencia OOPSLA’99.
Associação



Relacionamento entre instâncias de duas ou mais
classes descrevendo um grupo de ligações com
estrutura e semântica comuns.
Exemplo: Um país tem como capital uma cidade.
Exemplo: Um funcionário trabalha numa empresa.
Agregação



Forma especial de associação, entre o todo e
suas partes, na qual o todo é composto pelas
partes
Também chamada de herança horizontal
Exemplo: Um artigo é publicado em uma
conferência, isto é, o artigo faz parte da
conferência (ou dos anais da conferência).
Multiplicidade e Papel


Multiplicidade: Número de instâncias de
uma classe que podem se relacionar a uma
única instância de um classe associada (ou
agregada).
Papel: nome que identifica
inequivocamente uma extremidade de
uma associação.
Classe Pessoa
Diagrama de instâncias
Cônjuge
(Pessoa) mãe
uma avó
pai (Pessoa)
um avô
filho
(Pessoa)
uma tia
Irmão
(Pessoa)
seu pai
Cônjuge
pai
filho
mãe
filho
(Pessoa)
um primo
filho
Primo
(Pessoa) filho
você
(Pessoa)
sua mãe
mãe
Classe Pessoa
Diagrama de instâncias
Cônjuge
(Pessoa) mãe
Ederiges
pai
filho
(Pessoa)
Fátima
Irmão
filho
(Pessoa)
Emílio
Cônjuge
pai
filho
mãe
filho
(Pessoa)
Marcelo
(Pessoa)
Casemiro
Primo
(Pessoa) filho
Edson
(Pessoa)
Vitória
mãe
Atributo de Ligação



Um valor de dados presente em cada ligação
(nível de instâncias) de uma associação (nível de
classes)
Uma propriedade da ligação entre objetos, e não
dos objetos ligados, propriamente ditos
Exemplos: permissão de acesso que um usuário
possui para a um arquivo; o salário de uma
pessoa em um emprego em uma companhia
Atributo de Ligação
Exemplo: Muitos para Muitos
Arquivo
String : nome
Acessível por
Usuário
String : nome
Integer : permissão
/etc/termcap
/etc/termcap
/usr/doe/.login
( leitura )
( leitura-escrita )
( leitura-escrita )
John Doe
Mary Brown
John Doe
Atributo de Ligação
Exemplo: Um para Muitos
Pessoa
String : nome
String : telefone
trabalhador
Trabalha-para
chefe
Gerencia
Float : desempenho
Float : salário
String : cargo
Empresa
String : nome
String : endereço
Associação como uma Classe





Cada ligação de uma associação é uma instância
de uma classe
Uma ligação é um objeto, com atributos e
métodos
Útil quando ligações podem participar em
associações com outros objetos
Útil quando ligações sofrem operações
Exemplo: autorização para usuários em estações
de trabalho
Associação como uma Classe
Exemplo
Pessoa
String : nome
String : telefone
Estação Trabalho
String : IP
Autorizado
Usuário
Integer : prioridade
Integer : privilégios
IniciarSessao() : void
Diretório
básico
Diretório
String : nome
Associação Ternária




Representa ligações entre 3 objetos
Não pode ser dividida em associações binárias sem
que haja perda de informações
Associações de grau maior que 3 são raras e devem
ser evitadas devido a complexidade de entendimento e
implementação
Exemplo: pessoas que são programadoras usam
linguagens de programação em projetos
Associação Ternária + Papel
Pessoa
comprador
String : nome
String : telefone 1
vendedor 1
Concessionária
String : nome
String : endereço
Veículo
objeto String : marca
1. .* String : cor
Compra
Data : data
Associação Ternária + Papel
Pessoa
vendedor
String : nome
String : telefone 1
comprador 1
Concessionária
String : nome
String : endereço
Veículo
objeto String : marca
1. .* String : cor
Compra
Data : data
Exercício
Pessoa
nome : String
idade : Int
ID empregador 1 : ?
ID empregador 2 : ?
ID empregador 3 : ?
endereço : String
ID Pessoa : ?
Carro
ID proprietário : ?
ID carro : ?
tipo proprietário : ?
modelo : String
ano : Int
Empréstimo
ID proprietário : ?
ID cliente : ?
número de conta : Int
ID banco : ?
juro : Real
saldo atual : Real
tipo proprietário : ?
Empresa
nome : String
ID Empresa : ?
Banco
nome : String
ID banco : ?
Estas classes possuem atributos que são ponteiros para outras classes de objetos.
Estes ponteiros podem ser substituídos por associações. Considerando que:
• cada pessoa pode ter até três empregos em empresas diferentes.
• cada pessoa, carro, empresa e banco possui o seu próprio identificador (ID).
• o proprietário de um carro pode ser: uma pessoa, uma empresa ou um banco.
• em um empréstimo, o carro é o objeto penhorado (ou comprado).
Prepare um diagrama de classes, onde os ponteiros são substituídos por relações.
Pode haver a necessidade de acrescentar uma ou mais classes. Elimine todos os ID.
Certos atributos podem ser transformados em discriminantes *.
* Um discriminante é um atributo do tipo enumeração que indica que uma propriedade de um
objeto tornou-se abstrata através de uma relação de generalização.
Exercício
Pessoa
nome : String
idade : Int
ID empregador 1 : ?
ID empregador 2 : ?
ID empregador 3 : ?
endereço : String
ID Pessoa : ?
Resposta
Pessoa
Integer : idade
String : endereço
Carro
ID proprietário : ?
ID carro : ?
tipo proprietário : ?
modelo : String
ano : Int
Empréstimo
ID proprietário : ?
ID cliente : ?
número de conta : Int
ID banco : ?
juro : Real
saldo atual : Real
tipo proprietário : ?
Possui
Proprietário
String : nome
Empresa
beneficiário
Banco
cedente
Emprega
Empresa
nome : String
ID Empresa : ?
Banco
nome : String
ID banco : ?
Veículo
String : modelo
Integer : ano
Empréstimo
Integer : conta
Float : juros
Float : saldo
penhor
Ordenação em Associações



Em alguns casos o conjunto de objetos
associados a um certo objeto apresenta uma
ordem
A palavra "ordenado" deve aparecer junto à
multiplicade "muitos" de uma associação para
indicar que existe uma ordem entre os objetos
ligados
Exemplos: as janelas visíveis em uma tela
possuem uma ordem; os vértices de um polígono
Exercício
(Pessoa)
-10
10
Tem
Tem
(Ponto)
10
10
(Polígono)
(Ponto)
-10
-10
Tem
Tem
(Ponto)
10
-10
• Prepare um diagrama de classes a partir do diagrama de instâncias em
questão. Explique suas decisões de multiplicidade. Cada ponto tem
uma coordenada x e uma coordenada y. Qual é o menor número de
pontos necessários para a construção de um polígono? Faz alguma
diferença se um ponta pode ou não ser compartilhado por diversos
polígonos? Como você pode expressar o fato de que os pontos estão
em seqüência?
Exercício
(Pessoa)
-10
10
Tem
Tem
(Ponto)
10
10
(Polígono)
(Ponto)
-10
-10
Tem
Tem
(Ponto)
10
-10
Resposta
Polígono
Ponto
3+
{ordenado}
X : Real
Y : Real
Exercício
(Pessoa)
próximo
-10
10
próximo
(Ponto)
-10
-10
último
(Ponto)
10
10
(Polígono)
primeiro
próximo
(Ponto)
10
-10
próximo
• Prepare um diagrama de classes e implemente-o (numa linguagem de
programação de computadores orienta a objetos) a partir do diagrama de
instâncias da figura abaixo. Explique suas decisões de multiplicidade. Como o
seu diagrama expressa o fato de que os pontos estão em seqüência?
Exercício
(Pessoa)
próximo
-10
10
próximo
(Ponto)
-10
-10
último
(Ponto)
10
10
(Polígono)
primeiro
próximo
(Ponto)
10
-10
próximo
Resposta
Polígono
primeiro
último
Ponto
X : real
Y : real
próximo
Associação Qualificada




Relaciona dois objetos e um qualificador
O qualificador reduz a multiplicidade
Exemplo: Um diretório contém muitos arquivos,
mas é o nome do arquivo dentro do diretório
que identifica o arquivo (e identifica um único
arquivo)
Maior precisão na informação!!
Associação Qualificada
Exemplos
Diretório
Empresa
ABC W
ABC W
ABC W
ABC W
ABC W
XYZ Candy
nome do arquivo
escritório
Arquivo
organização
funcionário
Presidente
Tesoureiro
Diretor
Diretor
Diretor
Presidente
Pessoa
Roger Slick
Joe Embezzle
Joe Boe
Jane Doe
Moe Brown
Moe Brown
Uso de Agregação




Na dúvida, use associação!
Herança não representa o relacionamento
parte-todo
Agregados recursivos são freqüentes
Agregação normalmente implica em
propagação de operações
Uso de Agregação
Exemplo
Propagação de operação
Pessoa
Possui
cópia
cópia
Documento
Parágrafo
Sentença
cópia() : void
cópia() : void
cópia() : void
Uso de Agregação
Exemplo
Microcomputador
Monitor
Chassis
Caixa do Sistema
C.P.U
Mouse
R.A.M
Teclado
Ventoinha
Uso de Agregação
Exercício

Prepare um diagrama de classes a partir do diagrama
de instâncias de um documento geométrico mostrado
na seqüência. Esse documento tem 4 páginas. A
primeira página tem um ponto vermelho e um
quadrado amarelo desenhados nela. A segunda
página contém uma linha e uma elipse. Um arco, um
círculo e um retângulo aparecem nas duas últimas
páginas. Ao preparar seu diagrama, utilize
exatamente um relacionamento de agregação e um
ou mais relacionamentos de generalização
Uso de Agregação
Exercício
(Ponto)
dimensões = 0
cor = vermelho
posição = (5,4)
(Página)
N. página = 1
(Quadrado)
dimensões = 2
cor = amarelo
posição = (54,88)
orientação = 22 graus
largura = 10
altura = 10
(Linha)
dimensões = 1
cor = azul
posição = (12,9)
orientação = 36 graus
comprimento = 7
(Página)
N. página = 2
(Elipse)
dimensões = 2
cor = marrom
posição = (-300,49)
orientação = 0 graus
largura = 100
altura = 50
(Arco)
dimensões = 1
cor = verde
posição = (25,36)
orientação = 45 graus
diâmetro = 13
(Página)
N. página = 3
(Círculo)
dimensões = 2
cor = laranja
posição = (10,78)
largura = 5
altura = 5
(Página)
N. página = 4
(Retângulo)
dimensões = 2
cor = azul
posição = (102,158)
orientação = 30 graus
largura = 5
altura = 10
Uso de Agregação
Exercício
Resposta
Figura 0D
Ponto
Figura
cor
posição
Figura 1D
orientação
Linha
comprimento
Arco
diâmetro
angulo
Contem
Página
Figura 2D
largura
altura
orientação
Retângulo
Elipse
Quadrado
Circulo
Classes Abstratas e Concretas


Classe abstrata: classe que não pode ter instâncias
diretas, mas cujos descendentes sim; organizam
características comuns a diversas classes;
mecanismo para reutilizar código; pode definir
operações abstratas (sem um correspondente
método)
Classe concreta: classe que pode ter instâncias
diretas; não pode definir operações abstratas
Cancelamento para extensão

A nova operação é igual à operação
herdada, exceto pelo fato de acrescentar
alguns detalhes de comportamento,
normalmente afetando novos atributos da
subclasse.
Cancelamento para restrição


A nova operação restringe o protocolo
(assinatura da operação), podendo reduzir
os tipos de argumentos.
A operação herdada fica fechada (restrita)
dentro de cada subclasse específica.
Cancelamento para otimização


O novo método tem o mesmo protocolo
externo e apresenta o mesmos resultados
A implementação do novo método
(algoritmo utilizado) pode ser
completamente diferente
Cancelamento por conveniência



Emprego ad hoc de herança para reutilizar classes.
Uma nova classe é tornada subclasse de uma classe
existente e substitui os métodos inconvenientes.
Semanticamente errado e conduz a problemas de
manutenção; recomenda-se criar uma terceira classe
(superclasse das demais)
Herança Múltipla





Uma classe possui mais de uma subclasse e
herda características de todos os seus ancestrais
Maior capacidade de especificação de classes
Maior oportunidade de reutilização
Perda em simplicidade conceitual e de
implementação
Surgem classes de junção
Modelagem Dinâmica
Modelo Dinâmico


Representa os aspectos de um sistema
relativos ao tempo e às modificações de
estado
Abrangência:
• interações
• seqüência de operações
• fluxo de controle
Controle de um sistema

Descreve as seqüências de operações que
ocorrem em resposta a estímulos externos,
sem considerar ao que as operações fazem,
sobre o que elas atuam ou como são
implementadas.
Conceitos fundamentais


EVENTO: representa um estímulo externo;
conduz informação de um objeto para outro.
ESTADO: representa valores (atributos e
ligações) de um objeto; estado externo do objeto.
MÁQUINA DE ESTADOS FINITOS
Permite especificação de controle
Diagrama de Estados




Representação gráfica de uma máquina de estados
finitos
Representa o padrão de eventos, estados e
transições de estados para uma classe
O modelo dinâmico de um sistema é composto por
um conjunto de diagramas de estados, uma para
cada classe.
Cada máquina de estado funciona de maneira
independente; são combinadas através de eventos
compartilhados.
Eventos


Um evento é algo que acontece "instantaneamente",
em um certo momento.
Exemplos:
• pressionar um botão do mouse
• aparecer uma janela na tela
• partida de um avião
• chegada de um avião
• tocar um telefone
• atender ao telefone
Exemplo de cenário :
chamada telefônica



















chamador levanta receptor
sinal de discar começa
chamador disca dígito( 3 )
sinal de discar pára
chamador disca dígito ( 3 )
chamador disca dígito ( 0 )
chamador disca dígito ( 8 )
chamador disca dígito ( 0 )
chamador disca dígito ( 8 )
chamador disca dígito ( 1 )
telefone chamado começa a tocar
ouve-se o tilintar do telefone chamado
pessoa chamada atende
telefone chamado pára de tocar
som de chamada desaparece do telefone chamador
telefones são interligados
pessoa chamada desliga
telefones são desligados
chamador desliga
Exemplo de diagrama de eventos :
chamada telefônica
Chamador
chamador levanta receptor
sinal de discar começa
disca ( 3 )
sinal de discar pára
disca ( 3 )
disca ( 0 )
disca ( 8 )
disca ( 0 )
disca ( 8 )
disca ( 1 )
som de campainha
som de campainha pára
telefones interligados
conexão desfeita
chamador desliga
Linha telefônica
Chamado
telefone toca
atende telefone
campainha pára
telefones interligados
Pessoa chamada desliga
conexão desfeita
Relacionamentos entre eventos


Causal: existe uma ordem entre os eventos.
Exemplo: O vôo 123 deve partir de Chicago antes
de chegar a São Francisco.
Concorrente: ordem dos eventos é irrelevante.
Exemplo: O vôo 123 pode partir antes ou depois
que o vôo 456 parta de Roma. (Se fosse "para
Roma", deveríamos considerar se não usam a
mesma pista.)
Classes de eventos




Indicam estrutura e comportamentos comuns a
eventos.
Simplificam a construção de diagramas de estados.
Exemplo: classe partidas de aviões, com atributos
linha aérea, número de vôo, cidade de origem, cidade
destino.
O momento ocorrência de um eventos é um atributo
implícito.
Cenário




Seqüência de eventos que ocorrem durante uma
determinada execução do sistema
Ilustra uma situação típica do sistema
Auxilia no entendimento do problema e na
condução para uma representação geral (modelo
dinâmico)
Diagrama de eventos: representação gráfica de
um cenário. Exemplo: uma chamada telefônica.
Diagramas de Estados





Relaciona eventos e estados
Um objeto muda de estado dependendo do evento
e do estado atual.
Transição: modificação de estado causada por um
evento (mesmo quando estado final e inicial
coincidem).
Um evento pode ser irrelevante para um objeto em
um certo estado.
Exemplo: linha telefônica
Diagramas de Estados
Exemplo : Linha telefônica
no-gancho
no-gancho
Inativa
fora-do-gancho
Sinal de discar
dígito( n )
Sinal de
ocupado
número
ocupado
Sinal de ocupado rápido
tronco
ocupado
queda-da-linha
dígito( n )
Discando
número válido
Quedada-linha
número Mensagem
gravada
invalido
Ligando
encaminhado
Tocando
telefone chamado atende
Interligando
telefone chamado desliga
Desligando
Mensagem
terminada
Tipos de diagramas de estados



Diagrama de laço contínuo: representa um ciclo
de vida; sem estado inicial ou final. Exemplo: linha
telefônica.
Diagrama de uma só passagem: representa
objetos com vida finita; possuem um estado inicial
(criação do objeto) e um estado final (destruição
do objeto).
Exemplo: jogo de xadrez
Diagramas de Estados
Exemplo : jogo de xadrez
Diagrama de estados de uma só passagem
para um jogo de xadrez
Início
Vez das
brancas
pretas
jogam
brancas
jogam
cheque-mate
Pretas
vencem
empate forçado
Empate
empate forçado
Vez das
pretas
cheque-mate
Brancas
vencem
Condições



Uma condição é uma função booleana de
valores, válida dentro de um intervalo de tempo.
Condições funcionam como guardas nas
transições: uma transição só dispara quando
ocorre o evento e a condição de guarda for
verdadeira.
Exemplo: Pessoa com relação ao atributo "estar
de luvas".
Diagramas de Estados
Exemplo : Veículo
Diagrama de estados com transições guardadas
Norte / Sul
podem ir em frente
tempo decorrido [ carros
nas vias esquerdas N / S ]
tempo
decorrido
tempo
decorrido
Leste / Oeste
podem dobrar
à esquerda
Norte / Sul
podem dobrar
à esquerda
tempo decorrido [ carros
nas vias esquerdas L / O ]
Leste / Oeste
podem ir em frente
Controle de Operações


Atividades e ações podem ser vinculadas a
estados e eventos a fim de se especificar o
que faz o objeto quando está em um
determinado estado e o que faz em
resposta a estímulos externos.
Definem o comportamento do objeto!
Atividade





Está sempre vinculada a um estado
Consome tempo para se completar
É executada continuamente durante o tempo em que o
objeto está num certo estado
Notação:
faça: atividade
Exemplo: Um vendedor logo após ter recebido dinheiro
para pagamento do item vendido deve calcular o troco.
faça: calcular troco
Ação




Está normalmente vinculada a um evento, mas
também pode estar vinculada a um estado (ações de
entrada, saída e internas)
É executada "instantaneamente"
Notação:
evento / ação
Exemplo: Exibir um menu quando o botão direito do
mouse é pressionado.
botão direito pressionado / exibir menu
Controle de Operações
Ações para um menu instantâneo
botão direito pressionado /
exibir menu instantâneo
Menu
visível
Inativo
botão direito liberado /
apagar menu instantâneo
cursor movimentado /
iluminar item do menu
Diagrama de Estados com
Operações
Notação
Estado 1
faça : atividade 1
Evento 1 ( atributos )
[ condição 1 ] / ação 1
Estado 2
...
Exercício:
rescrever o diagrama de uma chamada telefônica
utilizando a notação acima
Diagramas de Estados Nivelados




Permitem refinamentos sucessivos do modelo
dinâmico
Permitem uma descrição estruturada do sistema
Pode-se expandir:
• um evento e sua correspondente ação
• uma atividade realizada em um certo estado
Exemplo: Máquina de vender
Diagramas de Estados Nivelados
Exemplo : máquina de vender
moedas introduzidas ( quantia ) /
verificar saldo
Inativa
cancelar / devolver moedas
Recolhendo dinheiro
moedas introduzidas ( quantia ) /
acrescentar ao saldo
Selecionar ( item )
[ item vazio ]
[ troco < 0 ]
faça : testar item e calcular troco
[ troco = 0 ]
faça : entregar
item
[ troco > 0 ]
faça : preparar
troco
Diagramas de Estados Nivelados
Exemplo : máquina de vender
Atividade entregar item da máquina de vender
braço pronto
Faça : mover
braço para a
fileira correta
Faça : mover
braço para a
coluna correta
Transição selecionar
item da máquina de vender
faça : preparar
item
braço pronto
dígito( n )
clear
empurrado
faça : empurrar
item para fora
da prateleira
dígito( n )
Selecionar( item )
faça :
acrescentar
dígito
enter
Generalização de Estados




Os estados de um objeto podem ser organizados de forma
hierárquica, em super-estados e sub-estados.
Um sub-estado é um refinamento de um super-estado, i.e.,
um sub-estado é um dos possíveis estados do objeto
dentro daquele super-estado.
Um sub-estado herda as transições do super-estado;
transições que se aplicam ao super-estado também se
aplicam ao sub-estado.
Exemplos: linha telefônica, transmissão automática de um
automóvel
Generalização de Estados
Exemplo : transmissão de um carro
apertar R
Neutro
Ré
apertar N
apertar N
apertar F
Para a frente
sobe
pára
Primeira
sobe
Segunda
reduz
Terceira
reduz
Generalização de Eventos





Os eventos que ocorrem em um sistema podem ser
organizados de forma hierárquica, em super-eventos e
sub-eventos.
Um sub-evento herda atributos do super-evento.
Onde um evento é descrito qualquer sub-evento seu é
implicitamente descrito.
A generalização de eventos facilita a abstração e permite
concisão na representação de diagramas.
Exemplo: Entrada do usuário.
Generalização de Eventos
Exemplo : eventos de teclado
evento
tempo
Entrada do usuário
dispositivo
Botão do mouse
localização
Botão do
mouse
apertado
Botão do
mouse
liberado
Hierarquia parcial de
eventos para eventos
de teclado
caracter do teclado
caracter
controle
gráfico
espaço
alfanumérico
pontuação
Concorrência de Agregação




O estado de um objeto composto (um agregado) é determinado
pelos estados dos objetos que o compõem.
Exemplo: O estado de um carro é determinado pelo estado da
ignição, da transmissão, do freio, do acelerador, do motor, ...
Os componentes de um agregado normalmente interagem entre si:
a mudança de estado de um componente pode disparar uma
transição em outro componente.
A interação entre diagramas de estados de componentes é
representada através de eventos compartilhados e/ou condições de
guarda.
Concorrência de Agregação
Carro
Ignição Transmissão
Freio
Girar chave para dar partida
[ transmissão em Neutro ]
Ignição
Desligada
Acelerador
liberar
chave
Partida
Ligada
desligar a chave
Acelerador
Desligado
apertar
acelerador
liberar acelerador
Freio
Ligado
Desligado
apertar
freio
liberar freio
Partido
Concorrência Interna de Objetos




O diagrama de estados de um objeto pode ser
particionado de acordo com atributos e ligações em
sub-diagramas.
O estado do objeto compreende um estado de cada
sub-diagrama.
Um mesmo evento pode causar transições em mais
de um sub-diagrama.
Exemplo: Jogo de bridge rubber.
Concorrência Interna de Objetos
Jogo de bridge com estados concorrentes
Jogando rubber
Vulnerabilidade N - S
Não vulnerável
jogo N - S
Vulnerável
jogo N - S
N-S vence rubber
Vulnerabilidade L - O
Não vulnerável
jogo L - O
Vulnerável
jogo L - O
L - O vence rubber
Transição Automática



Disparada quando a atividade vinculada a um
estado termina
O "evento" que causa a transição é o término
da atividade
Exemplo: Máquina de vender no estado
correspondente a atividade testar item e
calcular troco pode disparar uma de quatro
transições automáticas.
Ações de Entrada e de Saída



Ações vinculadas ao ato de entrar ou sair
de um estado
Não adicionam poder de expressão, mas
permitem uma representação mais concisa
Exemplo: Controle de uma porta de
garagem
Envio de Eventos



Uma ação pode ser especificada como enviar um
certo evento para outro objeto.
Notação:
enviar E (atributos)
(palavra enviar pode ser omitida)
Exemplo: Uma linha telefônica envia o evento
ligar(número-de-telefone) para o comutador quando
um número completo é discado.
número completo / ligar(número-de-telefone)
Sincronização de Eventos
Concorrentes



Um objeto pode executar várias atividades
de forma concorrente (paralela).
As atividades não são necessariamente
sincronizadas, mas todas devem terminar
para que ocorra transição de estado.
Exemplo: Caixa automática.
Sincronização de Eventos
Concorrentes
Emitindo
Faça : entregar dinheiro
dinheiro
recolhido
Pronta para
reinicializar
Preparação
Faça : ejetar cartão
cartão
recolhido
Modelagem Funcional
Introdução

O modelo funcional:
• descreve os cálculos executados em um
sistema
• especifica o que acontece

O modelo dinâmico
• especifica quando acontece

O modelo objeto
• o que acontece a quem
Modelo funcional


O modelo funcional é composto por
múltiplos DFD que especificam o significado
das operações e restrições
Um DFD mostra os relacionamentos
funcionais dos valores calculados por um
sistema, incluindo-se aí valores de entrada
e de saída e de depósitos internos de dados
D.F.D.
Ele mostra
• o fluxo dos valores de dados desde suas origens nos objetos,
através dos processos que os transformam, até seus destinos
em outros objetos
Ele NÃO mostra
• informações de controle, como o momento em que os
processos são executados, ou decisões entre vias alternativas
de dados; essas informações pertencem ao modelo dinâmico
• a organização dos valores no interior dos objetos; essa
informação pertence ao modelo de objetos
D.F.D.
Um D.F.D. contém:
•
•
•
•
processos que transformam dados,
fluxos de dados que movimentam dados,
objetos atores que produzem e consomem dados e
objetos depósitos de dados que armazenam dados
passivamente
D.F.D.
Definições
de ícones
nome de
ícone
Expandir
em vetores
tamanho
lista de
vetores de
aplicação
Janela
localização
Cortar
vetores
lista de vetores
da janela
Deslocar
vetores
localização
Buffer da tela
operações
de pixels
Converter
em vetores
lista de
vetores
da tela
Processos
dividendo
quociente
nome do
ícone
Dividir
Inteira
Exibir
Ícone
localização
divisor
resto
operações
de pixels
Fluxos de dados
• Um fluxo de dados interliga a saída de um objeto ou
processo à entrada de outro objeto ou processo.
• Os fluxos de dados representam os valores intermediários
de dados em uma computação.
• Os valores não são modificados pelos fluxos
rua e
número
número
cidade
endereço
código
postal
estado
Atores






Um ator é um objeto que dirige o DFD produzindo ou
consumindo valores.
Os atores são vinculados às entradas e saídas de um DFD.
Os atores, normalmente, se localizam nos limites do DFD
tanto como origens ou como destinos de dados
Um ator é desenhado como um retângulo para mostrar que
ele é um objeto.
As flechas entre o ator e o diagrama são entradas e saídas do
diagrama.
Exemplo: o “buffer” de tela é um ator que consome operações
de pixels.
Depósitos de dados




Um depósito de dados é um objeto passivo, em DFD, que
armazena dados para uso futuro.
Um depósito de dados permite que o acesso aos valores
seja feito em uma ordem diferente daquela em que foram
gerados.
Depósitos de dados agregados como listas e tabelas,
permitem acesso aos dados por ordem de inserção ou por
chaves de indexação.
Exemplo: como depósito de dados pode-se incluir o banco de
dados de reserva de lugares em uma empresa aérea, contas
bancárias e uma lista de registros de temperatura do dia
anterior.
Depósitos de dados


Um depósito de dados é desenhado como um par de
linhas paralelas contendo o nome do depósito
As setas de entrada indicam informações ou operações
que modificam os dados armazenados, incluindo :
• o acréscimo de elementos ;
• a modificação de valores ;
• a eliminação de elementos.

As setas de saída indicam a recuperação de informações
do depósito, incluindo:
• a recuperação de todo o valor ou
• de uma parte dele.
Depósitos de dados
Conta
temperatura
temp. max.
Leituras
cliente
retirada
saldo
--
temp. min.
nome do
item
Lista de
preços
Tabela
periódica
pesos atômicos
preço
nome do
item
achar
preço
preço
elemento
achar
peso
peso
atômico
Depósitos de dados
Banco
contas
Escolha
nome
Cliente
Conta
saldo
solicitação
Atualizar
Criação dinâmica ou seleção de um objeto para uso posterior
Depósitos de dados
Abrir
conta
Cliente
conta
Banco
nome,
depósito
Conta
número da
conta
Criação de um novo objeto
Download

Orientação a Objetos - PPGIa