Orientação a Objetos. Objetivo l Estudar técnicas e ferramentas para análise, projeto e implementação de sistemas orientados a objetos (OO)

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Programação em Java Prof. Maurício Braga
Alcides Calsavara Orientação a Objetos Alcides Calsavara
Introdução aos conceitos fundamentais da orientação a objetos
Modelagem de Estados.
Paulo Marques Hernâni Pedroso
Aula 8 Contratos.
UML Modelando um sistema.
Diagrama de Classes.
Modelo Entidade-Relacionamento
UML – MODELAÇÃO DA ESTRUTURA Professor Sandro Carvalho.
Modelagem Orientada a Objetos
Modelagem Orientada a Objetos
Modelagem Orientada a Objetos Relacionamentos. Conteúdo n Ligação entre objetos n Associação entre classes n Agregação n Multiplicidade e Papel n Atributo.
Referências Bibliográficas Orientação a Objetos
Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, Telefone: 0xx
Modelagem Funcional.
Introdução aos conceitos fundamentais da orientação a objetos
Modelagem de Sistemas Modelagem Funcional Modelagem de Dados
Análise Orientada a Objetos
Modelagem de Sistemas de Informação
Introdução ao paradigma de programação: Orientado a Objetos
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Análise e Projeto de Sistemas
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
UML - Unified Modeling Language
Diagrama de Estados.
O.O.H.D.M. Modelagem Conceitual
Diagramas de Sequência e Comunicação
Especificação de Requisitos de Software com Casos de Uso
UML - Unified Modeling Language
Introdução UML, Diagrama de Classes e Comunicação/Colabaração
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
DIAGRAMA DE CLASSE Modelagem de Software
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Diagrama de Atividades
Diagramas de Atividade
Programação Orientada à Objetos
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
UML - Unified Modeling Language
SISTEMAS DISTRIBUIDOS Aula 4
UML – Engenharia de Software 1
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Unified Modeling Language Professor Mário Dantas A NÁLISE O RIENTADA A O BJETOS Nov/2010.
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 7. Análise e projeto orientados a objetos 7.1 Técnica de modelagem.
POO Aula 03 Projeto OO com UML Eduardo Figueiredo 11 de Março de 2010.
Laboratório de Programação
RUP - Cap. 3 – Processo Dirigido por Caso de Uso
Revisão 2º Bimestre Engenharia de Software I
Diagrama de Colaboração. Diagramas de Interação Expressam informações bastante similares porém de maneira diferente Diagrama de seqüência: – Interação.
Fluxos secundários Só devem ser analisados e descritos após a descrição dos fluxos básicos. Fluxos alternativos situações especiais (desconto para um cliente)
Modelagem Orientada a Objetos Especialização em Engenharia de Software PUCPR 1999.
Introdução a Orientação a Objetos
UML Statechart CIn-UFPE.
A linguagem unificada de modelagem
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Modelagem de Sistemas Orientada a Objeto Com UML
Engenharia de Software Orientada a Objetos
CIn-UFPE1 UML Uma linguagem unificada de modelagem Visão Geral.
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
UML (Unified Modeling Language) A linguagem unificada de modelagem
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1 Análise e Projeto de Sistemas Modelagem de Requisitos com Casos de Uso.
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
Transcrição da apresentação:

Orientação a Objetos

Objetivo l Estudar técnicas e ferramentas para análise, projeto e implementação de sistemas orientados a objetos (OO)

Ementa l Conceituação de OO l Método para modelagem OO Modelagem de Objetos Modelagem Dinâmica Modelagem Funcional l Programação OO

Bibliografia Básica l James Rumbaugh et al. Modelagem e Projetos Baseados em Objetos. Editora Campus, ISBN X. l Grady Booch. Object-Oriented Analysis and Design with Applications. Second Edition. Addison-Wesley, ISBN l Ivar Jacobson. Object-Oriented Software Engineering - a Use Case Driven approach. Addison-Wesley, ISBN l Peter Coad. Objet Models - Strategies, Patterns & Applications. Prentice-Hall, ISBN l Dennis de Champeaux. Object-Oriented Development Process and Metrics. Prentice-Hall, ISBN l Gregory Satir and Doug Brown. C++ : The Core Language. OReilly & Associates, ISBN X.

