1 / 80

Chapter 6 Objects and Classes

Chapter 6 Objects and Classes. She calls out to the man on the street Sir can you help me … Oh think twice It's another day for you and me In paradise …. Objectives. To understand objects and classes and use classes to model objects (§6.2).

fausto
Download Presentation

Chapter 6 Objects and Classes

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. Chapter 6 Objects and Classes She calls out to the man on the streetSir can you help me… Oh think twiceIt's another day for you and me In paradise… Liang,Introduction to Java Programming,revised by Dai-kaiyu

  2. Objectives • To understand objects and classes and use classes to model objects (§6.2). • To learn how to declare a class and how to create an object of a class (§6.3). • To understand the roles of constructors and use constructors to create objects (§6.3). • To use UML graphical notations to describe classes and objects (§6.3). • To distinguish between object reference variables and primitive data type variables (§6.4). • To use classes in the Java library (§6.5). • To declare private data fields with appropriate get and set methods to make class easy to maintain (§6.6-6.8). • To develop methods with object arguments (§6.9). • To understand the difference between instance and static variables and methods (§6.10). • To determine the scope of variables in the context of a class (§6.11). • To use the keyword this as the reference to the current object that invokes the instance method (§6.12). • To store and process objects in arrays (§6.13). • To apply class abstraction to develop software (§6.14). • To declare inner classes (§6.17). Liang,Introduction to Java Programming,revised by Dai-kaiyu

  3. OO Programming Concepts • Object Oriented Programming (OOP) • Encapsulates data (attributes) and methods (behaviors) • Objects: An object represents an entity in the real world that can be distinctly identified • Allows objects to communicate • Well-defined interfaces Liang,Introduction to Java Programming,revised by Dai-kaiyu

  4. OO Programming Concepts • Procedural programming language • C is an example • Action-oriented • Functions are units of programming • Object-oriented programming language • Java is an example • Object-oriented • Classes are units of programming • Functions, or methods, are encapsulated in classes Liang,Introduction to Java Programming,revised by Dai-kaiyu

  5. OO Programming Concepts • Procedural programming language • Object-oriented programming language algrithom + data structure Object + messaging Liang,Introduction to Java Programming,revised by Dai-kaiyu

  6. OO Programming Concepts • Class • Programmer-defined type • Instance variable + method • Object is the instance of the Class • System analysis-Class->Object • This section discusses • How to create objects • How to use objects • OBP Vs. OOP Liang,Introduction to Java Programming,revised by Dai-kaiyu

  7. Objects An object has a unique identity, state, and behaviors. The state of an object consists of a set of datafields (also known as properties) with their current values. The behavior of an object is defined by a set of methods. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  8. Classes • Every Java class must extend another class • If class does not explicitly extend another class ,it extends java.lang.Object • class implicitly extends Object(11 methods definded in it) • Class constructor • Same name as class • Initializes instance variables of a class object • Called when program instantiates an object of that class • Can take arguments, but cannot return data types (“void” can’t either) • A constructor with no parameters is referred to as a no-arg constructor. • Class can have several constructors, through overloading Liang,Introduction to Java Programming,revised by Dai-kaiyu

  9. Without main() Classes Liang,Introduction to Java Programming,revised by Dai-kaiyu

  10. Constructors What if there is void Constructors are a special kind of methods that are invoked to construct objects. Circle() { } Circle(double newRadius) { radius = newRadius; } Demo Circle.java Liang,Introduction to Java Programming,revised by Dai-kaiyu

  11. Creating Objects Using Constructors new ClassName(); Example: new Circle(); new Circle(5.0); Liang,Introduction to Java Programming,revised by Dai-kaiyu

  12. Default Constructor A class may be declared without constructors. In this case, a no-arg constructor with an empty body is implicitly declared in the class. This constructor, called a default constructor, is provided automatically only if no constructors are explicitly declared in the class. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  13. Constructing Objects, cont. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  14. Declaring Object Reference Variables To reference an object, assign the object to a reference variable. To declare a reference variable, use the syntax: ClassName objectRefVar; Example: Circle myCircle; Liang,Introduction to Java Programming,revised by Dai-kaiyu

  15. Declaring/Creating Objectsin a Single Step ClassName objectRefVar = new ClassName(); Example: Circle myCircle = new Circle(); Create an object Assign object reference Liang,Introduction to Java Programming,revised by Dai-kaiyu

  16. Accessing Objects • Referencing the object’s data: objectRefVar.data e.g., myCircle.radius • Invoking the object’s method: objectRefVar.methodName(arguments) e.g., myCircle.findArea() Liang,Introduction to Java Programming,revised by Dai-kaiyu

  17. Example 6.1 Using Objects • Objective: Demonstrate creating objects, accessing data, and using methods. TestSimpleCircle Run Liang,Introduction to Java Programming,revised by Dai-kaiyu

  18. Trace Code Declare myCircle Circle myCircle = new Circle(5.0); SCircle yourCircle = new Circle(); yourCircle.radius = 100; myCircle no value Liang,Introduction to Java Programming,revised by Dai-kaiyu

  19. Trace Code, cont. Circle myCircle = new Circle(5.0); Circle yourCircle = new Circle(); yourCircle.radius = 100; myCircle no value Create a circle Liang,Introduction to Java Programming,revised by Dai-kaiyu

  20. Trace Code, cont. Circle myCircle = new Circle(5.0); Circle yourCircle = new Circle(); yourCircle.radius = 100; myCircle reference value Assign object reference to myCircle Liang,Introduction to Java Programming,revised by Dai-kaiyu

  21. Trace Code, cont. Circle myCircle = new Circle(5.0); Circle yourCircle = new Circle(); yourCircle.radius = 100; myCircle reference value yourCircle no value Declare yourCircle Liang,Introduction to Java Programming,revised by Dai-kaiyu

  22. Trace Code, cont. Circle myCircle = new Circle(5.0); Circle yourCircle = new Circle(); yourCircle.radius = 100; myCircle reference value yourCircle no value Create a new Circle object Liang,Introduction to Java Programming,revised by Dai-kaiyu

  23. Trace Code, cont. Circle myCircle = new Circle(5.0); Circle yourCircle = new Circle(); yourCircle.radius = 100; myCircle reference value yourCircle reference value Assign object reference to yourCircle Liang,Introduction to Java Programming,revised by Dai-kaiyu

  24. Trace Code, cont. Circle myCircle = new Circle(5.0); Circle yourCircle = new Circle(); yourCircle.radius = 100; myCircle reference value yourCircle reference value Change radius in yourCircle Liang,Introduction to Java Programming,revised by Dai-kaiyu

  25. myCircle yourCircle JBuilder Optional See Objects in JBuilder Debugger You can view the contents of an object in the debugger. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  26. Caution Recall that you use Math.methodName(arguments) (e.g., Math.pow(3, 2.5)) to invoke a method in the Math class. You can ‘t invoke findArea() using SimpleCircle.findArea. findArea() is non-static. It must be invoked from an object using objectRefVar.methodName(arguments) (e.g., myCircle.findArea()). More explanations will be given in Section 6.7, “Static Variables, Constants, and Methods.” Liang,Introduction to Java Programming,revised by Dai-kaiyu

  27. The null Value If a variable of a reference type does not reference any object, the variable holds a special literal value, null. Reference an object that has not been created would cause a runtime NullPointerException. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  28. Default Value for a Data Field The default value of a data field is • null for a reference type • 0 for a numeric type • false for a boolean type • '\u0000' for a char type. • Java assigns no default value to a local variable inside a method. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  29. Example public class Student { String name; // name has default value null int age; // age has default value 0 boolean isScienceMajor; // isScienceMajor has default value false char gender; // c has default value '\u0000' public static void main(String[] args) { Student student = new Student(); System.out.println("name? " + student.name); System.out.println("age? " + student.age); System.out.println("isScienceMajor? " + student.isScienceMajor); System.out.println("gender? " + student.gender); } } Liang,Introduction to Java Programming,revised by Dai-kaiyu

  30. Example public class Test { public static void main(String[] args) { int x; // x has no default value String y; // y has no default value System.out.println("x is " + x); System.out.println("y is " + y); } } Compilation error: variables not initialized Liang,Introduction to Java Programming,revised by Dai-kaiyu

  31. Differences between Variables of Primitive Data Types and Object Types Liang,Introduction to Java Programming,revised by Dai-kaiyu

  32. Copying Variables of Primitive Data Types and Object Types Liang,Introduction to Java Programming,revised by Dai-kaiyu

  33. Garbage Collection As shown in the previous figure, after the assignment statement c1 = c2, c1 points to the same object referenced by c2. The object previously referenced by c1 is no longer useful. This object is known as garbage. Garbage is automatically collected by JVM. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  34. Garbage Collection, cont TIP: If you know that an object is no longer needed, you can explicitly assign null to a reference variable for the object. The Java VM will automatically collect the space if the object is not referenced by any variable. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  35. Using Classes from the Java Library Example 6.1 declared the SimpleCircle class and created objects from the class. Often you will use the classes in the Java library to develop programs. You learned to obtain the current time using System.currentTimeMillis() in Example 2.5, “Displaying Current Time.” You used the division and remainder operators to extract current second, minute, and hour. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  36. The Date Class Java provides a system-independent encapsulation of date and time in the java.util.Dateclass. You can use the Date class to create an instance for the current date and time and use its toString method to return the date and time as a string. For example, the following code java.util.Date date = new java.util.Date(); System.out.println(date.toString()); displays a string like Sun Mar 09 13:50:19 EST 2003. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  37. Using the JFrame Class • Objective: Demonstrate using classes from the Java library. Use the JFrame class in the javax.swing package to create two frames; use the methods in the JFrame class to set the title, size and location of the frames and to display the frames. TestFrame Run Liang,Introduction to Java Programming,revised by Dai-kaiyu

  38. Trace Code Declare, create, and assign in one statement JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference • : JFrame • title: • width: • height: • visible: Liang,Introduction to Java Programming,revised by Dai-kaiyu

  39. Trace Code JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference Set title property • : JFrame • title: "Window 1" • width: • height: • visible: Liang,Introduction to Java Programming,revised by Dai-kaiyu

  40. Trace Code JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference Set size property • : JFrame • title: "Window 1" • width: 200 • height: 150 • visible: Liang,Introduction to Java Programming,revised by Dai-kaiyu

  41. Trace Code JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference • : JFrame • title: "Window 1" • width: 200 • height: 150 • visible: true Set visible property Liang,Introduction to Java Programming,revised by Dai-kaiyu

  42. Trace Code JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference • : JFrame • title: "Window 1" • width: 200 • height: 150 • visible: true Declare, create, and assign in one statement frame2 reference • : JFrame • title: • width: • height: • visible: Liang,Introduction to Java Programming,revised by Dai-kaiyu

  43. Trace Code JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference • : JFrame • title: "Window 1" • width: 200 • height: 150 • visible: true frame2 reference Set title property • : JFrame • title: "Window 2" • width: • height: • visible: Liang,Introduction to Java Programming,revised by Dai-kaiyu

  44. Trace Code JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference • : JFrame • title: "Window 1" • width: 200 • height: 150 • visible: true frame2 reference • : JFrame • title: "Window 2" • width: 200 • height: 150 • visible: Set size property Liang,Introduction to Java Programming,revised by Dai-kaiyu

  45. Trace Code JFrame frame1 = new JFrame(); frame1.setTitle("Window 1"); frame1.setSize(200, 150); frame1.setVisible(true); JFrame frame2 = new JFrame(); frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); frame1 reference • : JFrame • title: "Window 1" • width: 200 • height: 150 • visible: true frame2 reference • : JFrame • title: "Window 2" • width: 200 • height: 150 • visible: true Set visible property Liang,Introduction to Java Programming,revised by Dai-kaiyu

  46. Visibility Modifiers and Accessor/Mutator Methods By default, the class, variable, or method can beaccessed by any class in the same package. public The class, data, or method is visible to any class in any package. private The data or methods can be accessed only by the declaring class. The get and set methods are used to read and modify private properties. Liang,Introduction to Java Programming,revised by Dai-kaiyu

  47. The private modifier restricts access to within a class, the default modifier restricts access to within a package, and the public modifier enables unrestricted access. even the class is public, but the member is default modifier, the class not in the same package can’t access it Liang,Introduction to Java Programming,revised by Dai-kaiyu

  48. package p1; package p2; class C1{ … } public class C2{ can access C1; } public class C3{ cannot access C1; } Caution • Private not to class(except inner class) • Visibility modifier not used for local variables • Private can modify constructor Liang,Introduction to Java Programming,revised by Dai-kaiyu

  49. Encapsulation & Access modifiers • Encapsulation is the concept of hiding the internal details of an object • Access modifiers are used to control access to object or class data Liang,Introduction to Java Programming,revised by Dai-kaiyu

  50. Some issues • Helper class • not modified by “public”, so can just be accessed by the class in the same package. They support the reusable class • The sequence of finding the class (when compile or excute) • Standard classes :rt.jar • Extended classes • Class path • - classpath (can refer to a .zip or a .jar file) • Classpath environment variables System will find them automatically Liang,Introduction to Java Programming,revised by Dai-kaiyu

More Related