Ajuda em Montar programa com Mais de uma Class

Bom eu tenhu q montar um programa na qual tem q possuir uma class MAIN, MANIPULA, MEMORIA, UNIDADE_CONTROLE,ULA.

no qual a memoria deve guardar todos os dados para ser usado nas outras classes… mas eu guardo normalmente usando SET e GET na memoria… porem… qdu outra class vai pegar da memoria… da NULL ou NullPointerException sera q alguem poderia me auxiliar a como montar esse programa…

seria interessante postar teu codigo para te ajudar, pois é muito relativo tua duvida :idea:

hum… isso tem cara de concorrencia em… seria o caso do produtor / consumidor… classico exemplo utilizados por professores na facu XD

posta o codigo ai pra gente dar uma olhadinha =)

[code]package ias_machine;

/**
*

  • @author Pablo
    */
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;

public class Manipula {

public static void carregar(String arquivo)
throws FileNotFoundException, IOException {
Memoria mem= new Memoria();
File file = new File(arquivo);
int t;

if (! file.exists()) {

}

BufferedReader br = new BufferedReader(new FileReader(arquivo));
StringBuffer bufSaida = new StringBuffer();

String linha;
int cont=0;
while( (linha = br.readLine()) != null ){
try{
t=Integer.parseInt(linha);
if(t<=1000){
mem.setDados(t,cont);
cont++;
}
}
catch(NumberFormatException numberFormatException){
mem.setInstrucao(linha,cont);
cont++;

}
}
mem.setMemoriaPrincipal();
br.close();
}
}

[/code]



package ias_machine;

/**
 *
 * @author Pablo
 */
public class Main {

    public static void main(String[] args) {
        UC uc = new UC();
        uc.principal();
    }
}

[code]package ias_machine;

/**
*

  • @author Pablo
    */
    public class UC {
    ULA ula;
    Memoria mem;
    Manipula man;

void principal(){
int n=0;
String Inst;
try{
man.carregar(“arquivo.txt”);
}
catch(Exception e){
System.out.println(“ERROR!”);
}
Inst=mem.getInstrucao(1);
System.out.println(Inst);
}

void decodificador_instrucao(){
for(int n=0;n<14;n++){
System.out.println(mem.getMemoriaPrincipal(n));
}

}
}
[/code]

[code]package ias_machine;

/**
*

  • @author Pablo
    */
    public class Memoria {
    private String instrucao[] = new String[20];
    private int dados[] = new int[40];
    private String memoria[] = new String[60];
    private int adress;
    private int adress1;

    public int getDados(int n) {
    return dados[n];
    }

    public void setDados(int dados,int n) {
    adress1++;
    this.dados[n] = dados;
    }

    public String getInstrucao(int n) {
    // System.out.println(instrucao[n]);
    return instrucao[n];
    }

    public void setInstrucao(String instrucao, int n) {
    adress++;
    this.instrucao[n] = instrucao;
    }

    public void setMemoriaPrincipal(){
    int cont=0;
    while(cont<adress){
    this.memoria[cont] = this.getInstrucao(cont);
    System.out.println(cont+" Instrucao: “+memoria[cont]);
    cont++;
    }
    cont=0;
    while(cont<adress1){
    this.memoria[adress]=”";
    this.memoria[adress]+= this.getDados(adress);
    System.out.println(adress+" Dados: "+memoria[adress]);
    adress++;
    cont++;
    }

    }

    public String getMemoriaPrincipal(int n){
    return memoria[n];
    }

}
[/code]

Aposto que tá dando erro aqui…

man.carregar("arquivo.txt"); 

Você não instanciou ela, veja:

Memoria mem;

Na verdade o essa parte funciona normal… o erro da eh nessa parte

        Inst=mem.getInstrucao(1);  

quando eu chamo dados da memoria

[quote=spurts]Na verdade o essa parte funciona normal… o erro da eh nessa parte

        Inst=mem.getInstrucao(1);  

quando eu chamo dados da memoria[/quote]

Ah sim, mas é o mesmo motivo, eu viajei em te apontar onde apenas… veja bem esse trecho:

try{ man.carregar("arquivo.txt"); } catch(Exception e){ System.out.println("ERROR!"); } Inst=mem.getInstrucao(1);

Na linha que eu mostrei dá erro, pode ver que no seu console vai sair a mensagem “ERROR!”, mas como você está tratando com um bloco de try/catch o programa não para a sua execução…

Agora nessa outra que você falou, dá erro também, e como ela não está dentro de nenhum bloco de tratamento de erro try/catch, o programa estoura o erro na sua cara… mas é o mesmo motivo, a classe não foi instanciada…

Dá uma revisada nesse fluxo aí… instancia a classe antes, e passa ela por parâmetro pras outras que irãoi usá-la…

Eu dei uma olhada no comando lah… e realmente nao da erro na parte do

  man.carregar("arquivo.txt");    

essa parte nem chega a ativar a exceçao…

o erro realmente soh se da qdu eu vou buscar os dados q eu gravei na memoria… ai da NULLPOINTEREXCEPTION

[quote=spurts]Eu dei uma olhada no comando lah… e realmente nao da erro na parte do

  man.carregar("arquivo.txt");    

essa parte nem chega a ativar a exceçao…

o erro realmente soh se da qdu eu vou buscar os dados q eu gravei na memoria… ai da NULLPOINTEREXCEPTION[/quote]

Então tem alguma coisa bem errada aí… você não pode acessar nenhum método de uma classe que não foi instanciada…

Você está disparando o “main” da classe Main, né?

Dá uma debugada melhor aí nesse trecho, sua variável está nula e em algum ponto você está tentando acessar um método… e isso gera o NullPointerException…