Adding a link object
No edit summary
(Automatically adding template at the end of the page.)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Often when you add to a association with a link class, you want do things with the created link object.
Often, when you add to an association with a link class, you want to do things with the created link object.


Do like this;
Do this:


[[File:Association_object.png|719x719px|border]]
[[File:Association_object.png|719x719px|border]]


Add a method to either of the "main" classes with a content similar to this;
Add a method to either of the "main" classes with content similar to this:
  self.Flights.add(aFlight);  
  self.Flights.add(aFlight);  
  self.Bookings->select(b | b.Flight = aFlight)->first
  self.Bookings->select(b | b.Flight = aFlight)->first
It adds the object at the other end to the association, and then looks up the created link object. In this case, a Booking object and returns it.
There is an operator [[OCLOperators addReturnIndexOf0|addReturnIndexOf0]] that adds the Flight - and returns the zero based index of Booking.
self.Bookings.at0(self.Flights.addReturnIndexOf0(aFlight)).AttributeOnBooking


Please note that it's usually very good to set the names on the links, both the InnerLinkName and the LinkRoleName.
It adds the object at the other end to the association and looks up the created link object - in this case, a Booking object and returns it.


In this example, this is the InnerLinkName and the LinkRoleName for the '''Persons''' end of the association.
Please note that it's usually good to set the names on the links, both the InnerLinkName and the LinkRoleName.
 
In this example: this is the InnerLinkName and the LinkRoleName for the '''Person'''<nowiki/>'s end of the association.
[[File:Linkrolename.png|none|frame]]
[[File:Linkrolename.png|none|frame]]


Note! From the '''Booking''' object, it's only '''one''' Person object in the association. Hence, '''Person''', not '''Persons'''
Note! From the '''Booking''' object, it's only '''one''' Person object in the association. Hence, '''Person''', not '''Persons'''


See also: [[Association classes]]
See also: [[Training:Association classes|Association classes]]
[[Category:UML]]
[[Category:UML]]
{{Edited|July|12|2024}}

Latest revision as of 15:27, 10 February 2024

Often, when you add to an association with a link class, you want to do things with the created link object.

Do this:

Association object.png

Add a method to either of the "main" classes with content similar to this:

self.Flights.add(aFlight); 
self.Bookings->select(b | b.Flight = aFlight)->first

There is an operator addReturnIndexOf0 that adds the Flight - and returns the zero based index of Booking.

self.Bookings.at0(self.Flights.addReturnIndexOf0(aFlight)).AttributeOnBooking

It adds the object at the other end to the association and looks up the created link object - in this case, a Booking object and returns it.

Please note that it's usually good to set the names on the links, both the InnerLinkName and the LinkRoleName.

In this example: this is the InnerLinkName and the LinkRoleName for the Person's end of the association.

Linkrolename.png

Note! From the Booking object, it's only one Person object in the association. Hence, Person, not Persons

See also: Association classes

This page was edited 75 days ago on 02/10/2024. What links here