Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional:...

22
Encapsulamento e Congene ridade 1 Encapsulamento e Congeneridade

Transcript of Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional:...

Page 1: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

1

Encapsulamento eCongeneridade

Page 2: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

2

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

Page 3: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

3

Níveis de encapsulamentolinhas primárias

de código

módulo procedural

estrutura classe/objeto

Nível 0

Nível 1Nível 2

Page 4: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

4

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

Page 5: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

5

Critérios de desenho X Níveis de encapsulamento

PARA:DE:

construção de nível 0 (linhas de código)

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

construção de nível 0 (linhas de código)

Programação estruturada

Fan-Out

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

Coesão Acoplamento

Nível 1

Page 6: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

6

… (nível 2)

PARA:DE:

NIVEL 0(linhas código)

NIVEL 1(operação)

NIVEL 2(classe)

NIVEL 0(linhas código)

Programação estruturada

Fan-out demensagem

__

NIVEL 1(operação)

Coesão Acoplamento

__

NIVEL 2(classe)

__ Coesão declasse

Acoplamento de classe

Page 7: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

7

Congeneridade

Do latim connascence : ‘nascidos juntos’

- elementos congêneres -

Page 8: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

8

… 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

Page 9: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

9

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!

Page 10: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

10

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”

Page 11: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

11

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

Page 12: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

12

Lista de congeneridade (não exaustiva):

Congeneridade de nomeCongeneridade de tipo ou classeCongeneridade de convençãoCongeneridade de algoritmoCongeneridade de posiçãoCongeneridade de execuçãoCongeneridade temporalCongeneridade de valorCongeneridade de identidade

Page 13: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

13

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!

Page 14: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

14

Congeneridade de tipo ou classe:

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

Page 15: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

15

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

Page 16: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

16

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!

Page 17: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

17

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

Page 18: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

18

Congeneridade de execução

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

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

Page 19: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

19

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”

Page 20: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

20

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

Page 21: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

21

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!

Page 22: Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional: yInstruções de máquina yLinhas de código de um montador.

Encapsulamento e Congeneridade

22

Contrageneridade:

Congeneridade de diferença ou negativa:

int i;int j;

alterar i para j!!!