1 / 28

CSE115: Introduction to Computer Science I

CSE115: Introduction to Computer Science I. Dr. Carl Alphonce 219 Bell Hall 645-4739 alphonce@buffalo.edu. Phones off Signs out. Announcements. Exam 2 – 2 weeks away covers material from exam 1 up to & including 10/15 review on Monday 10/18 exam on Wednesday 10/20. Agenda.

ince
Télécharger la présentation

CSE115: Introduction to Computer Science I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Phones off Signs out

  3. Announcements • Exam 2 – 2 weeks away • covers material from exam 1 up to & including 10/15 • review on Monday 10/18 • exam on Wednesday 10/20

  4. Agenda • association relationship • constructor form (last time) • accessor/mutator form (today)

  5. 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

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

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

  8. 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

  9. Lifetime issue inconstructor 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.

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

  11. 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.

  12. 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.

  13. Association viaconstructor and mutatormethod public class Dog { private Collar _collar; public Dog(Collar c) { _collar = c; } public void setCollar(Collar c) { _collar = c; } }

  14. Constructor/mutator similarity Similarity: both set the value of the instance variable. Difference: constructor sets value when Dog object is created mutatorchanges the value at some later point in time public class Dog { private Collar _collar; private Sweater _sweater; public Dog(Collarc, Sweaters) { _collar = c; _sweater = s; } public void setCollar(Collar c) { _collar = c; } }

  15. public class Dog { private Collar _collar; private Sweater _sweater; public Dog(Collarc, Sweaters) { _collar = c; _sweater = s; } public void setCollar(Collar c) { _collar = c; } public void setSweater(Sweaters) { _sweater = s; } }

  16. Retrieving a property value • Suppose an object wants to let other objects know the value of one of its properties? • How can we do that? • We can define an “accessor” method.

  17. accessor method public class Dog { private Collar _collar; public Dog(Collar collar) { _collar = collar; } public void setCollar(Collar collar) { _collar = collar; } public Collar getCollar() { return _collar; } }

  18. accessor/mutatordifferencesin function Information flowing in to method public void setCollar(Collar collar){ _collar = collar; } public Collar getCollar() { return _collar; } Information flowing out from method

  19. accessor/mutator differencesin form public void setCollar (Collar collar) a.c.m. r.t.s. name parameter list public Collar getCollar () a.c.m. r.t.s. name parameter list a.c.m. = access control modifier r.t.s. = return type specification void = no value is returned by method (note difference with constructors: no r.t.s.)

  20. Example 1 Shape s1 = new Shape(java.awt.Color.BLUE); Shape s2 = new Shape(java.awt.Color.RED); public class Shape { private java.awt.Color _color; public Shape(java.awt.Colorc) { _color = c; } ... }

  21. Example 1 Shape s1 = new Shape(java.awt.Color.BLUE); Shape s2 = new Shape(java.awt.Color.RED); Shape BLUE _color s1 Shape RED _color s2

  22. public class Shape { private java.awt.Color _color; public Shape(java.awt.Colorc) { _color = c; } public java.awt.ColorgetColor() { return _color; } public void setColor(java.awt.Colorc) { _color = c; } }

  23. Example 1 Shape s1 = new Shape(java.awt.Color.BLUE); Shape s2 = new Shape(java.awt.Color.RED); s2.setColor(s1.getColor()); Shape BLUE _color s1 Shape RED _color s2

  24. Result? • Both shapes have the same color (java.awt.Color.BLUE). • This is OK.

  25. Example 2 Dog fido = new Dog(new Collar()); Dog dino = new Dog(new Collar()); Dog _collar fido Dog _collar dino

  26. Example 2 Dog fido = new Dog(new Collar()); Dog dino = new Dog(new Collar()); dino.setCollar(fido.getCollar()); Dog _collar fido ??? Dog _collar dino

  27. Result? • Both dogs have the same collar. • ?!? • Second collar is “lost”. • :-(

  28. What could we do instead? • Try to express what the basic problem is, and what we could do instead, in plain English.

More Related