Problemas com Modelagem Uml

Cumprimentos!

Estou com uma dúvida no desenvolvimento da modelagem deste simples conjunto de classes, que tratam de um sistema de controle de alunos.
Basicamente, temos as seguintes classes:

[list]Empresa[/list]
[list]Aluno[/list]
[list]Professor[/list]
[list]Turma[/list]
[list]Curso[/list]

Alguns podem se perguntar “Mas o que aquela empresa está fazendo ali?”. Pois é, é nela que mora a minha dúvida.
No caso deste sistema, em alguns cursos, as empresas enviam profissionais para receberem treinamento. Então eu preciso relacionar a empresa X com o aluno Y, mas apenas no caso da turma Z.
Eu não posso ligar a empresa diretamente ao aluno, pois ele pode fazer cursos sem ligação com a empresa também.

Pensando em modelagem Entidade Relacional (com a qual eu sinto uma, um pouco menor, dificuldade) eu teria, na entidade de ligação AlunoTurma, uma foreign key para empresa.
Alguém poderia me ajudar a modelar isso em OO?

Obrigado desde já!

Ninguém?

:cry:

Cara seu diagrama de classe está um pouco equivocado, não é possivel que empresa seja uma generalização de pessoal, na verdade ela deveria ser um entidade que se relacionace com aluno de forma 1 para 0 ou 1, apenas isso.

espero ter ajudado

flw
Heber

[img]


Oi frocchagas ,

Desculpe a falta de jeito com a imagem é que ainda não sei com incluir imagens nesta página  :( 

Então, talvez vc ache estranho a relação das classes Pessoa, Aluno, Professor. Dê uma olhada neste link no tópico "Solucionando o problema com composição..." para vc ver o porque foi feito assim [url]http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/pat/herancavscomposicao.htm[/url]

flw

Opa pessoal obrigado pela ajuda!

Mas eu ainda continuo com a dúvida…
Se eu ligar a empresa na turma, eu teria uma empresa pra toda a turma, o que não espelha o meu domínio fielmente, já que eu posso ter vários alunos e, cada um, ligado a uma empresa.

Outra coisa é que eu também não posso relacionar um aluno com uma empresa, pois ele pode participar de turmas sem estar atrelado a uma empresa. Ou também, mudar de empresa em algum momento. Dessa forma, ele teria feito o curso X subsidiado pela empresa XX e o curso Y subsidiado pela empresa YY.

Deu pra entender ou ficou confuso?

Um exemplo simplório da minha visão… será que é mais ou menos isso?

Pergunta: Já tentou implementar?

  1. Cadê a classe Pessoa? :shock:

[quote=frocchagas]
Mas eu ainda continuo com a dúvida…
Se eu ligar a empresa na turma, eu teria uma empresa pra toda a turma, o que não espelha o meu domínio fielmente, já que eu posso ter vários alunos e, cada um, ligado a uma empresa. [/quote]

Então…aí temos um ponto interessante, falando em espelhar o domínio nele também não existem objetos do tipo AlunoTurma porque ele é resultante de um recurso que associa as 3 entidades Turma, Aluno e Empresa. Detalhe, se a associação fosse apenas Turma e Aluno (n…n) formaria uma entidade fraca (termo de modelagem de dados) como entrou a Empresa na brincadeira o que era entidade fraca passou a ser uma entidade forte que é a AlunoTurma com o atributo empresa deixando a coisa um pouco esquisita.

Normalmente no modelo de classes as possoas não colocam essas entidades do tipo AlunoTurma porque elas não existem no contexto e por serem um recurso computacional porisso fica subentendido, porisso associei tudo na turma.

Eu acho que do jeito que vc fez “rola” porque você terá uma instancia da classe Turma com uma lista de instancias AlunoTurma, cada instancia de AlunoTurma terá associado uma instancia de Aluno e outra de Empresa SE HOUVER UMA EMPRESA senão estará nula o que nos diz que é o aluno que está bancando o curso naquela turma.

Tente implementar como o Bruno Laturner disse, quem sabe clareia mais rsrss.

[]'s

Eu tirei pra deixar a imagem menor, mas eu estou utilizando essa classe sim! :smiley:

Não só tentei, como estou utilizando essa modelagem pra desenvolver a aplicação. :shock:

Na verdade, eu imaginava que estes relacionamentos estavam corretos. A minha dúvida maior é se a minha representação UML está correta…

Então se na minha representação UML eu ligar tudo na turma e implementar usando AlunoTurma estaria correto?..
…isso não pode gerar alguma confusão?

Mais uma vez, obrigado a todos!
[]s

[quote=frocchagas] Então se na minha representação UML eu ligar tudo na turma e implementar usando AlunoTurma estaria correto?..
…isso não pode gerar alguma confusão? [/quote]

É claro que os menos desavisados ou com menos experiencia na coisa podem ficar confusos, é natural. Outro detalhe importante é o seguinte: Esse modelo UML (o sem AlunoTurma) é RESULTANTE DA SUA ANÁLISE, ou seja, entidades que não existem no contexto não participam dele, estas entidades aparecem no modelo quando o mesmo tem a intenção de representar aspectos de implementação ex: sua classe AlunoTurma. Portando quem olha para o modelo de implementação pensando no modelo de análise acha estranho e quem olha para o modelo de análise pensando no modelo de implementação pode achar esquisito rsrsrs.

Em livros especializados em analise orientada a objetos (principalmente os que tem a odiada WATER FALL) sempre falam dessas fases, é que passa desapercebido.

Mas o ponto da modelagem (IMO) é justamente esta: permitir que as pessoas possam trocar ideias sobre as estruturas estudas para chegar em um concenso, exatamente como nos fizemos, apenas isso.

Outra dica: Pense que seu modelo pode ser melhorado em algum ponto e que não há uma resposta exata, porque sempre vem alguem (pode ser vc mesmo rsrsr) ou alguma coisa para lhe mostrar que; algo está errado ou não existe mais ou foi transformado devido a dinamica do contexto de onde se originou o modelo.

System.out.println(“Abraços!”);

É, acho que o meu problema estava sendo mais entender o que realmente é a modelagem de objetos do que a própria modelagem em si.
Agradeço muito a vocês pelo tempo que dispuseram pra me ajudar!
Me esclareceu muito!!!

Abraços! E até uma outra thread! :smiley: