Ajuda instanciar objeto de outra classe

3 respostas
F

Ooi gente, estou fazendo uma aplicação, para uma escola, e eu preciso intanciar um objeto de outra classe, mas não estou conseguindo. Alguém pode me ajudar??

A minha classe onde estou instanciando o objeto está assim oh:

import cadastro.persistencia.memoria.PersistenciaMemoriaCurso;

public class Interfaces extends MIDlet implements CommandListener{
	PersistenciaMemoriaCurso persistenciaCurso = new PersistenciaMemoriaCurso();
no Command action está assim:
PersistenciaMemoriaCurso novo = new PersistenciaMemoriaCurso();
					PersistenciaMemoriaCurso.adicionar(StringNovoCurso);

StringNovoCurso é a String que eu estou armazenando o texto que a pessoa digitou que tenho que mandar pra classe PersistenciaMemoriaCurso.
Eu quero instanciar o método adicionar que está na classe aqui em baixo, mas qdo escrevo essa linha da erro na palavra "adicionar".

e a classe PersistenciaMemoriaCurso está assim:

package cadastro.persistencia.memoria;

import cadastro.entidade.Curso;
import cadastro.persistencia.EntidadeInconsistenteException;
import cadastro.persistencia.EntidadeNaoEncontradaException;

public class PersistenciaMemoriaCurso {
	
	private int ARRAY_BUFFER_CURSOS = 10;
	
	private Curso[] cursos;
	
	public PersistenciaMemoriaCurso() {
		this.cursos = new Curso[ARRAY_BUFFER_CURSOS];
	}

	public void adicionar(Curso curso) throws EntidadeInconsistenteException {
		
		if( curso.nome == null ) {
			throw new EntidadeInconsistenteException("O objeto curso nao pode ter todos os atributos nulos");
		}
		
		for( int i = 0; i < ARRAY_BUFFER_CURSOS; i++ ){
			if( cursos[i] == null ){
				cursos[i] = curso;
				return;
			}
		}
		
		this.aumentaCursos(cursos);
		adicionar(curso);
	}
	
	public int buscar(Curso curso) {
		for( int i = 0; i < ARRAY_BUFFER_CURSOS; i++ ){
			Curso aux = cursos[i];
			if( aux == null ){
				return -1;
			} else if( aux.equals(curso) ){
				return i;
			}
		}
		return -1;
	}
	
	public void remover(Curso curso) throws EntidadeNaoEncontradaException {
		int idx = this.buscar(curso);
		if( idx != -1 ){
			if( idx < (ARRAY_BUFFER_CURSOS - 1) && cursos[idx + 1] != null){
				for( int i = idx + 1; i < ARRAY_BUFFER_CURSOS; i++ ){
					if( cursos[i] != null ){
						cursos[i - 1] = cursos[i];
						cursos[i] = null;
					}
				}
			} else {
				cursos[idx] = null;
			}
		} else {
			throw new EntidadeNaoEncontradaException("O curso '" + curso.nome + "' nao existe na base de dados");
		}
	}
	
	public Curso[] getListaCurso() {
		int ult = 0;
		for( int i = 0, l = cursos.length; i < l; i++ ){
			if( cursos[i] == null ){
				ult = i;
				break;
			}
		}
		
		Curso[] ret = new Curso[ult];
		for( int i = 0, l = ret.length; i < l; i++ ){
			ret[i] = cursos[i];
		}
		return ret;
	}
	
	private Curso[] aumentaCursos(Curso[] cursos){
		Curso[] novo = new Curso[cursos.length + ARRAY_BUFFER_CURSOS];
		ARRAY_BUFFER_CURSOS = novo.length;
		for( int i = 0, l = cursos.length; i < l; i++ ){
			novo[i] = cursos[i];
		}
		return novo;
	}

	
}

Por favor me ajudem, faz parte do exercicio eu nao mudar essa classe PersistenciaMemoriaCurso, então me auxiliem na classe de cima, por favor!!

Obrigada

3 Respostas

rafaelSaqueli

Essa é fácil!

Você esta fazendo

PersistenciaMemoriaCurso novo = new PersistenciaMemoriaCurso(); PersistenciaMemoriaCurso.adicionar(StringNovoCurso);

Mas o método adicionar() Não é estático! Você pode fazer de duas formas:

  1. utiliza o método através do objeto criado, e não por meio da classe.

PersistenciaMemoriaCurso novo = new PersistenciaMemoriaCurso(); novo.adicionar(StringNovoCurso); // porque adicionar não é static

OU
2) modifique o método adicionar para static, assim voce pode acesa-lo sem necessidade de um objeto, ou seja, pode acesa-lo atravez do nome da classe.

public static void adicionar(Curso curso) throws EntidadeInconsistenteException 
{
       if( curso.nome == null ) 
       {
          throw new EntidadeInconsistenteException("O objeto curso nao pode ter todos os atributos nulos");
       } 
}
F

ooi, eu fiz a primeira opção que voce disse, pois faz parte do exercício nao alterar as outras classes e ele continuou dando erro na palavra adicionar e deu essas opções:

Create method ‘adicionar(String)’ in type PersistenciaMemoriaCurso
Change type of ‘StringNovoCurso’ to 'Curso’
Change method ‘adicionar(Curso)’ to ‘adicionar(String)’

e aii, qual q eu escolho "/

rafaelSaqueli

é o seguinte:

Na declaracão do método adicionar:

public void adicionar(Curso curso) // Aki, indica que, quando você for utiliza-lo, deve passar um Objeto do tipo curso
 throws EntidadeInconsistenteException {

if( curso.nome == null ) {
throw new EntidadeInconsistenteException("O objeto curso nao pode ter todos os atributos nulos";
}

Como comentei no código, o métod espera um objeto do tipo Curso. Mas vc esta passando um String. Vc deve ter também o cigo da classe Curso ai, instancie um objeto dela e faca:

novo.adicionar(meuCurso);

Criado 24 de outubro de 2009
Ultima resposta 24 de out. de 2009
Respostas 3
Participantes 2