Construir metodos

83 respostas
Wells

Galera estou tendo dificuldade em fazer este exercicio que é extremamente basico…
voltei a estudar agora,depois de ter trancado a matricula a muitoooo tempo.
Se alguem puder me ajudar…
abaixo vai o basico do codigo,e as partes que travei…

public class ListaPersonagens {

//implemente aqui uma atributo para armazenar ORDENADAMENTE os personagens

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

public void adicionar(String time){
	//complete o código do método
}

public boolean contem(String time){
	//complete o código do método
}

public void limpa(){

// complete o código do método
}

public void imprimir(){
//		complete o código do método

}

}

83 Respostas

hugown

Hum, interessante, seria bem prático usar um ArrayList, daria para mexer muito fácil com essas ações que você tem. É bem simples.

Wells

ok,é bom saber que o pessoal aqui realmente é rapido(!!),
se vc puder me mostrar como fica o codigo…
ai eu olho analiso,e vou tentando tirar minhas duvidas por aqui…
valeu a velocidade,hehehe

hugown

Olha fazer o código não tem como, é um dever seu como futuro programador forçar a cabeça para enxergar a lógica.
Mas aqui vai uma luz.

ArrayList<String> minhalista = new ArrayList<String>();
//o arraylist tem alguns métodos simples para serem usados, agora exercite um pouco a lógica. 
minhalista.add();
minhalista.contains();
minhalista.remove();
Wells

vou me esforçar por aqui,
de qualquer modo,
Valeu Hugo!!

hugown

Que é isso, estamos aqui para isso, qualquer dúvida só dá um grito. :smiley:

Abrass.

Wells

Helppppppp(brincadeirinha,hehehe)
assim se eu entendi,
esse ArrayList,seria uma lista de Arrays,(obvio…)
e ela já possui as funçoes que eu havia mencionado,joguei ela no Eclipse(estou trabalhando com ele…)
ele apontou um monte de erros,
acho q assim como meu professor vc passou o molde,com a intençao que eu modele a obra…mas estou muito enferrujado…mal lembro o significado de Array.
Se vc puder me explicar mais alguma coisa.

hugown

Então, deixa eu tentar, na minha faculdade deu um problema que pode ser parecido com o seu. Quando defini o arraylist apareceu como erro, mas na realidade é porque a biblioteca do java que estava sendo usada era uma ultrapassada, dai só foi clicar no warning do lado direito e selecionar “change jre 5.0 bla bla bla”, algo do gênero.

Bom, array é simples, é uma variavel que guarda valores. Exemplo:

String[] nomes = new String[100];
//você terá posições que começam do 0 (ZERO não se esqueça disso!) e que vão até o 99, aí você usa do jeito que precisar.

nomes[0] = "Hugo";
...
nomes[99] = "Wells";

//O array list é da mesma forma, só que não tem a referência da posição assim tão na cara.

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

minhalista.add("Hugo"); //na posição zero terá a String hugo
minhalista.add(99, "Hugo"); //posso estar enganado na ordem mas assim é que coloca tal String em tal posição.

minhalista.contains("Hugo"); //vai retornar verdadeiro se tiver e falso caso contrário

minhalista.remove(0); //remove a String que tem na posição 0

//Simples? :D
Wells

ok,
vc demostrou um exemplo e eu voltei a me lembrar de algumas coisinhas…
tipo,sempre se começa a contagem do 0…e nunca chega ao ultimo numero(n-1),ok
essa parte foi muito boa.
ai abriu-me um a duvida,tipo eu qro q o usuario digite os nomes,entao eu criando a ArrayList,o usuario vai poder entrar com os dados,ou eu ainda preciso implementar isso,se sim como…
qualquer coisa num precisa nem fazer…é so ir me dando uns toques…está facilitando pakas…to lembrando de algumas coisas…

Wells

acho q tenhu q fazer uma referencia determinado ponto d amemoria do meu programa aonde o nome esta guardado nao é isso??
se for eu nao lembro como faz…affz

hugown

Então, no java a muitas classes para entrada de dados. Uma delas é o Scanner. Da qual ele vai pegar o que o usuário digitar no teclado. Saca?

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
//Pegará tudo o que o usuário digitar pelo teclado. Terá qe ter atributos para receber o tal valor do teclado. Como é String então será uma variável do tipo String.

String nome = scanner.next(); //a vários tipos de "next" nesta classe como por exemplo. nextInt() para um inteiro, nextDouble e assim vai.

//Ai agora você passa a variavel "nome" que contém um String que foi digitada pelo usuário como parâmetro para a sua classe que vai adicioar o nome e assim para as demais classes. Mas antes precisará definir um objeto, como você terá duas classes independentes. Por exemplo.

ListaPersonagens listaPer = new ListaPersonagens();
listaPer.adicionar(nome);

//E assim vai. haha

Bom to saindo do trampo agora e depois volto a ver o tópico.

Abrass e boa sorte

Wells

Ai Hugo,toda a sua ajuda está facilitando.
Mas falei com meu professor,e ele falou que tem que ser com o metodo GET e SET…e que esse metodo seria muito mais facil q o ArrayList…affz,
eu já tnehu a classe testadora pronta(ela que vai fazer o programinha funcionar!),
e essa testadora é quem me passa os nomes de personagens…
ela tmb testa p ver se os nomes que ela procura(ela ja passa dois como referencia…)

