A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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,

Apresentações semelhantes


Apresentação em tema: "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,"— Transcrição da apresentação:

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

2 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

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

4 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, , …

5 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!!

6 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

7 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;

8 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;

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

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

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

12 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

13 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;

14 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;

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

16 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)

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


Carregar ppt "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,"

Apresentações semelhantes


Anúncios Google