Construir metodos

entao esse ArrayList(coleçao de objeto),seria uma versao compacta e auto-contida(encapsulamento?),do modo adicionar correto?
Pois nele já esta sendo adicionado todos os nomes de personagens que forem passados pelo meu professor…e e ele poderia passar n nomes,que seriam alocados?
O codigo mais adequado entao seria mesmo o q o Anayami me poassou a principio??
E aqueles “imports”,eu acabei tirando eles por duvidas…

Exatamente, tipo você poderia adicionar várias vezes sem necessitar do list mas precisaria criar um objeto a cada vez, para não sobrepôr o valor que estava contido e tal.

Olha nem olhei o codigo que ele fez. Mas é coisa bem rápida e simples como disse. Caso queira eu te ajudo.

E o import é basicamente isso

import java.util.ArrayList;
//ou para importar tudo que existe em uma biblioteca faça isso
import java.util.*;

aceitoo toda a ajuda que puder me oferecer!!

Ah, agora que eu vi… heh
não pode List? Com ArrayList ficaria bem fácil:[code]package avaliacaoE5Questao02;

import java.util.ArrayList;

public class ListaPersonagens {

//implemente aqui uma atributo para armazenar ORDENADAMENTE os personagens 

private ArrayList<String> minhalista = new ArrayList<String>();

//crie métodos GET e SET para o atributo criado acima.

public void adicionar(String time){  
    minhalista.add(time);
}  
  
public boolean contem(String time){  
    if (minhalista.indexOf(time) != -1)
       return false;
    else
        return true;
}  
  
public void limpa(){  
    minhalista.clear();
}  
  
public void imprimir(){  
    for (int pos = 0; pos < minhalista.size(); pos++)
        System.out.println(minhalista.get(pos));
}

// gets e sets

public ArrayList getMinhalista()
{
    return minhalista;
}

public void setMinhalista(ArrayList minhalista)
{
    this.minhalista = minhalista;
}

}[/code]Tem algum tipo de objeto que ele quer que você use especificamente?
Não parecia haver a restrição contra ArrayList no enunciado…

ArrayList não tem nada a ver com encapsulamento, encapsular é proteger o acesso direto aos atributos de uma instância fora da classe onde eles foram declarados… tipo, você não pode referenciar direto instancia.var = x, teria que chamar o método setVar dessa instância…

no enunciado realmente nao tem,
mas eu passei um e-mail p ele ,e ele discretamente me contou que alguns alunos perderam ppontos por causa de nao terem usado os metodos GET/SET…
ai por isso que eu tive q mudar o plano de trabalho inicial q o Hugo estava me orientando…

Pronto, responderam para ti.
ahahah
\o

Acho que o método imprimir, ficaria mais simples e menos trabalhado assim oh:


//para cada posição do ArrayList listaPersonagens ele 
//vai atribuir o que tem naquela posição na variavel local 
//nome tipo String e vai imprimi-lá.
public void imprimir(){  
	for(String nome : listaPersonagens){
		System.out.println(nome);
	}
}  

caso esteja errado me avise, é que estou no trabalho e não tem como instalar as parafernalhas do java aqui no servidor. :\

professor para Wells:
Nos outros dois programas (ListaPersonagens)deve utilizar TreeSet. O objetivo é didático, não adianta fazer o que não entende. Eu ensinei ArrayList em sala, mas não acho didaticamente interessante utilizar nesta tarefa.
Tem necessariamente que empregar GET e SET, pois faz parte do trabalho empregar estes métodos para garantir encapsulamento. Inclusive retirei ponto de alunos que fizeram chamadas diretas aos atributos sem utilizar GET e SET, para mim isto é um erro grave, pois fere severamente o encapsulamento das classes.

entenderam?

Ué, gets e sets se referem a encapsulamento.
Você pode ter gets e sets para qualquer atributo… inclusive o ArrayList que eu fiz, como você pode ver no código ali.

Não há nada que te impeça de implementar gets e sets para um ArrayList…

Vou copiar…
e vou continuar fazendo perg.até conseguir entender tudo que vcs me passaram.

Muy Gracias!!!

Então, você terá que criar um objeto para cada nome que quiser adicionar. Entende? Fica menos complicado. É m critério do professor né, que assim seja então.

mas se eu criar esse objeto antes,Hugo,
vc nao acha que estranho,pois até onde eu entendi a Testadora já me passa os nomes…
isso nao ficaria errado nao?

Hum, TreeSet é mais interessante porque já ordena…

Não há grandes mudanças, a lógica continua a mesma:[code]package avaliacaoE5Questao02;

import java.util.TreeSet;

