Ajuda com orientação objetos

10 respostas
E

Seguinte galera… estou fazendo um trabalho em c# porem eu quero um conceito sobre orientação objeto como falei no titulo seria o seguinte:
Eu estou criando um programa para controlar as informações das disciplinas de um curso de graduação. Este programa deve poder armazenar informações sobre os professores do curso, os dados dos alunos matriculados e quais são as disciplinas ofertadas pelo curso. Eu tenho que ter as classes Aluno, professor, Disciplina pelo menos…
Eu criei as classes e também as classes de lista encadeada de cada tipo de objeto. Ate aí tudo bem, na classe main eu fiz um menu com inserir alunos, exibir alunos, inserir disciplina, inserir professores enfim. Tem um pedido que não to conseguindo fazer que seria um professor atribuir uma nota ao aluno somente o professor pode atribuir a nota ao aluno, ou seja, segundo ele eu tinha que juntar essas classes, mas não to conseguindo fazer isso… associar a disciplina e a nota dada pelo professor para o aluno como ficaria?

Desde já, obrigado.

10 Respostas

Ziru

Deixa ver se entendi, a classe aluno tem um atributo para notas, e você quer que somente um objeto do tipo professor possa alterar esse valor?

arthurmde

O que você está tendo são problemas na distribuição de responsabilidades entre os objetos do seu projeto. Recomendo à você dar uma estudada no conjunto de princípios GRASP, que tratam justamente da distribuição destas responsabilidades entre os objetos. Uma introdução pode ser feita por aqui: GRASP.

De qualquer forma, creio que o Professor está totalmente disvinculado com o Aluno, portanto não deve manter referências para seus alunos. Contudo, Alunos e Professores têm algo em comum: a disciplina!!
Acho que a Classe Disciplina seria minha melhor candidata à manter referência do Professor e dos Alunos. As notas de uma disciplina surgem desta relação entre Alunos e Disciplinas. A questão é que atribuir uma nota é responsabilidade de usuário, que no caso deve ter a permissão de Professor daquela disciplina.
Pensando em uma GUI com esta funcionalidade, ela estaria se comunicando com alguma Classe Controladora que é uma Indireção entre as classes de GUI e suas classes de modelo (Professor, disciplina, Aluno) e seria nela que você iria orquestrar estas atividades de atribuição de notas, etc.!!

E

Tipo eu tenho um aluno já criado na lista encadeada os professores criados, ou seja, professores matemática, português, etc… quando atribuir a nota ao aluno não sobrescrever esse aluno já existente e sim replicar os alunos com a disciplina de cada professor e também com a nota atribuída, assim mantendo os dados deles…

ezequiellorenzatti

A minha resposta não é bem sobre a sua dúvida, mas resolvi postar pois pode dar uma luz na questão tempos atrás eu desenvolvi um sistema ainda em clipper para uma escola e tive algumas dúvidas um tanto semelhantes.

De lá pra cá o paradigma de programação mudou de procedural para orientado a objeto e outros tantos, pensando no seu caso eu lembrei de uma solução em relação ao armazenamento dos dados.

Como eu não seu qual é o nível do seu conhecimento vou ser o mais objetivo e didático possível

Eu conseguiria imaginar um relacionamento entre algumas tabelas:

Alunos (id, nome, idade, id_curso, nome_pai, nome_mae, …)
Professores (id, nome, salario, …)
Curso (id, nome, turno, id_professor…)
Alunos_Curso(id, id_curso, id_aluno)
Notas (id, nota, id_aluno, id_curso, …)

Esse é um exemplo bem simples

A ideia é seguir o pensamento de que o sistema é novo e que a escola esteja sendo estruturada.
Os professores seriam cadastrados
Os cursos cadastrados tendo como base o professor e o turno
Depois disso os alunos seriam cadastrados nos cursos de seu respectivo interesse.
E ao decorrer das aulas os professores iriam cadastrar as notas de cada aluno que estivesse na sua turma.

Veja que nas tabelas eu faço referencia ao id de cada registro relacionado, e não duplico nenhuma informação

Quando você adicionar uma nota não irá sobrescrever o aluno, simplesmente vai dizer que aquela nota foi dada para o aluno no curso especifico, lembrando que um aluno pode estar em mais de um curso ao mesmo tempo.

A tabela Alunos_Curso é uma tabela auxiliar que vai indicar em quais cursos um aluno esta matriculado e também quais são os alunos matriculados em um determinado curso.

Espero ter ajudado de alguma forma.

E

