1 / 28

CSC 142 Computer Science II

Learn about objects and classes in Java, including representing objects, calling methods, and using fields. Understand the difference between value and reference types.

rubyc
Télécharger la présentation

CSC 142 Computer Science II

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. CSC 142 Computer Science II Zhen Jiang West Chester University zjiang@wcupa.edu

  2. Table of Contents • Introduction to object • Class and object • Representing objects • Calling methods • Fields • Remarks • Value vs. reference • Summary

  3. Objects data type: A category of data values. Example: integer, real number, string Java data types are divided into two sets: primitive types: Java's 8 built-in simple data types for numbers, text characters, and logic. boolean, char, byte, short, int, long, float, double object types: All other types! e.g., Scanner, System, String, Math

  4. object: An variable that contains dataand behavior. There are variables inside the object, representing its data. There are methods inside the object, representing its behavior. class: Basic building block of Java programs (what we have seen so far)‏ AND Types for objects

  5. Theoretical examples: A class Person could represent objects that store a name, height, weight, hair color, IQ, etc… and those values’ change A class Laptop could represent objects that store speed, screen size, color, dimensions, brand, etc… and the variety of status’ change Examples from Java: The class String represents objects that store text characters. The class Scanner represents objects that can tokenize streams of characters.

  6. Class and objects (Dog) • Source directory • http://www.cs.wcupa.edu/~zjiang/Dog.pdf • http://www.cs.wcupa.edu/~zjiang/DogDemo.pdf • How to run multi-class program • Current project -- <set configuration> -- <customize> -- <Properties> -- <sources> -- <add fold>

  7. Data stored in each Dog object: • Useful methods/behaviors in each Dog object:

  8. construct: To create a new object. Objects are constructed with the new keyword. Constructing objects, general syntax: <class><name> = new <class>(<arguments>); Examples: Dog scooby = new Dog( ); Scanner console = new Scanner(System.in); Q: Wait a minute! Why don’t we construct strings with new? A1: Strings are one of the most commonly used objects, so they have special syntax (quotation marks) to simplify their construction. A2: Also, you can if you want to: String s = new String(“hi”);

  9. So far, I have drawn primitive types like this: int x = 7; 7 X:

  10. Representing objects • I will represent object types like this: Dog balto = new Dog(); Balto.name = “Balto”; Fields name: breed: age: balto: “Balto” ? ? Variable, with slot in memory Reference, a pointer to the object’s data Data, in another part of memory

  11. Object variables are references to the location in memory where their data resides. • We draw references as pointers. • Actually, balto stores the address of the location in memory where its data is. Fields name: breed: age: balto: “Balto” ? ? Variable, with slot in memory Reference, a pointer to the object’s data Data, in another part of memory

  12. p1: • null is a value for all object types that says, “this object is a reference to nothing at all” • We draw null objects with a slash • Note that null objects have no memory reserved for their data! Dog p1 = null;

  13. Calling methods on objects Since the methods are bundled in the objects, calling these methods requires specifying which object we are talking to. Calling a method of an object, general syntax: <variable>.<method name>(<parameters>)‏ The results may vary from one object to another. Examples: String s1 = “Homey da Clown”; String s2 = “Bubbles the clown”; System.out.println(s1.length()); // prints 14 System.out.println(s2.length()); // prints 17 int humanYears = scooby.getAgeInHumanYears ( );

  14. When we use the “.” operator on an object, we access the stuff (methods and/or data) that the object references (or points to). • This is called dereferencing. • The “.” operator is the dereferencing operator.

  15. We have seen three ways to call methods:

  16. Fields • Fields are variables that contain data for an object. • Since the fields are bundled in the objects, referring to fields requires specifying an object. • Referring to the field of an object, general syntax: <variable>.<field name> • Examples: scooby.name = “Scooby”; Scooby.age = 42; // displays dog’s age System.out.println(“He is“ + scooby.age + “ years old, or “);

  17. Remarks • The dreaded NullPointerException Point p = null; p.x = 7; // Error! p.setLocation(0,0); // Error! • If you try to dereference a null object, it will cause a NullPointerException. Why? • This is a very common error, but one nice thing about Java is that it is often fairly easy to fix this kind of error (in my experience).

  18. Concept: An object is an instance of its class. • Each instance has its own local copy of the state and behavior defined in the class template. • Example: each Dog object has its own name, and its own getAgeInHumanYears method.

  19. Dog class state: String name, breed int age behavior: writeOutput ( ) getAgeInHumanYears ( )‏ Point object balto state: “Balto” (name) 8 (age) “Siberian Husky” (breed) behavior:getAgeInHumanYears ( ) writeOutput ( ) Point object scooby state: “Balto” (name) 8 (age) “Siberian Husky” (breed) behavior:getAgeInHumanYears ( ) writeOutput ( )

  20. Value vs. Reference • value semantics: Behavior where variables are copied when assigned to each other or passed as parameters. • Primitive types in Java use value semantics. • Modifying the value of one variable does not affect other. • Example: int x = 5; int y = x; // x = 5, y = 5 y = 17; // x = 5, y = 17 x = 8; // x = 8, y = 17

  21. Balto • reference semantics: Behavior where variables refer to a common value when assigned to each other or passed as parameters, p504-509. • Object types in Java use reference semantics. • Object variables do not store an object; they store the address of an object's location in the computer memory. We graphically represent addresses as arrows. • Example: Dog balto = new Dog ( ); balto.name = “Balto”; balto.age = 8; balto.breed = “Siberian Husky”; 8 Siberian Husky balto

  22. Balto • If two object variables are assigned the same object, the object is NOT copied; instead, the object’s address is copied. • As a result, both variables will point to the same object. • Calling a method on either variable will modify the same object. • Example: Dog balto = new Dog(); Dog myDog = balto; 8 Siberian Husky balto myDog

  23. Objects have reference semantics for several reasons: • efficiency:Objects can be large and bulky. Having to copy them every time they are passed as parameters would slow down the program. • sharing: Since objects hold important state, it is often more desirable for them to be shared by parts of the program when they're passed as parameters. Often we want the changes to occur to the same object.

  24. Objects store references, or addresses. • Comparing two objects with == will test if they have the same address. • This is NOT what you want. • DO NOT DO THIS BAD Dog balto = …; Dog scooby = …; if(balto == scooby) { … }

  25. Dog scooby = new Dog ( ); Dog mydog = new Dog ( ); Is mydog == scooby true or false? It’s false: they point to different spots in memory. So they store different addresses. But we want it to be true , obviously!

  26. All classes in Java have a built-in equals method, p513 • For the Dog class: mydog.equals(scooby) • This returns true if mydog and scooby have the same data • It doesn’t matter if they reference different locations in memory • Likewise, use !mydog.equals(scooby) instead of mydog != scooby

  27. Summary

  28. Class & object, UML representation, p331 • Multiple file project and NetBeans • Representing object • Sample program to explain the declaration (construction), method call, (attribute) field, and reference of object (value change and comparison, p509), Dog.java & DogDemo.java

More Related