Encapsulamento e Congeneridade
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
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
Encapsulamento e Congeneridade 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
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) Programação estruturada Fan-Out Coesão Acoplamento Nível 1 Encapsulamento e Congeneridade
Encapsulamento e Congeneridade … (nível 2) PARA: DE: NIVEL 0 (linhas código) NIVEL 1 (operação) NIVEL 2 (classe) Programação estruturada Fan-out de mensagem __ Coesão Acoplamento Coesão de classe Acoplamento de classe Encapsulamento e Congeneridade
Encapsulamento e Congeneridade Do latim connascence : ‘nascidos juntos’ - elementos congêneres - Encapsulamento e Congeneridade
Encapsulamento e Congeneridade … em software A congeneridade entre elementos A e B significa: que uma mudança em A implica em mudança em B, ou pelo menos verificação cuidadosa, para preservar a exatidão global que existem mudanças que exigiriam que, tanto A quanto B, fossem mudados juntos para preservar a exatidão geral Encapsulamento e Congeneridade
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
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
Encapsulamento e Congeneridade Observações: Dois elementos de software não precisam se comunicar entre si a fim de serem congêneres (ex anterior!) A congeneridade pode ser direcional: Se A se referir a B > unidirecional Se B também se referir a A > bidirecional Algumas formas não são direcionais. Por ex: se A e B utilizarem o mesmo algorítmo! Encapsulamento e Congeneridade
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
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
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
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
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
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
Congeneridade de execução Semelhante à congeneridade de posição em situação de execução! (incialização de variáveis, …) Encapsulamento e Congeneridade
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
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
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
Encapsulamento e Congeneridade Contrageneridade: Congeneridade de diferença ou negativa: int i; int j; alterar i para j!!! Encapsulamento e Congeneridade