se vc conseguir alguma orientaçao,alem de tudo o q ja fez por mim…
Valeus!!

Giulliano

vamos lá…

Um ArrayList é uma coleção de objetos. E não uma lista de arrays…

Se vc precisar criar um métod que adicione valores num AraayList use:

public class teste{
List minhaLista = new ArrayList();

public List getMinhaLista(){
return minhaLista;
}

public void setminhaLista(List minhaLista){
this.minhaLista = minhaLista;
}

public Boolean adicionaNomes(String nome){
minhaLista.add(nome);
return true;
}

public Boolean removeNomes(String nome){
minhaLista.remove(nome);
return true;
}
}

[’]s

hugown

Bom, o champz ai resolveu sua dúvida. Ou melhor fez o trabalho para ti. Pois é esse o papel de um fórum, você cria um tópico com trabalhos e os “mestres” do java respondem o que você quer do jeito que você quer, ou seja, fazendo seu trabalho. :smiley:

Espero que tire bom proveito.

Abraços.

Wells

Mas ai,
minha intençao nao era ter o trabalho feito por alguem…
e sim conseguir aprender no processo…
ainda estou aqui procurando entender cada minucia,para ter o minimo de duvidas possiveis.
Mas agradeço aos dois(Hugo e Giulliano)pela boa vontade e ajuda…e é possivel que eu ainda tire mais algumas duvids sobre a logica desse problema para q assim eu possa resolver os outros.!hehehe

Wells

e acaba que eu nao posso usar o ArrayList no meu problema,
o professor já proibiu…
o negocio é usar o GET/SET…ai já viu né?

Wells

mas acaba que nao serve p resolver o meu problema,
pois eu tnehu q usar o SET/GET nele,
ai eu tenhu q matar a logica…p poder resolver isso…
o ArrayList,esta fora da ideia…

hugown

Certo, não pode usar ArrayList? Então bora pro get e set. Use encapsulamento no método que terá get e set para deixar seus atributos sólidos. :smiley:

Ao invés de usar um arraylist para guardar os objetos tipo String use variaveis globais. E passe por parametro o nome da pessoa.

Wells

Ixii,
falou grego…rsrs
vms por partes…

hugown

Então, com get e set seria assim um exemplo.

public class Main{
  public static void main(String args[]){
    PegaNomes teste = new PegaNomes();
     teste.setNome("Hugo");
    System.out.print(teste.getNome());
  }
}

public class PegaNomes(){
  private String nome; //variavel privada ou seja começando com encapsulamento

  public void setNome(String nome){
    this.nome = nome;//this.nome faz referência a variavel global e o nome ap
  }
 
  public String getNome(){
    return this.nome;//retornando o nome que recebeu o parametro
  }
}

Um exemplo.

Wells

Bom, eu nao sei se vai ajudar mas eu ja tenho a classe testadora pronta(o professor ja confirmou q é isso mesmo,e me passou os dados para que eu confirme que o programa funciona…)

package avaliacaoE5Questao02;

import avaliacaoE5Questao02.ListaPersonagens;

public class Testadora {

public static void main(String[] args) {

ListaPersonagens lista = new ListaPersonagens();

lista.adicionar(Patolino);

lista.adicionar(Pernalonga);

lista.adicionar(Pica-pau);

lista.adicionar(Dick Vigarista);

lista.adicionar(Muttley);

lista.adicionar(Penelope Charmosa);

lista.adicionar(Scooby Doo);

lista.adicionar(Fred Flinstone);

lista.adicionar(Barney);
if(lista.contem("Barney")){
		System.out.println("A lista contém o personagem Barney");
	}
	else{
		System.out.println("A lista NÃO contém o personagem Barney");
	}
	
	if(lista.contem("Patolino")){
		System.out.println("A lista contém o personagem Patolino");
	}
	else{
		System.out.println("A lista NÃO contém o personagem Patolino");
	}
	
	System.out.println("\n******************************\n");
	
	lista.imprimir();
	
}

}

já fiz algumas tentativas p implementar a minha logica na classe ListaPersonagens,mas nao funciona…
por favor,me expliquem com calma,para q eu possa ir chegando a conclusao devagr,e talvez até por conta…
(Hugo,estou pesquisando as ideias q vc me passou,p entende-las…e tentar implemntar!!)

Wells

aqui vai o que eu já fiz até o momento…e a muito custo…

package avaliacaoE5Questao02;

import java.util.List;

import java.util.SortedSet;

import java.util.TreeSet;
public class ListaPersonagens {

public String NomePersonagem;

public String getNomePersonagem(){

return NomePersonagem;

}

public void setNomePersonagem(String NomePersonagem){

this.NomePersonagem = NomePersonagem;

}
//implemente aqui uma atributo para armazenar ORDENADAMENTE os personagens

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

public void adicionar(String time){
	ListaPersonagens.add("Patolino");
	ListaPersonagens.add("Pernalonga");
	ListaPersonagens.add("Pica-Pau");
	ListaPersonagens.add("Dick Vigarista");
	ListaPersonagens.add("Muttley");
	ListaPersonagens.add("Penelope Charmosa");
	ListaPersonagens.add("Scooby Doo");
	ListaPersonagens.add("Fred Flinstone");
	ListaPersonagens.add("Barney");
	//complete o código do método
	//acho q esta errado,pois a propria Testadora,ja me passa os nomes...
}
	private static void add(String string) {
	// TODO Auto-generated method stub
	
}
	public boolean contem(String time) {
		//essa tmb está dificil...
	}

public void limpa(){

// complete o código do método
}

public void imprimir(){

// complete o código do método
}

}

