Dúvidas sobre Responsabilidades das Classes

5 respostas
V

Estou com certa dúvida sobre as responsabilidades que cada classe tem em um sistema. Explico:

Por exemplo, temos um sistema de faculdade. Onde temos a classe disciplina e a classe curso. Que dever retornar uma lista de disciplina do curso de Análise de Sistemas? A classe disciplina ou curso?

5 Respostas

C

Esse sistema que voçê citou tem que ter um banco de dados e é no banco que se dá esse tipo de relacionamento. As classes apenas se relacionam. Quando voçê vai retornar essa lista que voçê citou geralmente o desenvolvedor faz uma sql no banco e retorna os dados em um objeto. Classes apenas se relacionam quando necessarios, e podem trocar mensagens entre elas, mensagens nesse sentindo diz respeito a chamada de metodo entre classes, por exemplo tenho a classe A que precisa utilizar um metodo da classe B, então a classe A envia uma mensagem solicitando a classe B o serviço daquele metodo que pertence a ela. Entendeu.

V

Isto do banco eu sei. Mas minhas classes devem ter(uma delas) um método que lista um conjunto de disciplinas. Quem vai ter o método “listaDisciplinas”? E passo como parâmetro o curso ou sei lá… algo do tipo. Este método tem de estar na classe curso? Pois o curso tem disciplinas?
Outro exemplo clássico é agencia e conta. Se quero obter uma determinada conta, meu método buscarConta fica em agência ou conta? Já vi alguns exemplos que este método ficaria em agência e passaria para agência o número da conta… Seguindo esta lógica, minha classe curso que listaria as disciplinas…

C

Um Curso possui varias disciplinas e uma disciplina so pertence a um curso, partindo dessa logica o metodo listaDisciplinas deve estar na classe disciplina. Ao implementar esse metodo passe como parametro uma String nomeCurso por exemplo, ai depois dentro do metodo você implementa os codigos necessarios para que funcione. Ai quando voçê quiser saber quais disciplinas o curso possui voçê envia uma mensagem da classe Curso para a classe Disciplina passando como parametro o nome do curso e o metodo te retorna uma lista de disciplina que aquele curso possui. Espero ter te ajudado.

gilmarcand

Se entendi a sua dúvida e o seu exemplo, o cenário que você tem é: Um curso tem várias disciplinas em sua composição, e você quer saber onde colocaria um método para poder recuperar a listagem de disciplinas de uma instância de um curso?
Sugiro o seguinte:

public class Curso {
	private String nome;
	private List<Disciplina> disciplinas = new ArrayList<Disciplina>();

       // estou omitindo os outros métodos getters e setters...
	
	/**
	 * @return retorna a lista de disciplinas.
	 */
	public List<Disciplina> getDisciplinas() {
		return disciplinas;
	}
}
public class Disciplina {
	private String nome;
	private Curso curso;
	
       // estou omitindo os outros métodos getters e setters...

	/**
	 * @return retorna o curso.
	 */
	public Curso getCurso() {
		return curso;
	}
}

Usando isto:

public class Testa {
	public static void main(String[]args){
		Curso curso = new Curso();
		curso.setNome("Analise de Sistemas");
		
		Disciplina disciplina1 = new Disciplina();
		disciplina1.setNome("Algoritmo");
		
		Disciplina disciplina2 = new Disciplina();
		disciplina2.setNome("Banco de Dados");
		
		curso.getDisciplinas().add(disciplina1);
		curso.getDisciplinas().add(disciplina2);
		System.out.println("Disciplinas do Curso " + curso.getNome() + ":");
		for(Disciplina disciplina: curso.getDisciplinas()){
			System.out.println(disciplina.getNome());
		}
		
	}
}

Espero ter ajudado.

V

Agora minha dúvida é como implementar isto no banco de dados. Como posso utilizar uma camada DAO?

Criado 17 de fevereiro de 2009
Ultima resposta 17 de fev. de 2009
Respostas 5
Participantes 3