Dúvida  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
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???
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

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/

[Email] [MSN]
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 ?
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

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/

[Email] [MSN]
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 ??

spwe
Debugger

Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline

Alguma dica?
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

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/

[Email] [MSN]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

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/

[Email] [MSN]
spwe
Debugger

Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline

Certo, obrigado !!!
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?
spwe
Debugger

Membro desde: 15/09/2007 05:29:08
Mensagens: 65
Offline

?
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

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/

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

Alessandro Lazarotti
Virtual Machine Man
[Avatar]

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/

[Email] [MSN]
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???
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team