Wells

pow.
ninguem mais ajuda??

Ayanami

Hm, só dei uma lida rápida… vou só algumas considerações pelo que eu entendi:

Pelo import ali, me parece que você deve trabalhar com um objeto List…
A lógica no método adicionar está errada… me parece que ele deve adicionar à lista um personagem recebido por parâmetro (o “(String time)”), mas você está simplesmente adicionando tudo a cada execução do método, ignorando o parâmetro. E também… o que esse método add da classe faz?
O correto seria só uma linha List.add(time);

A respeito do contem”… a lógica é verificar se um nome qualquer (o (String time)) existe na lista e retornar true ou falsea idéia é só if (Existe) { return true; } else { return false; }

Trabalhando com List, pra fazer o papel desse Existe você pode usar o método indexOf(); <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:">
Wells

Blz. Anayami…
vou seguir as suas sugestoes e tentar!!!

Valeus,qualquer coisa eu volto a postar!!

Ayanami

De nada…

da próxima vez, ponha os códigos-fonte entre tags , fica mais bonitinho… e bem mais legível.

Wells

Anayami,assim eu elaborei o que vc sugeriu...veja se é isso mesmo.
e esse "List",que vc citou nao seria o "lista" que consta na minha classe testadora??
e os outros metodos como posso implemetar??
ai vai como esta agora(gracias pelos "codes"...rs)
esse ai é a minha classe Lista Personagem:

package avaliacaoE5Questao02;


public class ListaPersonagens {
	private String nome;
	public boolean contem;
	private Object lista;
	
	public String getNome() {
		return this.nome;
	}
	
	public void setNome( String nome) {
		this.nome = nome;
	}


	//implemente aqui uma atributo para armazenar ORDENADAMENTE os personagens

	//crie métodos GET e SET para o atributo criado acima.
	
	public void adicionar(String time){
		List.add (time);
		//complete o código do método
	}
		
		public boolean contem(String time) {
		if(List){
			return true;
		}
		else {
			return false;
		}
		
		}
		
		
	
	public void limpa(){
//		complete o código do método
	}
	
	public void imprimir(){
//		complete o código do método
	}
	
}
e essa é a classe que vai testar se o programa funciona:
package avaliacaoE5Questao02;

import avaliacaoE5Questao02.ListaPersonagens;

public class Testadora {
	public static void main(String[] args) {
		ListaPersonagens lista = new ListaPersonagens();
		lista.adicionar("Patolino");
		lista.adicionar("Pernalonga");
		lista.adicionar("Pica-pau");
		lista.adicionar("Dick Vigarista");
		lista.adicionar("Muttley");
		lista.adicionar("Penelope Charmosa");
		lista.adicionar("Scooby Doo");
		lista.adicionar("Fred Flinstone");
		lista.adicionar("Barney");
		
		if(lista.contem("Barney")){
			System.out.println("A lista contém o personagem Barney");
		}
		else{
			System.out.println("A lista NÃO contém o personagem Barney");
		}
		
		if(lista.contem("Patolino")){
			System.out.println("A lista contém o personagem Patolino");
		}
		else{
			System.out.println("A lista NÃO contém o personagem Patolino");
		}
		
		System.out.println("\n******************************\n");
		
		lista.imprimir();
		
	}
}
Ayanami

Opa, vamos com calma…
o “List” que eu falei é uma classe do pacote java.util… o “lista” que consta na classe Testadora é uma instância da sua classe ListaPersonagens (que foi criada em ListaPersonagens lista = new ListaPersonagens():wink:

Todas as vezes que eu falei de “List” nos codes, eu quis me referir ao objeto List que você deveria criar…
Não sei se foi isso que você tentou fazer com “private Object lista”, mas aí você tá definindo um Object… faz um List…
daí onde você botou “List” mude pra “lista”…

a implementação do método “contem” não é assim… esse código compila?
a idéia é que você verifique se o elemento “time” existe ou não na lista…
tendo o “lista” pronto, o que eu quis dizer é que você poderia fazer essa conferência pelo método lista.indexOf(time), que retorna um int - se “time” não existe, ele retorna -1…

o limpa() e o imprimir() também podem ser facilmente implementados a partir de métodos da List…
vou deixar pra você pesquisar um pouco :wink:

Wells

ok,
e o que exatamente seria esse elemento" time"??

Wells

e esse metodo lista.indexOf(time)
se eu to ralando com o GET/SET…o que nao dizer desse ai q vc esta falando…rs

Wells

ahhh naum
ja to quase desistindo…
tenho q entregar isso amanha,e nao consigo…
será que alguem pode montar toda a logica programaçao disso p mim.
Ai eu vou tirando as duvidas q me aparecerem(e olha que nao serao poucas…)

hugown

Wells, o que te aflinge? Ainda não conseguiu? :\

Wells

consegui nao grande Hugo,
assim eu vou indo ai eu travo…
peço uma sugestao e me dão uma que parece ser excelente…ai vou começo a trabalhar ela,
ai quando vou ver que nao funciona,ai volto…e as vezes a pessoa q estava me dando a ajuda nao está mais disponivel…
nuss,já to me desesperando…tenhu q entregar isso hj…
ai,ai…

hugown

Então vou tentar te ajudar, posso até fazer para ti e você tem que prometer estudar o código. :slight_smile:

Me passe as especificações que necessita ter no seu programa.

Abraços.

Wells

Bom, vms tentar...
especificaçao:Questão 02 (3 pontos)

Monte um programa para armazenar uma lista ordenada de Strings representando personagens de desenho animado, conforme os seguintes passos:

1) Crie no eclipse um pacote denominado avaliacao1E5Questao02 (sem ?ç? e sem ?~? e sem espaços em branco.);
2) Copie do moodle as classes ListaPersonagens.java e Testadora.Java;
3) Complete as implementações dos métodos da classe ListaPersonagens.java
4) Utilize a Testadora.java para verificar se sua classe está funcionando adequadamente.

