Centro de Ciências Exatas, Ambientais e de Tecnologias
Faculdade de Engenharia de Computação

Paradigmas de Linguagens de Programação
4o. Laboratório - 13, 14, 17 e 19 de Março

Assuntos: Acesso a Membros de Instância
Desenvolva uma classe java denominada BYTE (usar o nome em maiúsculo para que não haja confusão com as classe Byte e o tipo byte, pré-definidos pela linguagem). Esta classe deve armazenar uma seqüência de 8 bits (1 ou 0, naturalmente). Para facilitar a implementação, sugerimos que essa informação seja armazenada, em cada instância da classe, como uma String. Abaixo mostramos algumas funções da classe String do java, que serão úteis.

A classe BYTE deve implementar os seguintes serviços básicos:

void reset(), reseta o BYTE, ou seja, armazena 00000000 na instância.

String mostraByte(), retorna o valor (em formato de byte) que está armazenado na instância.

boolean set(String), recebe um string como parâmetro e seta a instância com esse valor. Caso esse valor não represente um byte (ex: um byte não pode ter valores diferentes de 0 e 1), o byte deve ser resetado e a função retornar false. Caso o valor tenha sido corretamente setado, a função deve retornar true.

void rotate_right(), função que desloca todos os bits do valor armazenado na instância, uma vez para a direita. O último bit deve ser posicionado na 1ª posição. Ex: O byte 00001111 após a execução desse serviço deve passar a representar 10000111.

A classe BYTE deve ser apenas prestadora de serviços portanto não deverá ter função main().

Desenvolva uma classe de nome Principal que instancie alguns objetos da classe BYTE e teste todos os serviços da classe BYTE que você implementou.


ATENÇÂO: Nenhum dos membros da classe BYTE pode ser static, pois são
serviços aplicáveis às instâncias da classe, e não somente a classe. CUIDADO!!!!

DESAFIOS

Para aqueles que conseguirem implementar todos serviços básicos acima, tente implementar os seguintes serviços extras:

void rotate_left(), Idem ao rotate_rigth, porém o deslocamento dos bits deve ser feito p/ a esquerda.

BYTE add(BYTE), O método add deve receber uma segunda instância BYTE como parâmetro, somar com o valor da instância armazenada e retornar o valor para um terceira instância.

Ex:   BYTE A = new BYTE(); //cria a instância A
      A.set (“00001111”);

      BYTE B = new BYTE(); //cria a instância B
      B.set (“00011110”);

      BYTE C = A.add(B);  /*instância de A é somado com B 
                            resultado e armazenado em C */

      System.out.princtln(C.mostraByte());   //mostra o resultado do calculo


Serviços úteis da Classe String

Como já foi visto na teoria, String é uma classe java. Veja abaixo alguns exemplo de utilização de seus métodos:

Ex:   String S = “Teste”; //S é um objeto da classe String

      int x    = S.length(); //retorna o comprimento de S

      String R = S.substring (1,3);// R receberá “est”

      char c   = S.charAt(0);// c = ‘T’ (caracter 0 de S)

BOM TRABALHO !!!