public class ListaPersonagens {

//implemente aqui uma atributo para armazenar ORDENADAMENTE os personagens 

private TreeSet<String> minhalista = new TreeSet<String>();

//crie métodos GET e SET para o atributo criado acima.

public void adicionar(String time){  
    minhalista.add(time);
}  
  
public boolean contem(String time){  
    if (minhalista.contains(time))
       return true;
    else
       return false;
}  
  
public void limpa(){  
    minhalista.clear();
}  
  
public void imprimir(){  
    System.out.println(minhalista);
}

// gets e sets

public TreeSet getMinhalista()
{
    return minhalista;
}

public void setMinhalista(TreeSet minhalista)
{
    this.minhalista = minhalista;
}

}[/code]

[edit: notar que as mudanças são só em alguns métodos: o indexOf virou um simples contains…
notar também que no print da lista ele já vem ordenado alfabeticamente, característica do TreeSet]

o que extamente é esse TreeSet,tem algo a ver com arvore??ou mesmo com o metodo SET em especifico?
explicaçao please…

Hum… tipo, uma estrutura de árvore já ordena os elementos na inserção. Portanto, os elementos na árvore já estão sempre ordenados… um problema disso é quando você tem uma estrutura muito grande, daí pode demorar muito para inserir/remover, mas certamente não é o caso…

Isso não tem nada a ver com o método Set, são sentidos bem diferentes.

só pra melhorar um pouco, o imprimir() fica mais bonitinho com um Iterator para percorrer a lista:public void imprimir(){ Iterator listaIterator = minhalista.iterator(); while(listaIterator.hasNext()) System.out.println(listaIterator.next()); }daí adiciona o import pro java.util.Iterator…

ok!!!
e esse Interetor,qual a funçao dele??

O Iterator serve pra percorrer o conteúdo de uma estrutura, no caso, o nosso TreeSet…
primeiro ele retorna todos os elementos da lista - o que acontece em listaIterator = minhalista.iterator();
daí a idéia é percorrer esses elementos com a idéia “enquanto tiver um próximo elemento, mostrar esse elemento”… que é o while(listaIterator.hasNext()), System.out.println(listaIterator.next()); :wink:

entendi…
muito clara a sua explicaçao Ayanami.
Volto daqui a pouco com mais duvidas!
Mas muitissimo obrigado(por enquanto…)ao Hugo e ao Ayanami!!

haha Estou aprendendo também, não sabia como funcionava isso de Iterator, tinha alguma idéia só. :smiley:
haha

Qualquer estamos aqui no aguardo, isso que dá não ter nada para fazer no trabalho. \o

Abraços

é o seguinte,
surgiu um novo problema em outra questao que estou fazendo,
e algumas coisa nao entendi…
entao vou postar aqui p q alguem me oriente…

package avaliacaoE5Questao01;

import java.util.Map;
import java.util.TreeMap;

public abstract class Mapa {
	protected Lic<Integer, Livro> estoque = new TreeMap<Integer, Livro>();
	public abstract void adicionarLivros(Livro reg);
	public abstract void adicionar(Integer chave, Livro liv);
	public abstract boolean excluir(Integer chave);
	public abstract Livro buscar(Integer chave);
	public abstract void imprimir();
}

Bom,eu tive que herdar a classe Mapa para construir a classe EstoqueLivro.não entendi muito bem o porq que o professor passou isso,pois me parece mais facil simplesmente mais facil fazer uma classe EstoqueLivros do nada,ao inves de herdar…entao aceito explicaçoes aqui(se alguem quiser eu posto o enunciado do exercicio)

import java.util.Map;
import java.util.TreeMap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import avaliacaoE5Questao01.Mapa;


public abstract class EstoqueLivros extends Mapa {

	protected Map<Integer, Livro> estoque = new TreeMap<Integer, Livro>();
	
	public abstract void adicionarLivros(Livro reg){
		int chave = estoque.size();
		estoque.put(chave, reg);
	}
	
	public abstract void adicionarLivros(Integer chave, Livro reg){
		estoque.put(chave, reg);
	}
	
	public abstract boolean excluirLivros(Integer chave){
		estoque.remove(chave);
	}
	
	public abstract Livro buscar(Integer chave);
	
	public abstract void imprimir(){
		Set<Integer> listaDeChaves = estoque.keySet();
		
		for(Iterator<Integer> it = listaDeChaves.iterator(); it.hasNext();){
			Integer chave = it.next();
			System.out.println(chave+ " - "+estoque.get(chave));
		}
	}
	
	public Map<Integer, Livro> getEstoque() {
		return estoque;
	}

	public void setEstoque(Map<Integer, Livro> estoque) {
		this.estoque = estoque;
	}
	
	
}


Qual a utilidade desse “chave” no codigo?
E dessa “listaDeChaves”?
Eu copiei essa estrutura que eu implementei aqui,de um outro trabalho feito em sala…e talvez por isso nao esteja sabendo adaptar ela…

Poste o enunciado…

Esses métodos da classe Mapa não têm código, certo?
Então, Mapa é uma interface; esse não é um caso de Extends, e sim de Implements.

Você que vai ter que escrever esses métodos descritos na classe Mapa na sua classe EstoqueLivros.