SysML "shared" Property challenge as objects: two Triangles share one LineSegment edge.

Gallery
Tutorial

Here two Triangles instances sharing one edge (line segment) is represented as objects (InstanceSpecifications):

Click on the image to view it full size
There are two instances t1 and t2 of Triangle, and there are five edges e1, e2, e3, e4, e5.

There are Links from t1 to e1, e2, and the "shared" e3, each typed by the anonymous Association from Triangle to LineSegment. So the Slot in t1 corresponding to Property edge is populated with e1, e2, e3.

Similarly, there are Links from t2 to the "shared" e3, e4, e5, each typed by the anonymous Association from Triangle to LineSegment. So the Slot in t2 corresponding to Property edge is populated with e3, e4, e5.

You would definitely not want to use AggregationKind::composite, because you don't want to destroy every edge when you destroy one triangle; but AggregationKind::none "feels" too weak. There is some sense in which each triangle aggregates its edges, so AggregationKind::shared lends itself well.

Nice! You can now win beers when you go drinking with your SysML colleagues and someone challenges you to use 'shared' aggregation meaningfully. Well maybe meaningfully enough for you; can't actually guarantee you'll win that beer.

Up next
Notes
Snippets (quotes/extracts)
Visit also
Visit also (backlinks)
Related slides (includes other tutorials)
Related slides (backlinks, includes other tutorials)