Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouGabrielly Guardado Alterado mais de 10 anos atrás
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 E-mail Correio 1..*
4
Técnicas4 Solução 1 (?): zOperação de Fax (e-mail, 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, e-mail, …
5
Técnicas5 Solução 2 (?): Cliente meioComercialDePreferência nome endereço endereçoEletrônico númeroDeFax FaturaEnviável criarFatura faturaPorCorreio (nome, endereço) faturaPorEMail (nome, e-mail) 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) documentoDeEMail (nome, e-mail) 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); E-MAIL:self.documentoDeE-Mail (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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.