Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall 645-4739 1.

Similar presentations


Presentation on theme: "CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall 645-4739 1."— Presentation transcript:

1 CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall

2 Association No necessary lifetime link Two implementations: –The first is very similar to composition, but differs in one crucial respect: where the target class is instantiated. –The second, which decouples lifetimes completely, is a bit more complex but also more flexible.

3 Revisiting Clifford Dog-Tail relationship is COMPOSITION –Dog takes responsibility for creating a Tail Dog-Collar relationship is ASSOCIATION –Dog takes NO responsibility for creating Collar

4 First implementation 3 changes to source class: 1.Declaration of instance variable 2.Assignment of existing instance to the instance variable 3.Parameter of constructor is of same type as instance variable 1 2 3

5 Dog – Collar example in Java public class Dog { private Collar _collar; public Dog(Collar collar) { _collar = collar; } 1 2 3

6 Essence of association one object can communicate with another object there is no necessary lifetime link between the two objects the objects in the relationship can change over time

7 Lifetime issue in constructor implementation the source class (Dog) does not create an instance of the target (Collar) class there is a lifetime dependency: the target (Collar) object must exist before the source (Dog) object can be created: – a Collar object must be provided in the constructor of the Dog object.

8 This occurs in this particular implementation of the relationship, but is not an essential characteristic of the relationship. Lifetime issue (continued)

9 Changing a property value We want to be able to set a new value for the property (e.g. give Clifford a new collar). How can we do that? –Using a “mutator” method.

10 Association relationship (take 2) We’ve seen one implementation of “knows a” – using a parameter in constructor: public class Dog { private Collar _collar; public Dog(Collar collar) { _collar = collar; } Now we will see a more flexible implementation.

11 Association via constructor and mutator method public class Dog { private Collar _collar; public Dog(Collar c) { _collar = c; } public void setCollar(Collar c) { _collar = c; }

12 Constructor/mutator similarity Similarity: both set the value of the instance variable. Difference: constructor sets value when Dog object is created mutator changes the value at some later point in time public class Dog { private Collar _collar; public Dog(Collar c) { _collar = c; } public void setCollar(Collar x) { _collar = x; }

13 On blackboard object diagram & memory diagram for: clifford.Collar smallCollar; smallCollar = new clifford.Collar(); clifford.Dog fido; fido = new clifford.Dog(smallCollar); clifford.Collar mediumCollar; mediumCollar = new clifford.Collar(); fido.setCollar(mediumCollar);


Download ppt "CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall 645-4739 1."

Similar presentations


Ads by Google