orientação a objetos edson e. scalabrin, marcos a. h. shmeil e alcides calsavara {scalabrin, shm,...
TRANSCRIPT
Orientação a Objetos
Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara
{scalabrin, shm, alcides}@ppgia.pucpr.brTelefone: 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
Gerentes
Geramsolicitações
ConstróiModelos
Enunciado doProblema
Entrevistas com o usuário
Conhecimento do domínio
Experiência do mundo realModelo de ObjetosModelo DinâmicoModelo Funcional
Análise
Projeto
Introdução (continuação)
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-55-828357-9.
Grady Booch and Ed Eykholt (Eds). The Best of Booch: Designing Strategies for Object Technology. Prentice-Hall, 1996. ISBN 0-13-739616-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
MOTO
Marca: Stringcor: Stringestado: boolean
ligaMotor(),mostraAtributos()
Nome da classe
Atributos + tipos
Métodos
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 ligaMotorvoid 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: booleancor: Coresx: inty: int
desenhe(), aperte(),desaperte(),pegaEstado(),mova(float x1, float x2)
BOTÃO REDONDO
raio : int
desenhe()
BOTÃO QUADRADO
diagonal : int
desenhe()
Implantação da classe Botão
class Botao
{boolean estado;int cor;float x, y;
public Botao(int cor){
estado = true;cor = 0;x = y = 0;
}
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; }
}
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
Escreva um diagrama de classes para estas 3 (três) instâncias. Não é necessário incluir métodos.
(Aparelho de troca de calor)nome = E302fabricante = Brownpeso = 5000 kgpreço = $20000área da superfície diâmetro do tubo = 2 cmcomprimento do tubo = 6 mpressão do tubo = 15 atmpressão da concha = 1,7 atm
(Tanque de teto flutuante)nome = T111fabricante = Simplexpeso = 10000 kgpreço = $50000volume = 400000 Lpressão = 1,1 atmdiâmetro = 8 maltura = 9m (Bomba de diafragma)
nome = P101fabricante = Simplexpeso = 100 kgpreço = $5000pressão de sucção = 1,1 atmpresssão de descarga = 3,3 atmtaxa de fluxo = 300 I/hmaterial 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
Classe A
Classe A
Classe A
Classe A
Classe A
Classe A
Classe A
Classe A
Classe A
Classe A
Classe A
Classe A
0..*
1
0..1
1..*
2-5,10
0..* {ordenado}
1+
2-5,10
{ordenado}
OMT UML
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 PessoaDiagrama de instâncias
(Pessoa)uma avó
(Pessoa)um avô
(Pessoa)uma tia
(Pessoa)um primo
(Pessoa)você
(Pessoa)sua mãe
(Pessoa)seu pai
Cônjuge
Cônjuge
Primo
filho
filho
filho
Irmão
filho filho
mãe pai
pai mãemãe
Classe PessoaDiagrama de instâncias
(Pessoa)Ederiges
(Pessoa)Casemiro
(Pessoa)Fátima
(Pessoa)Marcelo
(Pessoa)Edson
(Pessoa)Vitória
(Pessoa)Emílio
Cônjuge
Cônjuge
Primo
filho
filho
filho
Irmão
filho filho
mãe pai
pai mãemã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
ArquivoString : nome
UsuárioString : nome
Integer : permissão
Acessível por
/etc/termcap ( leitura ) John Doe/etc/termcap ( leitura-escrita )
Mary Brown/usr/doe/.login ( leitura-escrita ) John Doe
Atributo de Ligação Exemplo: Um para Muitos
PessoaString : nomeString : telefone
EmpresaString : nomeString : endereço
Float : salárioString : cargo
Trabalha-para
Float : desempenho
chefe
trabalhadorGerencia
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
PessoaString : nomeString : telefone
Estação TrabalhoString : IP
UsuárioInteger : prioridadeInteger : privilégios
IniciarSessao() : void
Autorizado
DiretórioString : nome
Diretóriobásico
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
PessoaString : nomeString : telefone
VeículoString : marcaString : cor
ConcessionáriaString : nomeString : endereço
objeto
vendedor
comprador1. .*
1
1
Compra
Data : data
Associação Ternária + Papel
PessoaString : nomeString : telefone
VeículoString : marcaString : cor
ConcessionáriaString : nomeString : endereço
objetovendedor
comprador
1. .*
1
1
Compra
Data : data
Exercício
Pessoa
nome : Stringidade : IntID empregador 1 : ?ID empregador 2 : ?ID empregador 3 : ?endereço : StringID Pessoa : ?
Carro
ID proprietário : ?ID carro : ?tipo proprietário : ?modelo : Stringano : Int
Empréstimo
ID proprietário : ?ID cliente : ?número de conta : IntID banco : ?juro : Realsaldo atual : Realtipo proprietário : ?
Empresa
nome : StringID Empresa : ?
Banco
nome : StringID 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 : Stringidade : IntID empregador 1 : ?ID empregador 2 : ?ID empregador 3 : ?endereço : StringID Pessoa : ?
Carro
ID proprietário : ?ID carro : ?tipo proprietário : ?modelo : Stringano : Int
Empréstimo
ID proprietário : ?ID cliente : ?número de conta : IntID banco : ?juro : Realsaldo atual : Realtipo proprietário : ?
Empresa
nome : StringID Empresa : ?
Banco
nome : StringID banco : ?
Resposta Veículo
String : modeloInteger : ano
Proprietário
String : nome
Possui
PessoaInteger : idadeString : endereço
Empresa BancoEmpréstimoInteger : contaFloat : jurosFloat : saldo
cedente
penhor
Emprega
beneficiário
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
• 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?
(Pessoa)-1010
(Ponto)-10-10
(Ponto)10-10
(Ponto)1010
(Polígono)
Tem
Tem Tem
Tem
Resposta
Exercício
(Pessoa)-1010
(Ponto)-10-10
(Ponto)10-10
(Ponto)1010
(Polígono)
Tem
Tem Tem
Tem
Ponto
X : RealY : Real
Polígono
3+{ordenado}
Exercício
• 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?
(Pessoa)-1010
(Ponto)-10-10
(Ponto)10-10
(Ponto)1010
(Polígono)
próximo
próximo
primeiroúltimo
próximo
próximo
Exercício
(Pessoa)-1010
(Ponto)-10-10
(Ponto)10-10
(Ponto)1010
(Polígono)
próximo
próximo
primeiroúltimo
próximo
próximo
Resposta PontoX : realY : real
Polígonoprimeiro
último
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 QualificadaExemplos
Diretório Arquivonome do arquivo
Empresa Pessoaescritórioorganização
funcionárioABC W Presidente Roger SlickABC W Tesoureiro Joe EmbezzleABC W Diretor Joe BoeABC W Diretor Jane DoeABC W Diretor Moe BrownXYZ Candy Presidente 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çãoExemplo
Documento SentençaParágrafo
Pessoa
Possui
cópiacópia
cópia() : void cópia() : void cópia() : void
Propagação de operação
Uso de AgregaçãoExemplo
Microcomputador
Monitor Mouse Teclado
Chassis C . P . U R . A . M Ventoinha
Caixa do Sistema
Uso de AgregaçãoExercí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çãoExercício
(Ponto)dimensões = 0cor = vermelhoposição = (5,4)
(Linha)dimensões = 1cor = azulposição = (12,9)orientação = 36 grauscomprimento = 7
(Arco)dimensões = 1cor = verdeposição = (25,36)orientação = 45 grausdiâmetro = 13
(Círculo)dimensões = 2cor = laranjaposição = (10,78)largura = 5altura = 5
(Quadrado)dimensões = 2cor = amareloposição = (54,88)orientação = 22 grauslargura = 10altura = 10
(Elipse)dimensões = 2cor = marromposição = (-300,49)orientação = 0 grauslargura = 100altura = 50
(Retângulo)dimensões = 2cor = azulposição = (102,158)orientação = 30 grauslargura = 5altura = 10
(Página)N. página = 1 (Página)
N. página = 2 (Página)N. página = 3
(Página)N. página = 4
Uso de AgregaçãoExercício
Resposta PáginaFiguracor
posição
Contem
Ponto
Figura 0D
Linhacomprimento
Figura 1Dorientação
Retângulo
Figura 2Dlarguraalturaorientação
Elipse
Quadrado Circulo
Arcodiâmetroangulo
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 Linha telefônica Chamadochamador levanta receptorsinal de discar começa
disca ( 3 )sinal de discar pára
disca ( 3 )disca ( 0 )disca ( 8 )disca ( 0 )disca ( 8 )disca ( 1 )
telefone tocasom de campainhaatende telefonecampainha párasom de campainha pára
telefones interligadostelefones interligadosPessoa chamada desliga
conexão desfeitaconexão desfeitachamador desliga
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 EstadosExemplo : Linha telefônica
Inativa
Sinal de discar
Ligando
Tocando
Interligando
Desligando
Queda-da-linha
Mensagem gravadaSinal de
ocupado
Sinal de ocu-pado rápido
no-gancho
dígito( n )
no-gancho
Discando
Mensagemterminada
encaminhado
telefone chamado atende
telefone chamado desliga
número válido
número invalido
fora-do-gancho
dígito( n )
número ocupado
tronco ocupado
queda-da-linha
queda-da-linha
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 EstadosExemplo : jogo de xadrez
Vez dasbrancas
Vez daspretas
brancasjogam
pretasjogam
Início cheque-mate
empate forçado
empate forçado
cheque-mate
Pretasvencem
Brancasvencem
Empate
Diagrama de estados de uma só passagem para um jogo de xadrez
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 EstadosExemplo : Veículo
Leste / Oestepodem dobrar
à esquerda
tempodecorrido
Diagrama de estados com transições guardadas
Leste / Oestepodem ir em frente
Norte / Sulpodem ir em frente
tempo decorrido [ carrosnas vias esquerdas N / S ]
tempo decorrido [ carrosnas vias esquerdas L / O ]
tempodecorrido
tempo decorrido [ sem carros
nas vias esquerdas N / S ]
Norte / Sulpodem dobrar
à esquerda
tempo decorrido [ sem carros
nas vias esquerdas L / O ]
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
Inativo
botão direito pressionado /exibir menu instantâneo
Menu visível
botão direito liberado / apagar menu instantâneo
cursor movimentado / iluminar item do menu
Diagrama de Estados com Operações
Notação
Estado 1faç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 NiveladosExemplo : máquina de vender
Inativa
moedas introduzidas ( quantia ) / verificar saldo
Recolhendo dinheiromoedas introduzidas ( quantia ) /
acrescentar ao saldo
faça : entregaritem
faça : preparartroco
faça : testar item e calcular troco
[ troco = 0 ] [ troco > 0 ]
[ troco < 0 ]
Selecionar ( item )[ item vazio ]
cancelar / devolver moedas
Diagramas de Estados NiveladosExemplo : máquina de vender
Faça : moverbraço para afileira correta
faça : prepararitem
Faça : moverbraço para a
coluna correta
faça : empurraritem para forada prateleira
braço pronto braço pronto empurrado
dígito( n )
clear
faça : acrescentar
dígito
dígito( n )
enter
Selecionar( item )
Atividade entregar item da máquina de vender
Transição selecionar item da máquina de vender
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
Primeira Segunda Terceira
sobe
Neutro Réapertar R
apertar N
reduz
sobe
reduz
Para a frente
pára
apertar Fapertar N
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 EventosExemplo : eventos de teclado
evento
Entrada do usuário
Botão do mouse
apertado
controle gráfico
espaço alfanumérico pontuação
tempo
dispositivo
Botão do mouselocalização
caracter do tecladocaracter
Botão do mouse
liberado
Hierarquia parcial deeventos para eventos
de teclado
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
CarroIgnição Transmissão Freio Acelerador
Desligada Partida Ligada
Girar chave para dar partida[ transmissão em Neutro ]
desligar a chave
liberar chave
Ignição
Desligado Ligado
apertaracelerador
apertar freio
liberar acelerador liberar freio
Acelerador Freio
Desligado 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
Não vulnerável
Não vulnerável
Vulnerável
Vulnerável
N-S vence rubber
L - O vence rubber
Vulnerabilidade N - S
jogo N - S
Vulnerabilidade L - O
jogo L - O
jogo N - S
jogo L - O
Jogando rubber
Jogo de bridge com estados concorrentes
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
Faça : entregar dinheiro
Faça : ejetar cartão
Pronta parareinicializar
Emitindo
cartão recolhido
dinheiro recolhido
Preparação
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.
Expandirem vetores
Cortar vetores
Converterem vetores
Deslocar vetores
Buffer da tela
Definiçõesde ícones Janela
nome deícone
localização
localização
tamanho
lista de vetoresda janela
lista de vetores de aplicação
operações de pixels
lista de vetoresda tela
Processos
DividirInteira
dividendo
divisor
quociente
resto
ExibirÍcone
nome do ícone
localização
operaçõesde 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áriosde dados em uma computação.
• Os valores não são modificados pelos fluxos
número endereço
rua e número
códigopostal
cidade
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
Leituras
Lista depreços
Tabelaperiódica
temperaturatemp. max.
temp. min.
nome do item
preço
acharpreço
acharpeso
nome do item preço elemento
peso atômico
pesos atômicos
cliente --
Conta
saldoretirada
Depósitos de dados
Bancocontas
Escolha Conta
AtualizarCliente
saldo
solicitaçãonome
Criação dinâmica ou seleção de um objeto para uso posterior
Depósitos de dados
Abrir conta
Banco
Cliente
nome,depósito
Criação de um novo objeto
Contanúmero da conta
conta