Obs.: A classe Testadora.java está funcionando adequadamente. Não é necessário modificá-la.

ai vai o codigo padrao da classe ListaPersonagem:
package avaliacaoE5Questao02;

public class ListaPersonagens {
	
	//implemente aqui uma atributo para armazenar ORDENADAMENTE os personagens

	//crie métodos GET e SET para o atributo criado acima.
	
	public void adicionar(String time){
		//complete o código do método
	}
	
	public boolean contem(String time){
		//complete o código do método
	}
	
	public void limpa(){
//		complete o código do método
	}
	
	public void imprimir(){
//		complete o código do método
	}
}

[/code/]

e ai vai a classe Testadora:
[code]
package avaliacaoE5Questao02;

public class Testadora {
	public static void main(String[] args) {
		ListaPersonagens lista = new ListaPersonagens();
		lista.adicionar("Patolino");
		lista.adicionar("Pernalonga");
		lista.adicionar("Pica-pau");
		lista.adicionar("Dick Vigarista");
		lista.adicionar("Muttley");
		lista.adicionar("Penelope Charmosa");
		lista.adicionar("Scooby Doo");
		lista.adicionar("Fred Flinstone");
		lista.adicionar("Barney");
		
		if(lista.contem("Barney")){
			System.out.println("A lista contém o personagem Barney");
		}
		else{
			System.out.println("A lista NÃO contém o personagem Barney");
		}
		
		if(lista.contem("Patolino")){
			System.out.println("A lista contém o personagem Patolino");
		}
		else{
			System.out.println("A lista NÃO contém o personagem Patolino");
		}
		
		System.out.println("\n******************************\n");
		
		lista.imprimir();
		
	}
}
Wells

e nao se esqueça,posso precisar de muitaaa paciencia até entender cada “this.”…rs

Ayanami

Elemento “time” é um argumento que você deve passar para o método (String, no caso)… olha a declaração do método e uma chamada que consta na Testadora:

declaração: public void adicionar(String time)
chamada: lista.adicionar(“Pica-pau”);

Note a relação: (String time) (“Pica-pau”)
Nesta chamada, o valor de “time” dentro do método será “Pica-pau”… dentro do método, você poderá referenciar essa variável “time” assim como qualquer outra.

O indexOf é um método da classe List do java.util e retorna um int que é a posição de um elemento no List (começando em 0!)
Se não encontrar, o retorno será -1…

hugown

Então, tem que ter os personagens pré-definidos? Não seria interessante você adiciona-los tipo em tempo de execução? Algo mais interativo. Ou é assim que o professor quer?

Wells

é o que o professor quer,
olha pelo o q eu entendi…me parece que a classe Testadora,passa alguns nomes,e depois verifica esses se esses nomes estao na lista(vejam se estou certo…),
ai eu até consegui fazer o programa rodar,mas como ele vivia falando que nao constava os personagens na lista,conclui q a Logica do programa estava falha…
vou te passar a classe Testadora novamente,para q possa ter uma visao melhor…

package avaliacaoE5Questao02;

public class Testadora {
	public static void main(String[] args) {
		ListaPersonagens lista = new ListaPersonagens();
		lista.adicionar("Patolino");
		lista.adicionar("Pernalonga");
		lista.adicionar("Pica-pau");
		lista.adicionar("Dick Vigarista");
		lista.adicionar("Muttley");
		lista.adicionar("Penelope Charmosa");
		lista.adicionar("Scooby Doo");
		lista.adicionar("Fred Flinstone");
		lista.adicionar("Barney");
		
		if(lista.contem("Barney")){
			System.out.println("A lista contém o personagem Barney");
		}
		else{
			System.out.println("A lista NÃO contém o personagem Barney");
		}
		
		if(lista.contem("Patolino")){
			System.out.println("A lista contém o personagem Patolino");
		}
		else{
			System.out.println("A lista NÃO contém o personagem Patolino");
		}
		
		System.out.println("\n******************************\n");
		
		lista.imprimir();
		
	}
}
hugown

