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!!
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
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
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.
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.
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
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!