Encapsulamento e Congeneridade

Document Sample
Encapsulamento e Congeneridade Powered By Docstoc
					Encapsulamento e
 Congeneridade




      Encapsulamento e
       Congeneridade     1
Estrutura de Encapsulamento

Evolução do software convencional:
  Instruções de máquina
  Linhas de código de um montador assembler
  Procedimentos e funções



    calcularRaizQuadrada!!!

                  Encapsulamento e
                   Congeneridade               2
Níveis de encapsulamento
                                estrutura classe/objeto
 linhas primárias
    de código




     Nível 0


módulo procedural




                                        Nível 2
     Nível 1        Encapsulamento e
                     Congeneridade                        3
Níveis mais altos:

 Níveis 3 e 4 >pacotes e componentes!

 Ex 1: classes de áreas de negócios
  (agrupadas horizontalmente): passageiro,
  aeroporto, funcionário, aeronave, …
 Ex 2: implementar um assunto
  (agrupadas verticalmente): passageiro,
  reserva, etapa, assento, …
                    Encapsulamento e
                     Congeneridade           4
Critérios de desenho X
Níveis de encapsulamento
              PARA: construção de           construção de
                     nível 0 (linhas de     nível 1
DE:                  código)                (procedimento)

construção de        Programação            Fan-Out
nível 0 (linhas de   estruturada
código)

construção de        Coesão                 Acoplamento
nível 1
(procedimento)

                         Encapsulamento e
    Nível 1               Congeneridade                      5
… (nível 2)
       PARA: NIVEL 0          NIVEL 1           NIVEL 2
DE:           (linhas código) (operação)        (classe)

NIVEL 0         Programação       Fan-out de         __
(linhas código) estruturada       mensagem

NIVEL 1       Coesão              Acoplamento        __
(operação)

NIVEL 2             __            Coesão de     Acoplamento
(classe)                          classe        de classe

                         Encapsulamento e
                          Congeneridade                    6
Congeneridade



Do latim connascence : ‘nascidos juntos’

  - elementos congêneres -



                  Encapsulamento e
                   Congeneridade           7
… em software

 A congeneridade entre elementos A e B
  significa:
  1. que uma mudança em A implica em
     mudança em B, ou pelo menos verificação
     cuidadosa, para preservar a exatidão global
  2. que existem mudanças que exigiriam que,
     tanto A quanto B, fossem mudados juntos
     para preservar a exatidão geral

                   Encapsulamento e
                    Congeneridade                  8
Variedades de congeneridade
Ex:
      int i;    //linha A

      i := 7;   //linha B


Se a linha A fosse mudada para char i;
      > congeneridade de tipo!
Se a linha A fosse mudada para int j;
      > congeneridade de nome!
                    Encapsulamento e
                     Congeneridade       9
Congeneridade explícita X
implícita:
 Explícita: ex anterior (compilador resolve!)

 Implícita:
     X: JUMP Y+38
     …
     Y: CLEAR R1
     …         // 38 bytes de código existentes
     CLEAR R2 // Esta é a instrução para onde “salta”
     …
                      Encapsulamento e
                       Congeneridade                10
Observações:

1. Dois elementos de software não
   precisam se comunicar entre si a fim de
   serem congêneres (ex anterior!)
2. A congeneridade pode ser direcional:
   Se A se referir a B > unidirecional
   Se B também se referir a A > bidirecional
3. Algumas formas não são direcionais. Por ex:
   se A e B utilizarem o mesmo algorítmo!
                   Encapsulamento e
                    Congeneridade                11
Lista de congeneridade
(não exaustiva):
 Congeneridade   de nome
 Congeneridade   de tipo ou classe
 Congeneridade   de convenção
 Congeneridade   de algoritmo
 Congeneridade   de posição
 Congeneridade   de execução
 Congeneridade   temporal
 Congeneridade   de valor
 Congeneridade   de identidade
                     Encapsulamento e
                      Congeneridade     12
Congeneridade de nome:

Ex anterior: duas ou mais linhas de código
 se referindo à mesma variável

Uma subclasse que herda uma variável da
 superclasse. Se o nome mudar em uma
 deve mudar na outra, para preservar a
 exatidão!

                 Encapsulamento e
                  Congeneridade          13
Congeneridade de tipo ou
classe:

 Exemplo já visto. O tipo ou a classe de
  um objeto deve ser preservado ao longo
  de sua vida!




                  Encapsulamento e
                   Congeneridade            14
Congeneridade de convenção

Ex 1:
 NúmeroDeConta:
    - nos positivos: conta de pessoas
    - nos negativos: contas de empresas
    - zeros: contas de departamentos (!)
“Hominóide” >> direção:
    - 0=norte; 1=leste; 2=sul; 3=oeste
    - N=norte; L=leste; S=sul; O=oeste
    - 0=norte; 90=leste; 180=sul; 270=oeste
                  Encapsulamento e
                   Congeneridade              15
Congeneridade de algoritmo

 Ex: pesquisa em uma tabela de hash

  Todos os algoritmos que criam ou
  atualizam ou consultam a tabela devem
  proceder da mesma forma!




                 Encapsulamento e
                  Congeneridade           16
Congeneridade de posição
Sequencial: as instruções devem aparecer na
 ordem correta

Adjacente: devem estar próximas umas das
 outras

De parâmetros: formais X atuais

Dinâmica: baseada no modelo de execução dos
 objetos
                   Encapsulamento e
                    Congeneridade              17
Congeneridade de execução

Semelhante à congeneridade de posição
 em situação de execução!

  (incialização de variáveis, …)




                   Encapsulamento e
                    Congeneridade        18
Congeneridade temporal

Característica de tempo real:

      “desligar um aparelho de Raio-X deve
  ser executada n milisegundos com relação
  à instrução para ligá-lo”




                 Encapsulamento e
                  Congeneridade          19
Congeneridade de valor

 Ex1: indicadorInferior, indicadorSuperior
  em uma lista

 Ex2: movimentar um canto de um
  retângulo

 Ex3: dados redundantes em um banco de
  dados

                   Encapsulamento e
                    Congeneridade             20
Congeneridade de identidade

 Típica da OO:

     obj1 >> variável aponta para obj3
     obj2 >> variável aponta para obj3

          Então obj3 deve ser único!


                  Encapsulamento e
                   Congeneridade         21
Contrageneridade:

 Congeneridade de diferença ou negativa:

     int i;
     int j;

          alterar i para j!!!


                   Encapsulamento e
                    Congeneridade           22

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:0
posted:4/19/2013
language:Portuguese
pages:22