Burlando Encapsulamento

25 Julho 2008

Na linguagem C++ é possível burlar o encapsulamento de dados com o uso de ponteiros, diferentemente de como ocorre em Java já que nessa não é possível a manipulação direta de ponteiros.

Exemplificamos abaixo uma maneira de fazer o descrito acima:

Classe Arquitetura:

#include <iostream>

class Arquitetura

{

private:

int a;

public:

Arquitetura(int v){a = v;}

int* endereco(){return &a;}

int getA(){return a;}

};

Método Principal

#include <iostream.h>

#include “Arquitetura.h”

int main(){

int* p;

Arquitetura o(3);

p = o.endereco();

*p = 10;

cout << o.getA() << endl;

return 0;

}

Na classe Arquitetura é declarada uma variável com visibilidade private de tipo inteiro, variável esta que não é possível fazer o acesso por causa da visibilidade, mas através de aritmética de ponteiros acessaremos a variável e modificaremos seu valor; o método endereço retorna o endereço da variável private ‘a’; o método getA retorna o valor da variável ‘a’; e o construtor da classe seta o valor default da variável ‘a’.

No método principal declaramos o ponteiro de inteiros ‘p’ que receberá o endereço da variável ‘a’ através do método endereço da classe Arquitetura; após o ponteiro ‘p’ receber o endereço da variável ‘a’ modificamos o valor para o qual ‘p’ aponta para 10 e posteriormente imprimimos a variável ‘a’ através do método getA que retornará 10. Dessa forma mostramos que é possível modificar o valor de uma variável de visibilidade private em outra classe.


Hardware do Multiplicador em Ponto Flutuante

16 Julho 2008

1º) Soma os expoentes dos dois números (Utilizando o somador)

2º) Multiplica os significandos , isto é, multiplica as frações dos dois números(Utilizando a ULA)

3º) Normaliza o expoente e a fração, se for preciso, deslocando a fração para direita e incrementando o expoente. (Utilizando Incremento e Deslocando para direita)

4º) Arredonda o significando(expoente e fração) para o número correto de bits.(Utilizando Hardware do Arredondamento)

5º) Se está normalizado vai para fase 7 senão vai para fase 6.

6º) O controle seta os mutiplexadores de forma que o valor que sai do hardware do arredondamento passe novamente pelos hadwares Incremento e Deslocando para direita e posteriormente volta para o hardware do arredondamento. Depois volta para fase 5.

7º) Define o sinal do produto para positivo se os sinais dos operandos originais forem iguais, se forem diferentes, torna o sinal negativo.(Utilizando o xor)

8º) Finaliza a operação colocando os valores no novo registrador.