Bibliografia Complementar l Jag Sodhi and Prince Sodhi. Object-Oriented Methos for Software Development. McGraw Hill, ISBN l Chris Zimmermann (Ed). Advances in Object-Oriented Metalevel Architectures and Reflection. CRC Pr, ISBN X. l Jonathan Pletzke. Advanced Smalltalk.. John Wiley & Sons, ISBN l Al Stevens. C++ Database Development. Mis Pr, ISBN l Grady Booch and Ed Eykholt (Eds). The Best of Booch: Designing Strategies for Object Technology. Prentice- Hall, ISBN

Conceitos de OO Modelagem de Objetos

Vantagens l Independência de implementação l Esconder detalhes l Flexibilidade l Clareza conceitual l Modularização l Reusabilidade

Áreas de aplicação l Linguagens de programação l Bancos de dados l Sistemas operacionais l Sistemas distribuídos l Interface gráfica l Métodos de modelagem de sistemas l Métodos formais: Z++ l Empacotamento de software: classes, componentes l Integração de sistemas: CORBA, DCOM l Reflexão: tolerância a falhas, reconfiguração

Conceitos fundamentais l Objeto l Identidade l Encapsulamento l Classificação/Instanciação l Generalização/Especialização l Herança l Polimorfismo

Objeto l Um conceito, uma abstração, algo com limites e significados definidos para o problema em questão l Um objeto do mundo real l Um conjunto de atributos (estado) e métodos (comportamento) l Uma instância de uma classe

Identidade l 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 l Uma identificação única de cada objeto

Encapsulamento l Técnica de modelagem e implementação que separa os aspectos externos de um objeto dos detalhes internos de implementação do mesmo objeto l Os atributos (estado) de objeto só é modificável a partir de seus métodos (interface)

Atributo l Propriedade denominada de uma classe, que descreve o valor de um dado contido por cada objeto da classe l Todo atributo tem um tipo e, opcionalmente, um valor default inicial l Cada instância de uma classe possui todos os atributos definidos pela classe

Método (ou Operação) l Função ou transformação que pode ser aplicada aos objetos de uma classe l Todo método definido para uma classe pode ser aplicado a qualquer instância daquela classe l Um método tem um nome, uma lista de argumentos, um tipo de retorno e uma implementação

Classe l Descrição de um grupo de objetos com propriedades semelhantes, comportamento, relacionamentos e semântica comuns l Instância: um objeto descrito por uma classe

Exemplo de classe MOTO Marca:String cor:String estado: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 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 l Relacionamento entre uma classe e uma ou mais versões refinadas ou especializadas da classe l Especialização: relacionamento inverso l Superclasse: versão mais abstrata de outra classe, a subclasse l Subclasse: versão mais refinada de outra classe, a superclasse

Herança l Mecanismo baseado em objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização l Uma subclasse herda atributos e métodos da superclasse