ezequiellorenzatti:
A minha resposta não é bem sobre a sua dúvida, mas resolvi postar pois pode dar uma luz na questão tempos atrás eu desenvolvi um sistema ainda em clipper para uma escola e tive algumas dúvidas um tanto semelhantes.

De lá pra cá o paradigma de programação mudou de procedural para orientado a objeto e outros tantos, pensando no seu caso eu lembrei de uma solução em relação ao armazenamento dos dados.

Como eu não seu qual é o nível do seu conhecimento vou ser o mais objetivo e didático possível

Eu conseguiria imaginar um relacionamento entre algumas tabelas:

Alunos (id, nome, idade, id_curso, nome_pai, nome_mae, …)
Professores (id, nome, salario, …)
Curso (id, nome, turno, id_professor…)
Alunos_Curso(id, id_curso, id_aluno)
Notas (id, nota, id_aluno, id_curso, …)

Esse é um exemplo bem simples

A ideia é seguir o pensamento de que o sistema é novo e que a escola esteja sendo estruturada.
Os professores seriam cadastrados
Os cursos cadastrados tendo como base o professor e o turno
Depois disso os alunos seriam cadastrados nos cursos de seu respectivo interesse.
E ao decorrer das aulas os professores iriam cadastrar as notas de cada aluno que estivesse na sua turma.

Veja que nas tabelas eu faço referencia ao id de cada registro relacionado, e não duplico nenhuma informação

Quando você adicionar uma nota não irá sobrescrever o aluno, simplesmente vai dizer que aquela nota foi dada para o aluno no curso especifico, lembrando que um aluno pode estar em mais de um curso ao mesmo tempo.

A tabela Alunos_Curso é uma tabela auxiliar que vai indicar em quais cursos um aluno esta matriculado e também quais são os alunos matriculados em um determinado curso.

Espero ter ajudado de alguma forma.

Me ajudou muito… se você poder me adicionar no Skype ou Facebook se tiver para trocar ideias quanto a implementação ficarei muito grato. Só não vou mexer agora porque estou com enxaqueca ta me matando rsrsrs…

E

Nessa classe Aluno tem uma id da disciplina eu fui na classe aluno e criei um tipo Disciplina disciplina = new Disciplina(); e no construtor pedi um parametro do tipo int que seria o codigo da disciplina somente… porem não estou conseguindo imprimir o nome da disciplina so esta pegando o codigo… Estou vuando nessa orientação objetos hheauaehahu mesmo ja estudando isso…

ezequiellorenzatti

Opa manda um pm com o endereço do skype que eu adiciono sim.

Quanto a orientação a objeto aconselho você estudar http://www.caelum.com.br/apostila-java-orientacao-objetos/

Depois que tiver pegado bem a ideia da orientação a objeto aconselho você a pesquisar sobre JPA mais especificamente Hibernate ele resolve vários problemas de conversão objeto relacional.

Caso estiver interessado em um livro didático que mostre como desenvolver um sistema do zero eu recomendo http://www.pontofrio.com.br/livros/informaticaecertificacao/LinguagemeProgramacao/Programacao-Java-para-a-Web-Decio-Heinzelmann-Luckow-e-Alexandre-Altair-de-Melo-1602378.html eu estou estudando ele e recomendo.

E

ezequiellorenzatti:
Opa manda um pm com o endereço do skype que eu adiciono sim.

Quanto a orientação a objeto aconselho você estudar http://www.caelum.com.br/apostila-java-orientacao-objetos/

Depois que tiver pegado bem a ideia da orientação a objeto aconselho você a pesquisar sobre JPA mais especificamente Hibernate ele resolve vários problemas de conversão objeto relacional.

Caso estiver interessado em um livro didático que mostre como desenvolver um sistema do zero eu recomendo http://www.pontofrio.com.br/livros/informaticaecertificacao/LinguagemeProgramacao/Programacao-Java-para-a-Web-Decio-Heinzelmann-Luckow-e-Alexandre-Altair-de-Melo-1602378.html eu estou estudando ele e recomendo.

Cara estou puto aqui já… acho que não sirvo para programação não!

E

Mandei o contato na pm!

ezequiellorenzatti

Muita calma nessa hora !!

Programação não é um bicho de 7 cabeças (talvez 3, kkkk), mas não se desespere, se você curtia sopa de letrinhas na sua infância vai se dar bem, é só se dedicar a entender os conceitos básicos e ir agregando conhecimento.

A melhor forma de aprender é fazendo, e não ter medo de pedir ajuda.

Já recebi a amanhã eu adiciono a minha lista.

Criado 30 de maio de 2013
Ultima resposta 31 de mai. de 2013
Respostas 10
Participantes 4