Sim, está certo. É que fica muito limitado, entende? Só vai ver se contém o barney e o patolino, rs, sendo que os outros nomes ficam no vácuo. haha
Mas então, quando você criar o objeto lista do tipo ListaPersonagens e a cada vez que chamar o método adicionar com um paramêtro diferente(digo nome, ex: Patolino, Pernalonga e etc.), você vai substituir o valor que está no atributo da classe, entende? Então por isso que vem a função da List/ArrayList.

Senão, para cada nome que você querer adicionar você terá que criar um objeto diferente entende?

ListaPersonagens lista1 = new ListaPersonagem():
lista1.adicionar("Patolino");
ListaPersonagens lista2 = new ListaPersonagem():
lista2.adicionar("Pernalonga");
//e assim vai
Wells

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…

hugown

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.*;
Wells

aceitoo toda a ajuda que puder me oferecer!!

Ayanami
Ah, agora que eu vi... heh não pode List? Com ArrayList ficaria bem fácil:
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;
    }
}
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...

Wells

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…

hugown

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. :\

Wells

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?

Ayanami

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…

Wells

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

Muy Gracias!!!

hugown

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.

Wells

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?

Ayanami

Hum, TreeSet é mais interessante porque já ordena...

Não há grandes mudanças, a lógica continua a mesma:
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;
    }
}

[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]

Wells

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

Ayanami

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…

Wells

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

Ayanami
O Iterator serve pra percorrer o conteúdo de uma estrutura, no caso, o nosso TreeSetprimeiro 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()); <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:">
Wells

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

hugown

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

Wells

é 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…

Ayanami

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.

Wells

