Toon posts:

[Rational Rose & Java] Associatie Klasse

Pagina: 1
Acties:
  • 169 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ok, voor de Rational Rose Guru's onder jullie:

Afbeeldingslocatie: http://home.wanadoo.nl/noordzij/Associatie%20Klasse.JPG

Wanneer ik de klassen zoals hierboven in Java ga genereren krijg ik dit:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
public class ExamenResultaat {

   protected boolean geslaagd;
   protected Date deDatum;
   
   public ExamenResultaat() {
   }
}

public class Examen extends Dienst {
  
  protected String naam;
  
  public Examen(){
  }
}

public class Leerling extends Persoon {

   public Leerling() {
   }
}
Terwijl ik zoiets als dit had verwacht:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
public class ExamenResultaat {

  protected boolean geslaagd;
  protected Date deDatum;
  public Examen doetExamen;
  public Leerling wordtGedaanDoor;
   
  public ExamenResultaat() {
  }
}

public class Examen extends Dienst {
  
  protected String naam;
  
  public Examen(){
  }
}

public class Leerling extends Persoon {

  public Leerling() {
  }
}

Kortom, ik had de 2 klassen als attributen van de associatie klasse verwacht.

Weet iemand hoe ik dat voor elkaar kan krijgen? ftr: ik werk met RR enterprise 2003.

[ Voor 5% gewijzigd door Verwijderd op 06-05-2004 22:34 ]


  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Je hebt een 0..n relatie, dan kan je toch niet een enkel veld hiervoor hebben? Wat je wilt is volgens mij iets totaal anders - verander eens de multipliciteit van je relaties naar 1.

Het komt er gewoon op neer dat je multipliciteiten verkeerd omstaan.

[ Voor 17% gewijzigd door raoulduke op 06-05-2004 22:36 ]

Remember, if you have any trouble you can always send a telegram to the Right People.


Verwijderd

Topicstarter
Kijk, in principe wil ik dit:

Afbeeldingslocatie: http://home.wanadoo.nl/noordzij/Associatie%20Klasse%20zoals%20het%20niet%20moet.JPG

Maar zo ga je dat niet modeleren natuurlijk. Het is geen ER model...

  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Als je dat 'in principe' wilt, waar maak je het dan 'uit principe' niet zo? Als er dan de goede code uitkomt is het toch goed? Het model is semantisch correct (beter dan die eerste oplossing, die klopt gewoon niet).

Remember, if you have any trouble you can always send a telegram to the Right People.


Verwijderd

Topicstarter
:)
Jij kiest de gemakkelijke weg...
Maar je hebt helemaal gelijk.

Toch zou ik graag willen weten hoe je dit voor elkaar kan krijgen, want de associatie klasse wordt wel ondersteund door Rose, dus hij zou er toch wel iets mee moeten doen?
trouwens...
raoulduke schreef op 06 mei 2004 @ 22:35:
Je hebt een 0..n relatie, dan kan je toch niet een enkel veld hiervoor hebben?
Dan propt 'ie 't in een container. In mijn settings wordt dat dan een Vector:
Java:
1
2
3
4
5
6
7
8
9
10
public class ExamenResultaat {
  
  protected boolean geslaagd;
  protected Date deDatum;
  public Vector doetExamen;
  public Vector wordtGedaanDoor;
  
  public ExamenResultaat() {
  }
}

[ Voor 49% gewijzigd door Verwijderd op 06-05-2004 22:56 ]


  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Je gebruikt toch ook associaties in je tweede voorbeeld, tenminste, dat zou moeten, de pijlhoofden doen vermoeden dat je hier subclasses (IS A relaties) modelleert. Je moet dus het tweede model dat je gaf aanhouden, maar dan zonder die pijlhoofden. Gewoon een associatie. Dat is goed, is altijd al goed geweest en zal in de toekomst ook nog goed zijn.

Ik vind je eerste oplossing verwarrender dan de tweede. Daarenboven is volgens mij die eerste oplossing gewoon fout - je multipliciteit staat verkeerd in mijn ogen.

Remember, if you have any trouble you can always send a telegram to the Right People.


Verwijderd

Ik begrijp wel dat een leerling 0 of meerdere examens kan hebben. Echter dat er 0 of meerdere leerlingen voor een examen zijn snap ik niet.
Als je 1 examen hebt kan dat maar door 1 leerling gemaakt zijn. Het is geen ER-model zoals je al zei.

Soit, maak het onderscheid tussen de examentest en het examen.

[ Voor 12% gewijzigd door Verwijderd op 06-05-2004 23:10 ]


  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Voor de duidelijkheid: kan je een post maken waarin je de gewenste associaties zet, dus (bijvoorbeeld) een examenresultaat kan meerdere examans omvatten, enz, dan kunnen we beter oordelen over wat je hebt en wat je wilt.

