Array List

3 respostas
F

Boa noite pessoal. Segue abaixo um exemplo para minha dúvida.

public class Disciplina {
	String Nome;
	int Codigo, CargaHoraria;
	
	public Disciplina(String nome, int codigo, int cargaHoraria){
		this.Nome = nome;
		this.Codigo = codigo;
		this.CargaHoraria = cargaHoraria;
	}
	
	public String getNome() {  
        return Nome;  
    }  
	
	public void setNome(String nome) {  
	       this.Nome = nome;  
	}
	
	public int getCodigo() {  
        return Codigo;  
    }  
	
	public void setCodigo(int codigo) {  
	       this.Codigo = codigo;  
	} 
	
	public int getCargaHoraria() {  
        return CargaHoraria;  
    }  
	
	public void setCargaHoraria(int cargaHoraria) {  
	       this.CargaHoraria = cargaHoraria;  
	} 
}


public class Aluno {
	String Nome;
	int Matricula;
	float Cr;
	public List<Object> ListaMaterias = new ArrayList<Object>();
	
	public Aluno(String nome, int matricula){
		this.Nome = nome;
		this.Matricula = matricula;
	}
	
	public String getNome() {  
        return Nome;  
    }  
	
	public void setNome(String nome) {  
	       this.Nome = nome;  
	}
	
	public int getMatricula() {  
        return Matricula;  
    }  
	
	public void setMatricula(int matricula) {  
	       this.Matricula = matricula;  
	}
	
	public float getCr() {  
        return Cr;  
    }  
	
	public void setCr(int cr) {  
	       this.Cr = cr;  
	}
	
	public List<Object> getListaMaterias(){
		return ListaMaterias;
	}
	
	public void setListaMaterias(List<Object> listaMaterias) {  
	       this.ListaMaterias = listaMaterias;  
	}  
	
	Object retornaMateria(int i){
		return this.ListaMaterias.get(i);
	}
	
	public void inscreveMateria(Object materia){
		if (this.ListaMaterias.size() > 5){
			System.out.print("Você já está inscrito em 5 matérias");
		}else{
			this.ListaMaterias.add(materia);
		}
	}
}

/*Classe Principal*/

import java.util.ArrayList;
import java.util.List;

public class Principal {

	public static void main(String[] args) {
		
		Aluno Jose = new Aluno("José", 100);
		Aluno Fabio = new Aluno("Fabio", 200);
		Aluno Felipe = new Aluno("Felipe", 300);
		Aluno Carlos = new Aluno("Carlos", 400);
		Aluno Diogo = new Aluno("Diogo", 500);
		
		Disciplina Matematica = new Disciplina("Matematica", 100, 80);
		Disciplina ProgramacaoII = new Disciplina("Programação II", 200, 80);
		Disciplina Fisica = new Disciplina("Física I", 400, 80);
		Disciplina RedesI = new Disciplina("Redes I", 500, 120);
		Disciplina Engenharia = new Disciplina("Engenharia", 300, 90);
		Disciplina AlgebraLinear = new Disciplina("Algebra Linear", 600, 90);
		Disciplina Arquitetura = new Disciplina("Arquitetura", 700, 100);
		Disciplina FundamentosProgramacao = new Disciplina("Fundamentos de Programação", 800, 80);
		Disciplina BancoDeDados = new Disciplina("Banco de Dados", 900, 90);
		
		Jose.inscreveMateria(Matematica);
		Jose.inscreveMateria(ProgramacaoII);
		Jose.inscreveMateria(Fisica);
		Jose.inscreveMateria(RedesI);
		
		System.out.print(Jose.ListaMaterias.get(0).getNome()); 
		
	}
}

Gostaria de retornar o índice zero na lista de matérias do aluno Jose, mas não está rolando. Sei que estou fazendo alguma coisa errada. Podem me ajudar por favor?

Obrigado.

3 Respostas

Marcos_Henrique_N_Al

Olá Marques.

A classe Aluno está declarando que tem uma lista de Object.
E Object apesar de ser a mãe dos objetos não tem o método getNome.
Tem que alterar para lista de Disciplina.

public List<Disciplina> ListaMaterias = new ArrayList<Disciplina>();

E em todo lugar que foi colocado Object vc será obrigado a trocar por Disciplina.

Fazendo assim vai rolar…

ViniGodoy

Uma dica de estilo. Mesmo sendo sinônimos, evite usar dois termos para descrever a mesma entidade. Se o nome da classe é disciplina, use disciplina também para o resto (listaDisciplina, inscreveDisciplina, etc).

Finalmente, siga a convenção de código do Java. Nomes de classe começam com letras maiúsculas, mas de variáveis, propriedades e métodos, não.

R

Também verifique se realmente é necessário deixar o atributo ListaMaterias como public, pois percebi que este atributo tem get/set

Não sei se é o caso, mas se precisar garantir que a lista não seja de matérias não ultrapasse um certo número, seria melhor utilizar método que receba o índice da lista e retorne o objeto da mesma, sem expor a lista como public e sem um get para a lista também, pois tendo acesso a mesma, outra classe pode adicionar matérias sem passar por sua validação.

Espero que tenha ajudado.

Criado 5 de fevereiro de 2013
Ultima resposta 6 de fev. de 2013
Respostas 3
Participantes 4