Polimorfismo l Assume muitas formas l A propriedade segundo a qual uma operação (método) pode comportar-se diferentemente em classes diferentes l A subclasse redefine a implementação de um método herdado da superclasse l 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 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 a partir das 3 (três) instâncias abaixo. Não é necessário incluir métodos. (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 = kg preço = $50000 volume = L pressão = 1,1 atm diâmetro = 8 m altura = 9m (Bomba de diafragma) nome = P101 fabricante = Simplex peso = 100 kg preço = $5000 pressão de sucção = 1,1 atm presssão de descarga = 3,3 atm taxa de fluxo = 300 I/h material do diafragma = Teflon

Exemplos/Exercícios l Componentes de uma interface gráfica: botões, menus, barras,... l Pessoas: aluno, professor, secretária, reitor l Veículos: bicicleta, veleiro, carro, caminhão, avião, planador, motocicleta, cavalo l Habitações: tenda, caverna, barraco, garagem, celeiro, casa, arranha-céu

Notação: Multiplicidade e Ordenação Classe A 0..* * 2-5,10 0..* {ordenado} ,10 {ordenado} OMT UML

Ligação l Uma conexão física ou conceitual entre objetos l Exemplo: O país Brasil tem como capital a cidade de Brasília. l Exemplo: O funcionário João trabalha na empresa Transamérica S.A. l Exemplo: O artigo OO Solutions foi publicado na conferencia OOPSLA99.

Associação l Relacionamento entre instâncias de duas ou mais classes descrevendo um grupo de ligações com estrutura e semântica comuns. l Exemplo: Um país tem como capital uma cidade. l Exemplo: Um funcionário trabalha numa empresa.

Agregação l Forma especial de associação, entre o todo e suas partes, na qual o todo é composto pelas partes l Também chamada de herança horizontal l 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 l Multiplicidade: Número de instâncias de uma classe que podem se relacionar a uma única instância de um classe associada (ou agregada). l Papel: nome que identifica inequivocamente uma extremidade de uma associação.

Classe Pessoa Diagrama 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 Primo filho Irmão filho mãepai mãe

Classe Pessoa Diagrama de instâncias (Pessoa) Ederiges (Pessoa) Casemiro (Pessoa) Fátima (Pessoa) Marcelo (Pessoa) Edson (Pessoa) Vitória (Pessoa) Emílio Cônjuge Primo filho Irmão filho mãepai mãe

Atributo de Ligação l Um valor de dados presente em cada ligação (nível de instâncias) de uma associação (nível de classes) l Uma propriedade da ligação entre objetos, e não dos objetos ligados, propriamente ditos l 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 Usuário String : 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 Pessoa String : nome String : telefone Empresa String : nome String : endereço Float : salário String : cargo Trabalha-para Float : desempenho chefe trabalhador Gerencia

Associação como uma Classe l Cada ligação de uma associação é uma instância de uma classe l Uma ligação é um objeto, com atributos e métodos l Útil quando ligações podem participar em associações com outros objetos l Útil quando ligações sofrem operações l 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 Usuário Integer : prioridade Integer : privilégios IniciarSessao() : void Autorizado Diretório String : nome Diretório básico

Associação Ternária l Representa ligações entre 3 objetos l Não pode ser dividida em associações binárias sem que haja perda de informações l Associações de grau maior que 3 são raras e devem ser evitadas devido a complexidade de entendimento e implementação l Exemplo: pessoas que são programadoras usam linguagens de programação em projetos

Associação Ternária + Papel Pessoa String : nome String : telefone Veículo String : marca String : cor Concessionária String : nome String : endereço objeto vendedor comprador 1..* 1 1 Compra Data : data

Associação Ternária + Papel Pessoa String : nome String : telefone Veículo String : marca String : cor Concessionária String : nome String : endereço objeto vendedor comprador 1..* 1 1 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 : ? 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 : ? Resposta Veículo String : modelo Integer : ano Proprietário String : nome Possui Pessoa Integer : idade String : endereço EmpresaBanco Empréstimo Integer : conta Float : juros Float : saldo cedente penhor Emprega beneficiário

Ordenação em Associações l Em alguns casos o conjunto de objetos associados a um certo objeto apresenta uma ordem l A palavra "ordenado" deve aparecer junto à multiplicade "muitos" de uma associação para indicar que existe uma ordem entre os objetos ligados l 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) (Ponto) -10 (Ponto) (Ponto) 10 (Polígono) Tem

Resposta Exercício (Pessoa) (Ponto) -10 (Ponto) (Ponto) 10 (Polígono) Tem Ponto X : Real Y : 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) (Ponto) -10 (Ponto) (Ponto) 10 (Polígono) próximo primeiroúltimo próximo

Exercício (Pessoa) (Ponto) -10 (Ponto) (Ponto) 10 (Polígono) próximo primeiroúltimo próximo Resposta Ponto X : real Y : real Polígono primeiro último próximo

Associação Qualificada l Relaciona dois objetos e um qualificador l O qualificador reduz a multiplicidade l 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) l Maior precisão na informação!!

Associação Qualificada Exemplos Diretório Arquivo nome do arquivo Empresa Pessoa escritório organização funcionário ABC WPresidenteRoger Slick ABC WTesoureiroJoe Embezzle ABC WDiretorJoe Boe ABC WDiretorJane Doe ABC WDiretorMoe Brown XYZ CandyPresidenteMoe Brown

Uso de Agregação l Na dúvida, use associação! l Herança não representa o relacionamento parte-todo l Agregados recursivos são freqüentes l Agregação normalmente implica em propagação de operações

