| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 18:50:57
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
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???
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 18:59:42
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
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.
[]'s
This message was edited 1 time. Last update was at 24/11/2007 19:00:08
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/11/2007 22:10:30
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
[/code]Tenho essa classe Turmas
[code]public class Turmas {
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 ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 02:40:57
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
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:
... "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:
Para mostrar a turma com os alunos, faça:
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 04:08:38
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
- 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.
Como assim??
----------------------------------------------------------------------------------------------------------------
Obrigado pelas dicas
Essa classe seria uma regra de negocio??, pois pretendo criar um view de cadastros
e classes de persistencia, separando em camadas. Isto está correto ??
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 13:48:14
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
Alguma dica?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 14:04:39
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
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.
This message was edited 1 time. Last update was at 25/11/2007 14:05:56
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 14:08:48
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
spwe wrote:
- 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.
Como assim??
----------------------------------------------------------------------------------------------------------------
Obrigado pelas dicas
Essa classe seria uma regra de negocio??, pois pretendo criar um view de cadastros
e classes de persistencia, separando em camadas. Isto está correto ??
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.
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 14:14:51
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
Certo, obrigado !!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 15:01:26
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
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?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 15:38:50
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 16:11:38
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Siga a mesma lógica realizada para Aluno.
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 16:20:42
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
Certo, mas faço em classes separadas ?
Se for na mesma pode gerar alto acoplamento e baixa coesão ?
This message was edited 1 time. Last update was at 25/11/2007 16:34:56
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 16:38:36
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
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 ...
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/11/2007 18:45:24
|
spwe
Debugger
Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline
|
Neste caso a disciplina tem um professor, como faria para cadastrar disciplina com os dados do professor responsavel???
|
|
|
 |
|
|