Encapsulamento e Congeneridade
1
Encapsulamento eCongeneridade
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!!!
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
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, …
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
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
Encapsulamento e Congeneridade
7
Congeneridade
Do latim connascence : ‘nascidos juntos’
- elementos congêneres -
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
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!
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”
…
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!
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
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!
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!
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
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!
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
Encapsulamento e Congeneridade
18
Congeneridade de execução
Semelhante à congeneridade de posição em situação de execução!
(incialização de variáveis, …)
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”
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
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!
Encapsulamento e Congeneridade
22
Contrageneridade:
Congeneridade de diferença ou negativa:
int i;int j;
alterar i para j!!!
Top Related