Uso de Agregação Exemplo Documento Sentença Parágrafo Pessoa Possui cópia cópia() : void Propagação de operação

Uso de Agregação Exemplo Microcomputador MonitorMouseTeclado ChassisC. P. UR. A. MVentoinha Caixa do Sistema

Uso de Agregação Exercício l 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) (Linha) dimensões = 1 cor = azul posição = (12,9) orientação = 36 graus comprimento = 7 (Arco) dimensões = 1 cor = verde posição = (25,36) orientação = 45 graus diâmetro = 13 (Círculo) dimensões = 2 cor = laranja posição = (10,78) largura = 5 altura = 5 (Quadrado) dimensões = 2 cor = amarelo posição = (54,88) orientação = 22 graus largura = 10 altura = 10 (Elipse) dimensões = 2 cor = marrom posição = (-300,49) orientação = 0 graus largura = 100 altura = 50 (Retângulo) dimensões = 2 cor = azul posição = (102,158) orientação = 30 graus largura = 5 altura = 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ção Exercício Resposta Página Figura cor posição Contem Ponto Figura 0D Linha comprimento Figura 1D orientação Retângulo Figura 2D largura altura orientação Elipse QuadradoCirculo Arco diâmetro angulo

Classes Abstratas e Concretas l 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) l Classe concreta: classe que pode ter instâncias diretas; não pode definir operações abstratas

Cancelamento para extensão l 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 l A nova operação restringe o protocolo (assinatura da operação), podendo reduzir os tipos de argumentos. l A operação herdada fica fechada (restrita) dentro de cada subclasse específica.

Cancelamento para otimização l O novo método tem o mesmo protocolo externo e apresenta o mesmos resultados l A implementação do novo método (algoritmo utilizado) pode ser completamente diferente

Cancelamento por conveniência l Emprego ad hoc de herança para reutilizar classes. l Uma nova classe é tornada subclasse de uma classe existente e substitui os métodos inconvenientes. l Semanticamente errado e conduz a problemas de manutenção; recomenda-se criar uma terceira classe (superclasse das demais)

Herança Múltipla l Uma classe possui mais de uma subclasse e herda características de todos os seus ancestrais l Maior capacidade de especificação de classes l Maior oportunidade de reutilização l Perda em simplicidade conceitual e de implementação l Surgem classes de junção

Modelagem Dinâmica

Modelo Dinâmico l Representa os aspectos de um sistema relativos ao tempo e às modificações de estado l Abrangência: interações seqüência de operações fluxo de controle

Controle de um sistema l 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 l EVENTO: representa um estímulo externo; conduz informação de um objeto para outro. l 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 l Representação gráfica de uma máquina de estados finitos l Representa o padrão de eventos, estados e transições de estados para uma classe l O modelo dinâmico de um sistema é composto por um conjunto de diagramas de estados, uma para cada classe. l Cada máquina de estado funciona de maneira independente; são combinadas através de eventos compartilhados.

Eventos l Um evento é algo que acontece "instantaneamente", em um certo momento. l 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 3 chamador levanta receptor 3 sinal de discar começa 3 chamador disca dígito( 3 ) 3 sinal de discar pára 3 chamador disca dígito ( 3 ) 3 chamador disca dígito ( 0 ) 3 chamador disca dígito ( 8 ) 3 chamador disca dígito ( 0 ) 3 chamador disca dígito ( 8 ) 3 chamador disca dígito ( 1 ) 3 telefone chamado começa a tocar 3 ouve-se o tilintar do telefone chamado 3 pessoa chamada atende 3 telefone chamado pára de tocar 3 som de chamada desaparece do telefone chamador 3 telefones são interligados 3 pessoa chamada desliga 3 telefones são desligados 3 chamador desliga

Exemplo de diagrama de eventos : chamada telefônica ChamadorLinha telefônicaChamado 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 ) telefone tocasom de campainha atende telefone campainha párasom de campainha pára telefones interligados Pessoa chamada desliga conexão desfeita chamador desliga

Relacionamentos entre eventos l Causal: existe uma ordem entre os eventos. Exemplo: O vôo 123 deve partir de Chicago antes de chegar a São Francisco. l 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 l Indicam estrutura e comportamentos comuns a eventos. l Simplificam a construção de diagramas de estados. l Exemplo: classe partidas de aviões, com atributos linha aérea, número de vôo, cidade de origem, cidade destino. l O momento ocorrência de um eventos é um atributo implícito.

Cenário l Seqüência de eventos que ocorrem durante uma determinada execução do sistema l Ilustra uma situação típica do sistema l Auxilia no entendimento do problema e na condução para uma representação geral (modelo dinâmico) l Diagrama de eventos: representação gráfica de um cenário. Exemplo: uma chamada telefônica.

Diagramas de Estados l Relaciona eventos e estados l Um objeto muda de estado dependendo do evento e do estado atual. l Transição: modificação de estado causada por um evento (mesmo quando estado final e inicial coincidem). l Um evento pode ser irrelevante para um objeto em um certo estado. l Exemplo: linha telefônica

Diagramas de Estados Exemplo : Linha telefônica Inativa Sinal de discar Ligando Tocando Interligando Desligando Queda- da-linha Mensagem gravada Sinal de ocupado Sinal de ocu- pado rápido no-gancho dígito( n ) no-gancho Discando Mensagem terminada 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

Diagramas de Estados Exemplo : jogo de xadrez Vez das brancas Vez das pretas brancas jogam pretas jogam Início cheque-mate empate forçado cheque-mate Pretas vencem Brancas vencem Empate Diagrama de estados de uma só passagem para um jogo de xadrez

Diagramas de Estados Exemplo : Veículo Leste / Oeste podem dobrar à esquerda tempo decorrido Diagrama de estados com transições guardadas Leste / Oeste podem ir em frente Norte / Sul podem ir em frente tempo decorrido [ carros nas vias esquerdas N / S ] tempo decorrido [ carros nas vias esquerdas L / O ] tempo decorrido tempo decorrido [ sem carros nas vias esquerdas N / S ] Norte / Sul podem dobrar à esquerda tempo decorrido [ sem carros nas vias esquerdas L / O ]

Tipos de diagramas de estados l Diagrama de laço contínuo: representa um ciclo de vida; sem estado inicial ou final. Exemplo: linha telefônica. l 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). l Exemplo: jogo de xadrez

Condições l Uma condição é uma função booleana de valores, válida dentro de um intervalo de tempo. l 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. l Exemplo: Pessoa com relação ao atributo "estar de luvas".

Controle de Operações l 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. l Definem o comportamento do objeto!

Atividade l Está sempre vinculada a um estado l Consome tempo para se completar l É executada continuamente durante o tempo em que o objeto está num certo estado l Notação:faça: atividade l Exemplo: Um vendedor logo após ter recebido dinheiro para pagamento do item vendido deve calcular o troco. faça: calcular troco

Ação l Está normalmente vinculada a um evento, mas também pode estar vinculada a um estado (ações de entrada, saída e internas) l É executada "instantaneamente" l Notação:evento / ação l 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 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 l Permitem refinamentos sucessivos do modelo dinâmico l Permitem uma descrição estruturada do sistema l Pode-se expandir: um evento e sua correspondente ação uma atividade realizada em um certo estado l Exemplo: Máquina de vender

Diagramas de Estados Nivelados Exemplo : máquina de vender Inativa moedas introduzidas ( quantia ) verificar saldo Recolhendo dinheiro moedas introduzidas ( quantia ) / acrescentar ao saldo faça : entregar item faça : preparar troco faça : testar item e calcular troco [ troco = 0 ] [ troco < 0 ] Selecionar ( item ) [ item vazio ] cancelar / devolver moedas

Diagramas de Estados Nivelados Exemplo : máquina de vender Faça : mover braço para a fileira correta faça : preparar item Faça : mover braço para a coluna correta faça : empurrar item para fora da prateleira 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 l Os estados de um objeto podem ser organizados de forma hierárquica, em super- estados e sub-estados. l 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. l 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. l Exemplos: linha telefônica, transmissão automática de um automóvel

Generalização de Estados Exemplo : transmissão de um carro Primeira SegundaTerceira sobe Neutro Ré apertar R apertar N reduz sobe reduz Para a frente pára apertar F apertar N

