2 Here are some UML diagrams of the relationships in Libsigc++:
4 Scopes, Handles, Objects:
5 ------------------------
7 _________ scope_ _____________
8 | Scope |*<-------<> | Object_Impl |
10 |_________|----------> | |
16 ________ scope_ | Limit |<>--+ *
17 |Handle |<*>------>| | _____________
18 | <Limit>| |__________| | Object |
21 | | (<>----------------------->) | |
22 |________| |_____________|
25 Okay here is what you are supposed to get out of this.
26 Object comes from Object_Impl with multiplicity (VI).
27 Handle<Limit> in this case forms a virtual aggregate relationship
28 with the Object it points to.
30 For future diagrams I would reduce this to
32 Handle<Limit> <>--------> Object
34 Other handle relationships are formed with different types of
35 scopes. Reference Count for example would have the same
36 diagram (but very different behavior.)
38 There is also a relation when the pointed to
39 object deletes itself when the object is removed. This is
40 a dependency that will be written as
48 ____________________ incoming_
49 | BasicSignal_::InOut| <>----------->* Slot
52 |____________________| <>----------->* Slot
59 |_____________________|
61 It is clear from here that a BasicSignal is formed from a number of different
65 Connections between a BasicSignal and a Object method:
68 | SlotData | | Object |
69 |__________| |________|
73 ___________ _____________ |
74 |BasicSignal| outgoing_ | ObjectSlot# | ----------
75 |___________|<>-------->*| | | MyObject |
77 ___________ | | |__________|
78 |Connection |----------> |_____________|