Remember, if you have any trouble you can always send a telegram to the Right People.


Verwijderd

Topicstarter
Ok ik kan begrijpen dat het een raar zooitje lijkt. Ik zal het proberen uit te leggen.

We hebben een Leerling. Dat is duidelijk.
En we hebben een Examen. Het gaat is dit geval om rijexamens, dus bijvoorbeelden van examens zijn:
- Praktijk Examen Categorie B. (auto)
- Praktijk Examen Categorie A. (motor)
Het zijn dus echt vaste "dingen" die blijven bestaan. Het is niet een examen op een bepaalde dag ofzo.

Goed. Nu wil ik dus de associatie leggen tussen een Leerling en een Examen. Een Leerling doet een Examen Categorie B op 5 januari '04. Het resultaat is gezakt. De Leerling gaat natuurlijk nog een keer examen doen, nu op 15 januari '04, maar hij doet hetzelfde Examen. Het resultaat kan nu anders zijn.

Het is dus duidelijk dat een Examen door meerdere Leerlingen gedaan wordt.
Ook kan het zijn dat een Leerling meerdere malen 1 Examen doet.

Is dit duidelijker?

(nice site btw Duke...)

[ Voor 3% gewijzigd door Verwijderd op 06-05-2004 23:54 ]


Verwijderd

Topicstarter
Maar even voor de duidelijkheid, want dit onderwerp gaat eigenlijk de verkeerde kant op, het gaat me hier niet zozeer om het plaatje, maar om hoe het gegenereerd wordt door Rose. Ik ga niet constant als ik het gegenereerd heb, handmatig die attributen in ExamenResultaat plempen.
Dat moet 'ie zelf kunnen... Rose is slim zat hiervoor. Ik doe blijkbaar iets fout.

[ Voor 6% gewijzigd door Verwijderd op 07-05-2004 00:04 ]


Verwijderd

Ok goed ik heb even hetzelfde geprobeerd in Poseidon for UML. Ik heb geen rational rose ter beschikken maar het zijn allebei uml tools die dergelijke relaties ondersteunen.
Het vervelende is dat deze mij effectief de code gegenereerd heeft die jij zou willen met exact dezelfde configuratie. Dus een associatieklasse en aan beide kanten een 0..n relatie.
Ik heb er dus niet echt een idee van wat je misdoet.

  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Happydennie, ik begrijp uit jouw verhaaltje dat bij een examenresultaat dan in feite toch maar 1 examen en 1 leerling hoort? Het kunnen natuurlijk iedere keer andere examens en leerlingen zijn, maar bij 1 resultaat hoort toch maar 1 leerling en 1 examen?

Dan lijkt mij nog steeds dat de multipliciteit bij 'resultaat' 0..n moet zijn en juist bij leerling en examen 1 (visueel gezien). Een examen kan namelijk in meerdere resultaten voorkomen (of 0), een leerling kan in meerdere resultaten voorkomen (of 0) en een examenresultaat gaat altijd maar over 1 leerling en 1 examen.

Dat is waarschijnlijk niet wat je wilde horen, maar zo zie ik het :)

offtopic:
Bedankt voor het compliment!

Remember, if you have any trouble you can always send a telegram to the Right People.


Verwijderd

Topicstarter
Nou ja, ik heb een soort workaround gevonden.
Het is niet fraai, maar het werkt.

Je kan bepalen welke attributen van je klasse zichtbaar zijn in het klassediagram. Dit kan je per klasse instellen.

Dus raad eens, ik heb de 2 klassen die verbonden worden als attributen gegeven aan ExamenResultaat, met de correcte relatienamen. Je ziet ze niet in het diagram als attributen, maar ik krijg ze wel als ik de boel genereer.

Nogmaals, het is niet netjes, maar ik zag het nou eenmaal niet anders...

Bedankt in ieder geval.

En duke, je hebt op zich gelijk, maar ik wil nu eenmaal een relatie hebben tussen de Leerling en het Examen.
Bij deze relatie horen wat gegevens, maar het gaat erom dat het een relatie is tussen de Leerling en het Examen en niet een één of ander raar ding als ExamenResultaat. Dat is geen object met een eigen bestaansrecht.
In het ER model (of Database implementatie) dat eruit zal komen zal het er inderdaad zo uit komen te zien als het laatste plaatje hierboven, maar dit is het klasse diagram.

En veel op veel relaties zijn heel normaal in UML. Uit jouw verhaal concludeer ik dat jij vindt dat veel op veel relaties niet kunnen... Hierbij moet je alleen uitkijken wie je de eigenaar maakt van de relatie.

Nou, dat was een leuke UML/OO discussie.

[ Voor 9% gewijzigd door Verwijderd op 12-05-2004 00:03 ]

Pagina: 1