Generalização de Eventos l Os eventos que ocorrem em um sistema podem ser organizados de forma hierárquica, em super-eventos e sub-eventos. l Um sub-evento herda atributos do super- evento. l Onde um evento é descrito qualquer sub- evento seu é implicitamente descrito. l A generalização de eventos facilita a abstração e permite concisão na representação de diagramas. l Exemplo: Entrada do usuário.

Generalização de Eventos Exemplo : eventos de teclado evento Entrada do usuário Botão do mouse apertado controlegráfico espaçoalfanuméricopontuação tempo dispositivo Botão do mouse localização caracter do teclado caracter Botão do mouse liberado Hierarquia parcial de eventos para eventos de teclado

Concorrência de Agregação l O estado de um objeto composto (um agregado) é determinado pelos estados dos objetos que o compõem. l Exemplo: O estado de um carro é determinado pelo estado da ignição, da transmissão, do freio, do acelerador, do motor,... l 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. l 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çãoTransmissãoFreioAcelerador Desligada PartidaLigada Girar chave para dar partida [ transmissão em Neutro ] desligar a chave liberar chave Ignição Desligado Ligado apertar acelerador apertar freio liberar aceleradorliberar freio Acelerador Freio Desligado Partido

Concorrência Interna de Objetos l O diagrama de estados de um objeto pode ser particionado de acordo com atributos e ligações em sub-diagramas. l O estado do objeto compreende um estado de cada sub-diagrama. l Um mesmo evento pode causar transições em mais de um sub-diagrama. l Exemplo: Jogo de bridge rubber.

Concorrência Interna de Objetos Não 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 l Disparada quando a atividade vinculada a um estado termina l O "evento" que causa a transição é o término da atividade l 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 l Ações vinculadas ao ato de entrar ou sair de um estado l Não adicionam poder de expressão, mas permitem uma representação mais concisa l Exemplo: Controle de uma porta de garagem

Envio de Eventos l Uma ação pode ser especificada como enviar um certo evento para outro objeto. l Notação:enviar E (atributos) (palavra enviar pode ser omitida) l 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 l Um objeto pode executar várias atividades de forma concorrente (paralela). l As atividades não são necessariamente sincronizadas, mas todas devem terminar para que ocorra transição de estado. l Exemplo: Caixa automática.

Sincronização de Eventos Concorrentes Faça : entregar dinheiro Faça : ejetar cartão Pronta para reinicializar Emitindo cartão recolhido dinheiro recolhido Preparação

Modelagem Funcional

Introdução l O modelo funcional: descreve os cálculos executados em um sistema especifica o que acontece l O modelo dinâmico especifica quando acontece l O modelo objeto o que acontece a quem

Modelo funcional l O modelo funcional é composto por múltiplos DFD que especificam o significado das operações e restrições l 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. Expandir em vetores Expandir em vetores Expandir em vetores Expandir em vetores Buffer da tela Definições de ícones Janela nome de ícone localização tamanho lista de vetores da janela lista de vetores de aplicação operações de pixels

Processos Dividir Inteira dividendo divisor quociente resto Dividir Inteira nome do ícone localização 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 número endereço rua e número código postal cidade estado

Atores l Um ator é um objeto que dirige o DFD produzindo ou consumindo valores. l Os atores são vinculados às entradas e saídas de um DFD. l Os atores, normalmente, se localizam nos limites do DFD tanto como origens ou como destinos de dados l Um ator é desenhado como um retângulo para mostrar que ele é um objeto. l As flechas entre o ator e o diagrama são entradas e saídas do diagrama. l Exemplo: o buffer de tela é um ator que consome operações de pixels.

Depósitos de dados l Um depósito de dados é um objeto passivo, em DFD, que armazena dados para uso futuro. l Um depósito de dados permite que o acesso aos valores seja efeito em uma ordem diferente daquela em que foram gerados. l Depósitos de dados agregados como listas e tabelas, permitem acesso aos dados por ordem de inserção ou por chaves de indexação. l 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 l Um depósito de dados é desenhado como um par de linhas paralelas contendo o nome do depósito l 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. l 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 de preços Tabela periódica temperatura temp. max. temp. min. nome do item preço achar preço achar peso nome do item preçoelemento peso atômico pesos atômicos cliente -- Conta saldo retirada