Dúvida

 Pessoal estou com uma dúvida que esta me matando, estou fazendo um sistma escolar, onde é preciso ter 

cadastro, exclusão e consulta dos dados. Comecei modelando a lógica do sistema e minha dúvida é sobre o
relacionamento entre classes.
Ex: a classe disiciplina contém um professor responsável por uma disciplina

[code]public class Disciplina {

                private Professor professor;
              
                public void setProfessor (Professor professor) {
    	   this.professor = professor;
    }
    
    public Professor getProfessor () {
    	   return professor;
    }
      }[/code]

     Isto estaria correto para armazenar um professor em disciplina?? E como ficaria  a persistencia no banco,

poderia fazer a tabela disciplina com campos nome da disciplina, id da disciplina e id do professor… sem ter o relacionamento de classes???

A nível de modelagem dos objetos (OO), para mim, está correto.

Uma disciplina tem um e somente um professor.

No Banco (modelo relacional) as coisas nem sempre podem ser refletidas como no mundo OO.

Colocar o id do professor na tabela de disciplina é uma solução.

É interessante você começar a dar uma pesquisada sobre Ferramentas ORM como o Hibernate, que se preocupam em amenizar/auxiliar as diferenças do mundo OO para o mundo relacional.

Abraços.

É necessário mesmo ter o relacionamento entre classes, ou fazer o relacionamento somente no banco de dados??

Sim e necessario no meu ponto de vista isso e fundamental em OO…

Tenho uma Pessoa

Tenho um Aluno

Tenho uma Escola

O Aluno e uma pessoa e a escola Tem varios Alunos pense nisso…e tente colocar isso em codigo para ver como OO e bastante semelhante ao que vivemos em mundo Real.

Na minha opnião para você começar a desenvolver a aplicação.
Você deve primeiro projetar o banco de dados.O modelo E/R no mínimo.
Você está pensando corretamente.
A tabela disciplina terá os atributos referentes a disciplina e a chave estrangeira de professor.
A não ser que uma disciplina possa ser ministrada por mais de um professor( o que é normal).
Ai no caso viraria um relacionamento NxN.
Porque um professor pode ensinar varias disciplinas e uma disciplina pode ser ensinada por diversos professores.
João pode ser professor de Calculo I,II e III
E Maria tambem.
Logo, Calculo I tem Joao e Maria como professores dessa disciplina.
Mas ai vai de como você quer projetar seu sistema.
é necessário ter um relacionamento entre classes?
Isso é relativo, mas acho que é melhor que tenha, pois você poderia salvar diretamente no banco dem precisar de model (Dto ou pojos,como preferirem chamar).
Mas eu acho que ficaria melhor encapsular isso em um objeto só.
E no caso de disciplina.
Acho que uma disciplina tem uma coleção de professores.
E professores tem uma coleção de disciplina.

Espero ter ajudado

Na verdade, o certo é começar pela modelagem de domínio, não pelo ER… A modelagem ER deve ser transparente à modelagem de domínio.

Se eu quiser cadastrar disciplina com um professor responsavel :

stm = con.createStatement();
stm.execute( “INSERT INTO tabela_disciplina(nome_disc, id_professor) VALUES (’”+disciplina.getNome()+"’,’"+disciplina.getProfessor().getCodigo()+"’) ");
stm.close();

Estaria correto? e também vou precisar de um frame e onde faria as validações??

Com uma janela cadastro_professor e outra cadastro_disciplina, sendo q na de disciplina contaria com um
campo pra colocar o professor responsável pela disciplina, como faço a validação caso não haja o objeto
professor criado e armazenado no banco ??

Alguma dica?

Errado…

spwe, dê uma olhada no hibernate ou jpa, vai facilitar bastante a sua vida.

Errado?
Primeiro você cria a aplicação ,depois cria o banco?
Por que é melhor usar hibernate/jpa?E se ele tiver querendo aprender banco?Aqui no GUJ existem os senhores da verdade.
Isso é foda…
O cara está perguntando uma coisa. O outro responde : [quote]
spwe, dê uma olhada no hibernate ou jpa, vai facilitar bastante a sua vida.
[/quote]
Mas por que?E porque não tenta responder a duvida do caar?JPA/hibernate são bons,mas se ele não souber os conceitos basicos de banco e oo,como ele vai usar bem?
Os donos da verdade desse forum as vezes me deixam com vontade de nem vir aqui mais como usuario,so como leitor mesmo.
Sem mais

Calma antoniopopete, porque o estresse?

O ideal hoje é você começar pelo modelagem OO do seu negócio. Começar pelo ER é algo que se recomendava lá pelos anos 80/90. Não enfatize tabelas de banco, enfatize classes de negócio. Em alguns ambientes mais burocráticos, nem sempre isso é possível, mas se for possível, não pense duas vezes.

Quanto a eu sugerir o hibernate/jpa, ele fez a pergunta em um forum de java, provavelmente o interesse principal é java, não banco especificamente. A pergunta dele foi sobre modelagem das classes, isso tem a ver com OO. Uma solução ORM vai ajudar a esclarecer muitas das dúvidas dele, pois já apresenta soluções justamente para os fatos que ele colocou aqui. Conhecer hibernate/jpa pode ajudar a clarear as idéias, se não quiser ver especificamente algum framework, pode estudar alguns patterns sobre o assunto (Fowler, por exemplo, apresenta alguns interessantes, nos quais o próprio hibernate se inspirou). Então acredito que eu tenha respondido, ou ao menos tentado, a dúvida dele quando sugeri olhar hibernate.

Só não entendi seu tom agressivo. Não se pode discordar de você? Agindo assim, você está parecendo querer ser o dono da verdade…

[quote]Com uma janela cadastro_professor e outra cadastro_disciplina, sendo q na de disciplina contaria com um
campo pra colocar o professor responsável pela disciplina, como faço a validação caso não haja o objeto
professor criado e armazenado no banco ?? [/quote]

Precisaria verificar se o objeto professor existe ???

Tudo bem. Não é stress não.
A duvida do colega ja foi respondida,e isso é mais importante.
Sem mais.

Entao estou usando o padrão DAO

[quote]Com uma janela cadastro_professor e outra cadastro_disciplina, sendo q na de disciplina contaria com um
campo pra colocar o professor responsável pela disciplina, como faço a validação caso não haja o objeto
professor criado e armazenado seus dados no banco ?? [/quote]

Como faria a validação ?

Seria tratado por exceções ???