1 / 20

More on Objects

Learn about building new objects, accessing data, and creating constructors in Java. Discover how to protect private data and control access with getter and setter methods.

rholifield
Download Presentation

More on Objects

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. More on Objects More, more, more on Objects CS 102

  2. Where Do You Want To Go Today? • Building new objects • Accessors • this and That

  3. Caution, Objects Under Construction! • Objects have structure and structure has to be built new means create a new instance of an object • How are objects actually built? • Objects know how to do things, including how to build themselves

  4. Constructor Methods • Constructors are special methods that build new objects • Declaration looks just like a method declaration that has no result type public class Circle { double x_center, y_center, radius; public Circle(double x, double y, double r) { x_center = x; y_center = y; radius = r; } }

  5. A Few Notes on Constructors I • Don't have to declare a constructor • Java creates a default constructor public class Circle { public double x_center, y_center, radius; // Uses the default constructor public double Area() { return 3.141592654 * radius * radius; } }

  6. A Few Notes on Constructors II • Constructors have the same name as the class • No return type (why not?) • Constructor declarations are not members • Never inherited, so no hiding or overriding (More on this later)

  7. Multiple Constructors public Circle(double x, double y, double r) { x_center = x; y_center = y; radius = r; } public Circle() { x_center = 0; y_center = 0; radius = 1; } public Circle(double x, double y) { x_center = x; y_center = y; radius = 1; }

  8. Handling Multiple Constructors • How does Java tell the constructors apart? • Method signatures • Signatures include: • Name of the method • Number formal parameters • Types of formal parameters • Doesn't include the name of the parameter

  9. Method Signatures • For this method: public Circle(double x, double y, double r) • Signature is: Circle(double, double, double) • Different methods, same signature public Circle(double x, double y) public Circle(double x, double r)

  10. Back to Multiple Constructors • Multiple constructors are okay • Each constructor has to have a unique signature (All of a class's methods have to have unique signatures, not just constructors) • Method overloading: multiple versions of the same method (but with different signatures)

  11. The Linda Tripp Problem • How do we keep private data private? • Avoid having object1 mess with object2's data Example: Student objects know student's grades, but one student shouldn't modify another student's grades. • Storing invalid data • Stuffing 12-hr time into a 24-hr time object

  12. If It's Public... • Start with: public class Circle { public double x_center, y_center; public double radius, area; public Circle(double x, double y) { x_center = x; y_center = y; radius = 1; area = 3.141592654 } }

  13. …other objects can mess with it • Create a circle Circle duPont = new Circle(100, 100); // Change the area, but leave r the same duPont.Area = 11; // Now a circle with radius 1 has area 11

  14. Using private • Declare variables to be private public class Circle { private double x_center, y_center; private double radius, area; : : } • Now only Circle can modify the variables (x_center, y_center, ...)

  15. Granting Access • Other classes might need to read or write the values stored in private members • Create accessor functions • Set (or settor) • Get (or gettor) • Control access through get and set

  16. Setting and Getting • What's the difference between using get and set methods, and just making everything public? • Two benefits • Protect instance variables from outside meddling • Insulates class users from changes in variables

  17. Example from Fig 6.5 // blah, blah, blah. Set invalid values to zero. public void setTime( int h, int m, int s ) { setHour( h ); // set the hour setMinute( m ); // set the minute setSecond( s ); // set the second } // set the hour public void setHour( int h ) { hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); } // set the minute public void setMinute( int m ) { minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); } // set the second public void setSecond( int s ) { second = ( ( s >= 0 && s < 60 ) ? s : 0 ); }

  18. Me, a Name I Call Myself • How can objects refer to themselves? • Every object has a built-in reference to itself, called this • this can be used only in: • Body of a method or constructor • Initializer of an instance variable • Anywhere else is a compile-time error

  19. This is Bad, public class Circle { public double x, y; public double r, area; public Circle(double x, double y) { x = x; // This doesn't do much, because we're y = y; // just assigning parameters to themselves r = 1; area = 3.141592654 } }

  20. But this is okay public class Circle { public double x, y; public double r, area; public Circle(double x, double y) { this.x = x; // Now we're assigning the instance this.y = y; // variables to the parameters r = 1; area = 3.141592654 } } Better to avoid this mess altogether by using different names for data members and method parameters

More Related