Estou fazendo um sistema escolar, comecei montando a regra de negócio com suas classes -
alunos, funcionarios, professores, turmas …
A classe alunos tem atributos nome, rg, idade e métodos set e get, assim como a classe turmas com seus respectivos atributos. Preciso cadastrar alunos e turmas, e no caso uma turma pode conter vários alunos, é certo eu fazer uma validação tipo instanciar alunos em turmas criando um arraylist para add e remover os objetos alunos???
Por razões de performance, tente construir a coleção de Alunos com uma implementação de java.util.Set.
ArrayList é indexado, o que gera um certo custo, e nem sempre é necessário.
private int codigo;
private String nome;
private List <Alunos> alunos = new ArrayList <Alunos> ();
//===============================================================
public Turmas () {
}
public Turmas (int codigo, String nome) {
this.codigo = codigo;
this.nome = nome;
}
public void setCodigo (int codigo) {
this.codigo = codigo;
}
public void setNome (String nome) {
this.nome = nome;
}
public int getCodigo () {
return codigo;
}
public String getNome () {
return nome;
}
//============================================================//
public void addAlunos (Alunos a) {
this.alunos.add(a);
}
public void dropAlunos (int pos) {
alunos.remove(pos);
}
public List <Alunos> getAlunos () {
return alunos;
}
public Alunos getAlunos (int pos) {
return (Alunos) alunos.get(pos);
}
//===========================================================//
}[/code]
Em uma classe Teste seto os alunos e uso o metodo addAlunos para adicionar na Turma, mas nao conseguindo retorna a turma com os respectivos alunos como faço ?
Cara, sua pergunta esta com erro de concordância ou falta de pontuação, sei lá, não deu pra entender o que você quer. Bom, pelo menos deu pra entender algumas coisas que você anda fazendo de errado quando codifica:
Utilize nome de classes no singular quando se refere a uma unidade. A classe “Aluno” representa uma unidade, não deve ser ter seu nome no plural (“Alunos”). Nomes de variáveis para collections tudo bem usar plural.
Evite codificar com nomes de variáveis que não representam nada para quem le o código, como:
public void addAlunos (Alunos a) {
this.alunos.add(a);
}
… “a” é um nome que não diz nada.
Imagine se este método tivesse mais algumas linhas de código, como saber o que é a varável “a”: tendo que toda vez olhar a assinatura do método? Péssimo isso.
Deixar que o cliente de sua classe saiba de detalhes como “que posiçao do array esta determinado usuário”. Isso não deve acontecer em hipótese alguma.
Para alguém excluir um usuário da lista de turma, o mais natural é passar o Usuario (ok, para algumas implementações poderia ser enviado um identificador, como numero da matrícula, mas eu ainda prefiro enviar o próprio objeto usuário).
Portanto, seu drop seria melhor assim:
public void dropAluno (Aluno aluno) {
alunos.remove(aluno);
}
Para mostrar a turma com os alunos, faça:
publica static void main (String args){
// instanciar alunos
Aluno alun...
Aluno alun...
//instancia turma e add os alunos
Turma turma = new Turma();
turma.add...
for(Aluno aluno : turma.getAlunos()){
System.out.println("Aluno de nome "+ aluno.getNome());
}
}
Essa classe seria uma regra de negocio??, pois pretendo criar um view de cadastros
e classes de persistencia, separando em camadas. Isto está correto ??
Classes de negócio sao aquelas que contém características (atributos) e comportamentos (métodos) que se assemelham com um problema (ou representação) do mundo real, pertinente ao sistema. Se a classe Turma e Aluno possuem essas qualidades, então elas são classes de negócio.
Essa classe seria uma regra de negocio??, pois pretendo criar um view de cadastros
e classes de persistencia, separando em camadas. Isto está correto ??
[/quote]
Você estava passando como parâmetro um numero que representava uma posição no array, para a deleção. Uma classe que representa uma “entidade”, não deve depender de detalhes de infraestrura, como por exemplo posição de array. Passe o próprio objeto a ser deletado, como demonstrei.
Conforme vou programando surgem mais duvidas;
A classe turma possui varios alunos e também varias disciplinas
Essas associações eu crio tudo dentro da classe turmas, ou é melhor fazer em classes separadas?
Primeiro defina sua entidades:
Turma
Aluno
Disciplina
etc
Depois pense no mundo real para fazer as associações.
Uma turma possui alunos? Se sim coloque dentro dela a coleção de alunos. Uma Turma possui disciplinas? Hmmm, em minha opinião não diretamente. Quem possui Disciplina(s) deveria ser uma entidade Curso. Um Curso contém um grade de disciplinas e turmas relacionadas… e por aí vai …
public Professor getProfessor () {
return professor;
}[/code]
Isto estaria correto ? E para gravar num banco de dados, seria melhor fazer uma tabela disciplina
com colunas nome da disciplina, id da coluna e outra do professor ?