1 / 18

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 – less than 2 weeks away covers material from exam 1 up to & including 10/15 review on Monday 10/18 exam on Wednesday 10/20. Agenda.

marly
Download Presentation

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 – less than 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 • null • this

  5. Parameter list difference public void setCollar(Collar collar) public Collar getCollar() Accessors and mutators can be defined for any of the instance variables declared in a class. A mutator method needs a value to set the instance variable to. The mutator method is parameterized in its behavior. An accessor method always does the same thing: it returns the current value of the instance variable. The accessor method is therefore not parameterized in its behavior.

  6. What about public/private? They are access control modifiers: they control access to members of a class (instance variables and methods are called members). A member which is public can be accessed from outside of the class definition. This is the least restrictive form of access control. A member which is private can only be accessed from inside the class definition. This is the most restrictive form of access control.

  7. Why accessors/mutators? • Why use accessors and mutators, rather than just make instance variables public? • public grants both read/write access. With accessors/mutators you can be selective in allowing just one or the other (or both). • Accessors/mutators are methods, and can do more than simply grant read/write access to instance variables (Bank account example). • Accessors/mutators can exist for “virtual” instance variables: • Many graphical objects provide both a getLocation/setLocation pair, as well as a getCenterLocation/setCenterLocation pair. In reality, only one location is stored, the other is calculated. Which is stored? Who cares? The client of the code does not need to know – the methods will do the right thing. The implementation can even change and the methods will still work correctly.

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

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

  10. 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; } }

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

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

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

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

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

  16. What could we do instead?

  17. ‘null’ • ‘null’ denotes the null reference, a reference which does not refer to any object. • We can use ‘null’ to solve the two dogs, one collar problem (see code on next slide):

  18. removeCollar rather than getCollar public class Dog { private Collar _collar; public Dog(Collar collar) { _collar = collar; } public void setCollar(Collar collar) { _collar = collar; } public Collar removeCollar() { Collar temp = _collar; _collar = null; return _collar; } }

More Related