Encapsulamento e Congeneridade1. 2 Estrutura de Encapsulamento zEvolução do software convencional:...
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/1.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/2.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/3.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/4.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/5.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/6.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/7.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/8.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/9.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/10.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/11.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/12.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/13.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/14.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/15.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/16.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/17.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/18.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/19.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/20.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/21.jpg)
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.](https://reader030.fdocument.pub/reader030/viewer/2022020716/552fc148497959413d8e19e6/html5/thumbnails/22.jpg)
Encapsulamento e Congeneridade
22
Contrageneridade:
Congeneridade de diferença ou negativa:
int i;int j;
alterar i para j!!!