Técnicas1 Técnicas para organizar operações. Técnicas2 Técnicas para organizar operações: Estruturas que contribuem para aumentar a robustez, a confiabilidade,

Slides:



Advertisements
Apresentações semelhantes
RECORTE DE FIGURAS Algoritmo proposto para Recorte de Segmentos (atribuído a Ivan Sutherland e Dan Cohen) Para o entendimento do algoritmo a ser proposto,
Advertisements

Geração de DSLs Vamos criar agora um projeto exemplo que trabalhe não mais com a linguagem DRL, mas sim com DSL (Domain Specific Languages – Linguagens.
Estruturação de Linguagens (Pascal e C++)
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Técnicas1 Paradigmas e Ferramentas de Engenharia de Software Parte I Técnicas de Programação em C++
Manuseamento de strings
Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.
Internet - 1 Funcionamento da Internet m a Internet não foi projectada para serviços específicos mas como uma infraestrutura genérica e eficiente para.
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais.
Análise e Projeto de Sistemas
Padrão de Projeto Composite
Cartões CRC (Class Responsibility Card)
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Implementar o Paint…. Passo 1: a Classe Pen Define caneta As Pen MyPen.Color = Orange MyPen.LineWidth = MyPen.MoveTo (PosX, PosY) MyPen.DrawTo(PosX,PosY)
Atividade de Projeto Design
Introdução ao paradigma de programação: Orientado a Objetos
Listas com Ponteiros Listas encadeadas Listas circulares.
Introdução ao JavaScript
Sincronização e Comunicação entre Processos
Robson Godoi / Sandra Siebra
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Algoritmos e Programação Thyago Maia Tavares de Farias Aula 25.
Profa. Priscila Facciolli
Informática 2° Bimestre Luiz Antônio.
Tecnologias de Informação e Comunicação
Paradigmas de programação
Análise de Sistemas Análise e Projeto Prof. Jeime Nunes Site:
Microsoft Office Excel
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Introdução a linguagem Python
Introdução a Computação e Cálculo Numérico
LISTAS DUPLAMENTE ENCADEADAS
MÉTODO JACOBI.
Conformidade de tipo e comportamento fechado
Coesão de Classe, Suporte de Estados e de Comportamentos
Conceitos básicos de orientação a objetos
Exercicios de revisão Exercicio tirados de
Sobrecarga e Encapsulamento
Estrutura de Dados Unidade 16 Simulação da função Fatorial utilizando recursão – 16.1 Prof. Dr. Roberto Ferrari Jr.
Listas duplamente encadeadas Estrutura: tDado = integer; { ou real, char, etc.} tPtNo = ^tNo; tNo = record Ant: tPtNo Dado: tDado; Prox: tPtNo; end; var.
Programação Orientada à Objetos
Tópicos de Sistemas de Informação A
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
CCNA 1 – Modelos OSI e TCP/IP
Tipos Abstratos de Dados
Programação Orientada à Objetos
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Análise de Sistemas de Informação
Herança em POO Importante:
Criação de Páginas Web A Internet HTML Básico TIC 9º Ano
Planear um Website Principais etapas.
Algumas notas sobre a linguagem de programação C
GOOGLE DOCS 3º ATIVIDADE FORMULÁRIOS TUTORIAL GOOGLE DOCS.
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Aula 06 – 05/04 Árvores binárias.
Computação Eletrônica
Factory.
Linguagem BD + capacidades OO qVariante da representação OO das encomendas EncomTipo = RECORDOF( e#: int, inclui: SETOF( IQTipo ), cliente: ClienteTipo.
Programação de Computadores - 1
WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI.
Introdução à Programação
Diagramas de Colaboração entre Objetos Motivação.
Jobson Ronan Padrões GoF Jobson Ronan
Daniel Paulo Funções de cadeia de caracteres LEN – Conta os caracteres de uma string SELECT LEN(‘BRASIL’) REPLICATE – Repete.
JAVASCRIPT Programação Web. O que é  E uma linguagem interpretada que e executada na maquina do cliente  Não esta associada ao framework java  Não.
Banco de Dados I Aula 5 - Projeto Conceitual de Banco de Dados
Laço ou loop e repetição
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
TReport.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

Técnicas1 Técnicas para organizar operações

Técnicas2 Técnicas para organizar operações: Estruturas que contribuem para aumentar a robustez, a confiabilidade, a extensibilidade, a reutilização e a manutenção das classes: zClasses mistas zAnéis de operações

Técnicas3 Ex: Envio de Faturas aos Clientes. FaturaItemDeFatura Como enviar as faturas no modo preferido dos clientes? Fax Correio 1..*

Técnicas4 Solução 1 (?): zOperação de Fax ( , correio) na própria fatura, para que ela mesma envie a fatura! z=> coesão de domínio misto, sobrecarregando Fatura com detalhes de protocolo de fax, , …

Técnicas5 Solução 2 (?): Cliente meioComercialDePreferência nome endereço endereçoEletrônico númeroDeFax FaturaEnviável criarFatura faturaPorCorreio (nome, endereço) faturaPor (nome, ) faturaPorFax (nome, númeroDeFax) Fatura ItemDeFatura 1..* Responsabilidade 1 0..* FaturaEnviável preserva a coesão de Fatura! LIMITA A REUTILIZAÇÃO DE FAX!!

Técnicas6 Solução 3 (?): Cliente meioComercialDePreferência nome endereço endereçoEletrônico númeroDeFax FaturaEnviável criarDocumento {abstrato} liberarDocumento anexarTextoADocumento (texto:.) documentoDeCorreio (nome, ender) documentoDe (nome, ) documentoDeFax (nome, noFax) Fatura ItemDeFatura 1..* Responsabilidade 1 0..* criarDocumento enviarParaCliente DocumentoEnviável {abstrato} /documento

Técnicas7 faturaEnviável.criarDocumento public operation criarDocumento begin self.liberarDocumento; obter o cabeçalho da fatura; converter para formato de texto o textoDeCabeçalho; self.anexarTextoADocumento (textoDeCabeçalho); reapeat obter a próxima linha de fatura until não mais linhas de fatura converter para formato de texto o textoDeLinha; self.anexarTextoADocumento (textoDeLinha) endrepeat end criarDocumento;

Técnicas8 faturaEnviável. enviarParaCliente public operation enviarParaCliente begin cliente:Cliente := self.clienteResponsável; case cliente.meioComercialDePreferência CORREIO: self.documentoDeCorreio (cliente.nome, cliente.endereço); self.documentoDe (cliente.nome, cliente.endereçoEletrônico); FAX:self..documentoDeFax (cliente.nome, cliente.númeroDeFax); else …; endcase end enviarParaCliente;

Técnicas9 Anéis de operações zConseguir o máximo de encapsulamento desenhando operações em anéis internos e externos!

Técnicas10 retângulo dentro de moldura topo esquerda direita base Incremento de movimento Limite de moldura

Técnicas11 classe mista: Retângulo centro / topo mover FormatoEmMoldura {abstrato} Moldura ativo topo base esquerda direita 0..1 Envoltório RetânguloEmMoldura moverDentroDeMoldura

Técnicas12 RetânguloEmMoldura class RetanguloEmMoldura; inherits from FormatoEmMoldura, Retângulo;... public operation moverDentroDeMoldura (increm.DeMovimento: Vetor2-D); begin var increm.DeMovimentoPermitido: Vetor2-D := Vetor2-D.Novo; if self.molduraCircundante.éAtiva then

Técnicas13 if increm.DeMovimento.x > 0 then increm.DeMovimentoPermitido.x := mín (increm.DeMovimento.x, self.molduraCircundante.direita - self.direita); else increm.DeMovimentoPermitido.x:= máx ( increm.DeMovimento.x, self.molduraCircundante.esquerda - self.esquerda); endif;

Técnicas14 if increm.DeMovimento.y > 0 then increm.DeMovimentoPermitido.y := mín (increm.DeMovimento.y, self.molduraCircundante. topo - self.topo); else increm.DeMovimentoPermitido.y:= máx ( increm.DeMovimento.y, self.molduraCircundante.base - self.base); endif;

Técnicas15 else incrementoDeMovimento:= incrementoDeMovimento; endif; self.mover (increm.DeMovimentoPermitido); end moverDentroDeMoldura;... endclass RetânguloEmMoldura; Porque ?

Técnicas16 Encapsulamento maior zEvitar duplicação de código nas duas operações zLimita o conhecimento de representações de algumas variáveis para menos operações zReduz a congeneridade entre duas classes (ao evitar a manipulação direta da superclasse)

Técnicas17 Anéis internos e externos de operações: operaçãoA Variáveis privadas