Array List

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

[code]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 ListaMaterias = new ArrayList();

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()); 
	
}

}[/code]

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.

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…

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.

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.