Na o Anayami,é um extends sim…
sente só:
Monte um programa para cadastrar livros de uma livraria. Para esta tarefa utilize as classes disponíveis no moodle para gerar o sistema conforme os passos abaixo:

  1. Crie no eclipse um pacote denominado avaliacao1E5Questao01 (sem ?ç? e sem ?~? e sem espaços em branco.);

  2. Crie uma classe denominada Livro.java com os seguintes atributos (não esqueça dos métodos GET, SET e construtor com parâmetros:

    private String titulo;
    
    private String assunto;
    
    private String autor;
    
    private String paginas;
    
    private String tipo;
    
  3. Copie do moodle as classes Mapa.java e TelaLivraria.Java (arquivo Questao01.zip)

  4. Crie uma classe EstoqueLivros.java que seja uma herança de Mapa.

  5. Implemente os métodos herdados na classe EstoqueLivros.Java.

  6. Utilize a classe TelaLivraria.java como sua interface.

Obs.: A classe TelaLivraria.java está totalmente pronta, não é necessário fazer qualquer modificação. Esta tarefa consiste em trabalhar com as classes Livro.java e EstoqueLivros.java.

as classes que eu estou mandando já estao trabalhadas por mim…(tentativa e erro…rs),
class TeleLivraria:

package avaliacaoE5Questao01;

import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.awt.Font;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JList;


public class TelaLivraria extends JFrame {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JLabel lbTitulo = null;

	private JLabel lbTituloLivro = null;

	private JLabel lbAssunto = null;

	private JLabel lbAutor = null;

	private JLabel lbPaginas = null;

	private JLabel lbTipo = null;

	private JTextField txTituloLivro = null;

	private JComboBox txComboAssunto = null;

	private JTextField txAutor = null;

	private JTextField txPaginas = null;

	private JComboBox txComboTipo = null;

	private JButton btIncluir = null;

	private JButton btExcluir = null;

	private JButton btImprimir = null;
	
	private EstoqueLivros acervo = new EstoqueLivros();  //  @jve:decl-index=0:

	private JButton btLimpar = null;

	private JList jlLivros = null;
	
	private int keyFilme;
	
	public int getKeyFilme() {
		return keyFilme;
	}

	public void setKeyFilme(int keyFilme) {
		this.keyFilme = keyFilme;
	}

	public EstoqueLivros getAcervo() {
		return acervo;
	}

	public void setAcervo(EstoqueLivros acervo) {
		this.acervo = acervo;
	}

	/**
	 * This method initializes txNomeFilme	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxTituloLivro() {
		if (txTituloLivro == null) {
			txTituloLivro = new JTextField();
			txTituloLivro.setBounds(new Rectangle(115, 60, 431, 26));
		}
		return txTituloLivro;
	}

	/**
	 * This method initializes txComboGenero	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getTxComboAssunto() {
		if (txComboAssunto == null) {
			txComboAssunto = new JComboBox();
			txComboAssunto.setBounds(new Rectangle(115, 95, 186, 26));
			txComboAssunto.addItem("Artes");
			txComboAssunto.addItem("Ciências");
			txComboAssunto.addItem("Ciência da Computação");
			txComboAssunto.addItem("Direito");
			txComboAssunto.addItem("Estatística");
			txComboAssunto.addItem("Ficção");
			txComboAssunto.addItem("Filosofia");
			txComboAssunto.addItem("Geografia");
			txComboAssunto.addItem("História");
			txComboAssunto.addItem("Línguas");
			txComboAssunto.addItem("Literatura Infantil");
			txComboAssunto.addItem("Lógica");
			txComboAssunto.addItem("Matemática");
			txComboAssunto.addItem("Religião");
		}
		return txComboAssunto;
	}

	/**
	 * This method initializes txAtorPrincipal	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxAutor() {
		if (txAutor == null) {
			txAutor = new JTextField();
			txAutor.setBounds(new Rectangle(115, 130, 431, 26));
		}
		return txAutor;
	}

	/**
	 * This method initializes txDuracao	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxPaginas() {
		if (txPaginas == null) {
			txPaginas = new JTextField();
			txPaginas.setBounds(new Rectangle(115, 165, 96, 26));
		}
		return txPaginas;
	}

	/**
	 * This method initializes txComboMidia	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getTxComboTipo() {
		if (txComboTipo == null) {
			txComboTipo = new JComboBox();
			txComboTipo.setBounds(new Rectangle(115, 200, 116, 26));
			txComboTipo.addItem("DIDÁTICO");
			txComboTipo.addItem("LITERATURA");
			txComboTipo.addItem("TÉCNICO");
		}
		return txComboTipo;
	}

	/**
	 * This method initializes btIncluir	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtIncluir() {
		if (btIncluir == null) {
			btIncluir = new JButton();
			btIncluir.setBounds(new Rectangle(40, 240, 106, 31));
			btIncluir.setText("Incluir");
			btIncluir.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					//System.out.println("mouseClicked()"); // TODO Auto-generated Event stub mouseClicked()
					Livro liv = new Livro( getTxTituloLivro().getText(),
										   getTxComboAssunto().getSelectedItem().toString(),
										   getTxAutor().getText(),
										   getTxPaginas().getText(),
										   getTxComboTipo().getSelectedItem().toString()
										   );
					
					getAcervo().adicionar(liv);
					
					montaJListaLivro(jlLivros);
					limparCampos();
					JOptionPane.showMessageDialog(null, "Filme incluído!");
				}
			});
		}
		return btIncluir;
	}

	/**
	 * This method initializes btExcluir	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtExcluir() {
		if (btExcluir == null) {
			btExcluir = new JButton();
			btExcluir.setBounds(new Rectangle(150, 240, 111, 31));
			btExcluir.setText("Excluir");
			btExcluir.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					getAcervo().excluir(getKeyFilme());
					montaJListaLivro(jlLivros);
					limparCampos();
					JOptionPane.showMessageDialog(null, "Registro excluído com sucesso !!");
				}
			});
		}
		return btExcluir;
	}

	/**
	 * This method initializes btImprimir	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtImprimir() {
		if (btImprimir == null) {
			btImprimir = new JButton();
			btImprimir.setBounds(new Rectangle(385, 240, 116, 31));
			btImprimir.setText("Imprimir");
			btImprimir.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					//System.out.println("mouseClicked()"); // TODO Auto-generated Event stub mouseClicked()
					getAcervo().imprimir();
					JOptionPane.showMessageDialog(null, "Relatório impresso no console !");
				}
			});
		}
		return btImprimir;
	}

	/**
	 * This method initializes btLimpar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtLimpar() {
		if (btLimpar == null) {
			btLimpar = new JButton();
			btLimpar.setBounds(new Rectangle(265, 240, 116, 31));
			btLimpar.setText("Limpar");
			btLimpar.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {
					limparCampos();
				}
			});
		}
		return btLimpar;
	}

	
	public JList montaJListaLivro(JList jlFilmes){
		Set<String> filmes = new TreeSet<String>();
		Set<Integer> listaDeChaves = getAcervo().estoque.keySet();
		for (Iterator<Integer> it = listaDeChaves.iterator(); it.hasNext();) {
			Integer chave = it.next();
			Livro liv = getAcervo().estoque.get(chave);
			filmes.add(chave + " - " + 
					   liv.getTitulo() + " - " + 
					   liv.getAssunto() + " - " +
					   liv.getAutor() + " - " +
					   liv.getPaginas() + " - " +
					   liv.getTipo()
					   );
		}
		jlFilmes.setListData(filmes.toArray());
		
		return jlFilmes;
	}
	
	
	public void buscaLivro(int chave){
		Livro liv = getAcervo().estoque.get(chave);
		txTituloLivro.setText(liv.getTitulo());
		txComboAssunto.setSelectedItem(liv.getAssunto());
		txAutor.setText(liv.getAutor());
		txPaginas.setText(liv.getPaginas());
		txComboTipo.setSelectedItem(liv.getTipo());
	}
	
	public void limparCampos(){
		getTxAutor().setText("");
		getTxComboAssunto().setSelectedItem("Artes");
		getTxPaginas().setText("");
		getTxTituloLivro().setText("");
		getTxComboTipo().setSelectedItem("DIDÁTICO");
	}
	
	
	/**
	 * This method initializes jlFilmes	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JList getJlLivros() {
		if (jlLivros == null) {
			jlLivros = new JList();
			jlLivros.setBounds(new Rectangle(5, 280, 541, 131));
			jlLivros
					.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
						public void valueChanged(javax.swing.event.ListSelectionEvent e) {
							try {
								String[] filSelecArray = jlLivros.getSelectedValue().toString().split(" - ");
								setKeyFilme(Integer.parseInt(filSelecArray[0])); //recuperando a primeira parte da string (chave do filme)
								
								buscaLivro(getKeyFilme());
							}
							catch (Exception e1){
								
							}
						}
					});
			
			montaJListaLivro(jlLivros);
		}
		return jlLivros;
	}

	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				TelaLivraria thisClass = new TelaLivraria();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public TelaLivraria() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(570, 458);
		this.setContentPane(getJContentPane());
		this.setTitle("Trabalho de AVALIAÇÃO da turma E5 - FACNET ANHANGÜERA - 2º semestre de 2008");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lbTipo = new JLabel();
			lbTipo.setBounds(new Rectangle(10, 200, 101, 26));
			lbTipo.setText("Tipo:");
			lbPaginas = new JLabel();
			lbPaginas.setBounds(new Rectangle(10, 165, 101, 26));
			lbPaginas.setText("Páginas");
			lbAutor = new JLabel();
			lbAutor.setBounds(new Rectangle(10, 130, 101, 26));
			lbAutor.setText("Autor:");
			lbAssunto = new JLabel();
			lbAssunto.setBounds(new Rectangle(10, 95, 101, 26));
			lbAssunto.setText("Assunto:");
			lbTituloLivro = new JLabel();
			lbTituloLivro.setBounds(new Rectangle(10, 60, 101, 26));
			lbTituloLivro.setText("Título do Livro:");
			lbTitulo = new JLabel();
			lbTitulo.setBounds(new Rectangle(10, 10, 428, 36));
			lbTitulo.setFont(new Font("Dialog", Font.BOLD, 24));
			lbTitulo.setText("Livraria Estoque do Saber - Ltda");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(lbTitulo, null);
			jContentPane.add(lbTituloLivro, null);
			jContentPane.add(lbAssunto, null);
			jContentPane.add(lbAutor, null);
			jContentPane.add(lbPaginas, null);
			jContentPane.add(lbTipo, null);
			jContentPane.add(getTxTituloLivro(), null);
			jContentPane.add(getTxComboAssunto(), null);
			jContentPane.add(getTxAutor(), null);
			jContentPane.add(getTxPaginas(), null);
			jContentPane.add(getTxComboTipo(), null);
			jContentPane.add(getBtIncluir(), null);
			jContentPane.add(getBtExcluir(), null);
			jContentPane.add(getBtImprimir(), null);
			jContentPane.add(getBtLimpar(), null);
			jContentPane.add(getJlLivros(), null);
		}
		return jContentPane;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"

classe Livro:

import java.util.Map;


public class Livro {
private String titulo;
private String assunto;
private String autor;
private String paginas;
private String tipo;

public Livro(String titulo, String assunto, String autor, String paginas, String tipo) {
	super();
	this.setTitulo(titulo);
	this.setAssunto(assunto);
	this.setAutor(autor);
	this.setPaginas(paginas);
	this.setTipo(tipo);
}

public String getTitulo() {
	return titulo;
}
public void setTitulo(String titulo) {
	this.titulo = titulo;
}
public String getAssunto() {
	return assunto;
}
public void setAssunto(String assunto) {
	this.assunto = assunto;
}
public String getAutor() {
	return autor;
}
public void setAutor(String autor) {
	this.autor = autor;
}
public String getPaginas() {
	return paginas;
}
public void setPaginas(String paginas) {
	this.paginas = paginas;
}
public String getTipo() {
	return tipo;
}
public void setTipo(String tipo) {
	this.tipo = tipo;
}
}

as outras duas classes já foram postadas.
suponho eu que o meu erro se encontra na classe EstoqueLivros…

Ayanami

Não sei se expliquei mal, mas Implements também é um tipo de herança… na qual todos os métodos herdados pela classe filha devem ser obrigatoriamente implementados…
Na verdade, eu não tenho 100% de segurança sobre a definição correta desses conceitos de Extends/Implements - se alguém mais experiente puder dar uma luz, agradeço muito :slight_smile:

Pelo enunciado e o código da classe Mapa, me parece um caso de Implements.
A respeito da pergunta que você fez no post anterior sobre a utilidade da “chave”, essa chave é um valor numérico associado a cada elemento da lista…
A lista de chaves facilita a manipulação da lista.

Eu vou dar uma saída… tenho que trabalhar nos meus projetos também~
Tou apanhando demais, mas tá indo :smiley:

Wells

Po Valeu pelos esclarecimentos,de qualquer modo.
Vou tentar ver isso,eu tmb num tenho noçao alguma sobre implements,ou como exercitar corretamente um extends.

E bom trabalho ai com seus projetos!!

Wells

alguma ajuda??

Wells

é verdade, a implementaçao é um tipo de Herança.
e parece que ela possibilita mudar a classe herdada,ao inves de somente obter as suas caracteristicas.
Mas apesar do meu enunciado estar falando que é para trabalhar somente com o EstoqueLivros e o Livro…
os meus erros estao aparecendo em Mapa…
alguem sabe me explicar porq??

Ayanami

Oie…
Muito café… :wink:

Se eu errar em algo do que vou dizer a seguir, me corrijam…
vou só dar uns comentários e ponteiros:

Pra mim, parece que o principal objetivo dessa questão é mostrar o funcionamento de heranças.
Quanto a declaração das classes, fica: Livro extends EstoqueLivros que implements Mapa.
A classe Mapa pode e deve ficar como está.
EstoqueLivros implements Mapa, então você deveria implementar todos os métodos descritos em Mapa nessa classe… porém, como EstoqueLivros é abstract, você ainda pode deixar métodos sem implementação. heeh Se não fosse abstract, você obrigatoriamente teria que implementar todos os métodos nessa.
Livro extends EstoqueLivros. Se você deixou métodos sem implementação em EstoqueLivros, agora sim você deve obrigatoriamente implementá-los…

Lembre-se que, como Livro extends EstoqueLivros, você pode usar alegremente na Livro os métodos e atributos que você implementou na EstoqueLivros.

Acho que já passei umas idéias…
Esse eu não vou fazer para você :wink:

Para entender mais, olhe este link… as idéias dos extends/implements mostradas nos exemplos são bem parecidas (para não dizer iguais) às do exercício.

Wells

Mas Ayanami,
a classe Livro nao herda a classe EstoqueLivros nao…
será que vc nao viu errado naum??
Me explique melhor
(e dessa eu nao vou precisar q ninguem faça nao,pode admitir…já estou um pouquinho melhor do q naquele primeiro problema…hehehe)
PS.(cuidado,café vicia…rsrs)

B

Livro não é um EstoqueLivros, portanto Livro não extends de EstoqueLivro.

EstoqueLivro pode ter Livros. É uma relação de agregação, e não herança.

Ayanami

Oops… correto.
meldels, o que eu escrevi? Livro herda as características de EstoqueLivro? sorry, hard nonsense :oops:

Thanks :slight_smile: Delirei legal :stuck_out_tongue:
Corrigindo… sendo uma agregação, você deve ter métodos para gerenciar Livro na sua classe EstoqueLivros (que parece bem a maneira como o professor já apresentou o problema)
Talvez você deveria falar mais com ele, esses exercícios são bem didáticos :wink:

Wells

é,parece que estou melhorando mesmo…rsrs
já estou ate conseguindo enxergar o problema com mais clareza,e diferenciar o q é,do q nao é…rssr
Valeu toda a ajuda.
Alguem pode me dar maiores explicaçoes e mais exemplos de Agregaçao??

Wells

:oops:e como é que funciona a agregaça a nivel de codigo,
tipo como ela fica,como inicia…enfim :oops:

Ayanami

Aprenda também a usar o Google. :wink:

Para esse tipo de pesquisa, tenho certeza que você pode encontrar em português mesmo exemplos melhores e mais detalhados do que algo que eu tentar explicar aqui :wink:

Wells

era exatamente o q eu estav fazendo!!!
hehehe

B
// composição
public class Empresa
{
  // Caso a empresa deixe de existir,
  // teus departamentos também deixarão.
  // Departamento precisa da Empresa para existir.
  List<Departamento> departamentos;
  
}

//agregação
public class Departamento
{
  // Mesmo que o departamento deixe de existir
  // o funcionário ainda continuará a existir.
  // Funcionário não depende de Departamento para existir.
  List<Funcionario> funcionarios;
}

Claro que isso vale para as regras de negócio que fiz. Se os teus funcionários dependessem do departamento para existir, então seria composição.

Wells

Valeu Bruno,
já era desse jeito que eu estava fazendo…so num tinha entendido a diferenciaçao entre composiçao e agregaçao…
na verdade ainda acho eles bem parecidos…
vou estudar mais um pouco por aqui…ai eu vejo como coloca-lo no meu projeto!!

jessica_ferreira

MoçOOO vc já conseguiu fazer esse seu programa ai??
eu to precisando ajuda,me AjudAAAAa…

Wells

:oops: :oops: :oops:

ainda naum,mas em breve,acho que ele vai funcionar.
Pq??
dependendo do problema posso tentar te ajudar…
mas se nao tem muita gente aqui q é super habilitada p responder as suas duvidas!!!

Ayanami

Heh… a respeito dessas relações, dá uma olhada nesse tópico bem esclarecedor no JavaFree.
O tópico fala a respeito de como implementar Associação, Composição e Agregação… deve te esclarecer alguns pontos :wink:

Wells

belezinhAA
valeus Anayami!!

Wells

ei é só comigo,
ou esse link que você postou ai nao vai direto??
Tipo,tenho q copiar e colar ele no browser p ir…mas ta valendo!!

Ayanami

?
Aqui abre normal, em qualquer browser…

Mas de que importa?

Wells

Bom,de importante mesmo nada…rs
era só p ver se vc fez algo de erado,so tava avisando :oops:

Wells

Duvida…
se minha classe EstoqueLivros é um implements da classe Mapa…entao toda a minha implementaçao deve ser feita mesmo em EstoqueLivros correto?
e se a classe a ser modificada e adaptada para o meu problema for realmente a classe EstoqueLivro…entao porq a classe Mapa é que está apresentando erro??Será que eu preciso mexer em algo nela??
Pelo enunciado que me foi passado,acho q nao,penso que o mais importante sao realmente as classes Livro e EstoqueLivro…mas fiquei com a duvida.

Ayanami

Sim, não.

Poste a mensagem de erro.

Criado 8 de dezembro de 2008
Ultima resposta 12 de dez. de 2008
Respostas 83
Participantes 6