Implementar métodos em um vetor

Boa noite pessoal,

Uma dúvida, tem como implementar métodos dentro de um vetor?

Tipo, em cada possição do vetor ter um método diferente?

Se siim, por favor, um exemplo ^^

Obrigada!!

Nossa! Não sei, mas se existe, desconheço!

Só por curiosidade, pra que você quer isso?

Tenho que fazer um trabalho que exige a execução de uma sequência de métodos, e achei que se pudesse colocá-los em um vetor ia ser mais fácil de executar ^^

QUAL É A ROTINA QUE VOCÊ TEM QUE FAZER?
SE NÃO ESPECIFICAR NÃO TEM COMO AJUDAR…

:?:

Posta ai, bele?

abraços

:wink:

Natz, li o outro tópico que você criou, confesso que fiquei pensando em como fazer isso, mas não faço a menor idéia, isso é coisa para os experts em Java mesmo, tipo o Maquiavelbona ou o ViniGodoy, por exemplo. Tente encontrar um tópico em que estes dois estejam respondendo e peça ajuda a eles, o Maquiavelbona é bárbaro, sabe tudo e mais um pouco. Ao pedir a ajuda, dê o link de seu outro tópico para eles verem.
Mas é o seguinte, a formulação do problema é muito grande, por isso talvez o pessoal não tenha tempo de ler. Eu li, mas não sei como fazer, infelizmente.

Obrigada pessoal,
É, realmente esse trabalho é bem difícil (link = http://inf.unisinos.br/~linds/trabgbjava.pdf), estou fazendo sem ter que por os métodos em um array (fiz uma classe com eles), se alguém quiser tentar me ajudar com esse trabalho, agradeço.

Detalhe que é pra ser trabalho de 1º semestre :frowning:

Obrigado pela referência…

Natz… esse seu trabalho é realmente complicado.
Há formas mais e menos elegantes de se resolver.

A primeira seria implementar as instruções hardcoded, num switch.

Não é muito elegante, mas já faz a mágica acontecer.

As instruções são mapeadas para opcodes numéricos, então um simples algoritmo poderia separa-las de uma String ou de um arquivo e executa-las uma a uma. Você simplesmente leria uma linha do arquivo, faria um split nos espaços, testaria o primeiro argumento para ver qual é o opcode, usaria isso num switch para ir até o comando específico, e usaria um ou dois argumentos seguintes para realizar a operação.

Ou então, seria possível ler a instrução e seus parâmetros do teclado, e executa-las imediatamente, tal como um interpretador faria. O ideal é você ver com o seu professor exatamente como ele quer fazer a entrada de dados.

As instruções são bastante diretas. A memória do computador nada mais é do que um array de 80 bytes, e os endereços os indices. Simplesmente obedeça as instruções, e não tem muito erro não.

Bom, tente fazer o trabalho, e vai postando as dúvidas aqui. Muita gente fera pode se interessar por tópicos como esse. :wink:

Os métodos são pré-definidos? Se forem, acredito que você pode criar objetos que contenham cada método que deve ser executado. Então, quando você precisar executá-los, basta percorrer a lista, através de um iterator por exemplo, e executá-los.

Usando cada idéia temos:

a) Métodos fixos numa classe e um digestor de métodos, que recebe algum parâmetro estranho ( int para se usar num switch ou uma string caso queira fazer mais “olhável” ). Enfileire as intruções num array e percorra-o de maneira linear. Fácil, sujo e eficiente.

b) Separar cada operação num objeto diferente que herde uma mesma característica e ir depois executando um mesmo método de cada objeto. Ex.:

[code]class AbstractOperacao{
public void executar(){

}
}

class OperacaoLOADA extends AbstractOperacao{
public void executar(){

}
}
class OperacaoLOADB extends AbstractOperacao{
public void executar(){

}
}

// Na sua classe que processa as operacoes
AbstractOperacao[] filaDeOperacoes = new AbstractOperacao[80];

//preenche as operacoes

for( int i =0; i< 80; i++){
// itera cada elemento do array, pega o objeto e executa o método execute()
}
[/code]
Essa maneira é mais “bonita”, mais reutilizável e mais complexa mas, em tese, gera o mesmo resultado. Agora depende de você optar por uma ou outra abordagem. Lembrando que a segunda demanda mais conhecimento do que a primeira.

Dê uma olhadinha ( nada de copiar e colar ) num projeto que faz algo parecido com o que você quer. http://hipo.sourceforge.net/

Até!

Certo, Vou postar aqui o que eu já fiz, para que vocês possam entender e me ajudar…

Separei o trabalho em 5 classes:
CPU - é onde estão todas as instruções de máquina e registradores.
Computador - somente possui os métodos loadMem() e start()
Memória - O array[80]
ConsoleLight - Classe para entrada de dados.
Executa - classe main.

Dúvida 1: Lendo o trabalho me deparo com a seguinte dúvida, o que fazer com os registradores A, B, C? Um novo array? Somente simples variáveis? Implemantá-los no mesmo array da memória?

Dúvida 2: A respeito do método start(), não intendi como implementar a função “ir”.

Dúvida 3: A validação do simulador, descrita no final da página 3.

Se quiserem que eu poste o que fiz em cada classe, farei isso.

  1. Você pode criar variáveis A, B e C mesmo, ou então pode fazer uma coisa parecida com esta:
public int[] reg = new int[4];
public static final int A = 0, B = 1, C = 2, PC = 3;
...
reg[A] = 0; // atribuindo o valor 0 ao registrador A
reg[B] = reg[A]; // atribuindo o valor de A ao registrador B
  1. Você tem também de ter um registrador “Contador de Programa” ou “PC”. Esse registrador deve conter o índice da instrução sendo correntemente executada.

Olá pessoal,

Muito obrigada, mesmo! Fiz o que pude do trabalho, confesso que fiz tudo, mas ele não executou corretamente, creio que só falta alguns ajustes que irei finalizar hoje à noite… Após, postarei o resultado aqui, se quiserem.

Abraços a todos!