SlideShare a Scribd company logo
1 of 62
Download to read offline
Chapter 8 Objects and Classes




   Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                        rights reserved.
                                                                                                  1
Motivations
After learning the preceding chapters, you are capable of
solving many programming problems using selections,
loops, methods, and arrays. However, these Java features
are not sufficient for developing graphical user interfaces
and large scale software systems. Suppose you want to
develop a graphical user interface as shown below. How
do you program it?




           Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                rights reserved.
                                                                                                          2
Objectives
   To describe objects and classes, and use classes to model objects (§8.2).
   To use UML graphical notation to describe classes and objects (§8.2).
   To demonstrate how to define classes and create objects (§8.3).
   To create objects using constructors (§8.4).
   To access objects via object reference variables (§8.5).
   To define a reference variable using a reference type (§8.5.1).
   To access an object’s data and methods using the object member access operator
    (.) (§8.5.2).
   To define data fields of reference types and assign default values for an object’s
    data fields (§8.5.3).
   To distinguish between object reference variables and primitive data type
    variables (§8.5.4).
   To use the Java library classes Date, Random, and JFrame (§8.6).
   To distinguish between instance and static variables and methods (§8.7).
   To define private data fields with appropriate get and set methods (§8.8).
   To encapsulate data fields to make classes easy to maintain (§8.9).
   To develop methods with object arguments and differentiate between primitive-
    type arguments and object-type arguments (§8.10).
   To store and process objects in arrays (§8.11).
                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                3
OO Programming Concepts
Object-oriented programming (OOP) involves
programming using objects. An object represents
an entity in the real world that can be distinctly
identified. For example, a student, a desk, a circle,
a button, and even a loan can all be viewed as
objects. An object has a unique identity, state, and
behaviors. The state of an object consists of a set of
data fields (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, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                              rights reserved.
                                                                                                        4
Objects
                                     Class Name: Circle                                A class template

                                     Data Fields:
                                      radius is _______

                                     Methods:
                                      getArea




  Circle Object 1                     Circle Object 2                      Circle Object 3                         Three objects of
                                                                                                                   the Circle class
  Data Fields:                        Data Fields:                         Data Fields:
   radius is 10                        radius is 25                         radius is 125




An object has both a state and behavior. The state
defines the object, and the behavior defines what
the object does.

                    Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                         rights reserved.
                                                                                                                                 5
Classes
Classes are constructs that define objects of the
same type. A Java class uses variables to define
data fields and methods to define behaviors.
Additionally, a class provides a special type of
methods, known as constructors, which are invoked
to construct objects from the class.




        Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                             rights reserved.
                                                                                                       6
Classes
class Circle {
  /** The radius of this circle */
  double radius = 1.0;                                                                               Data field

    /** Construct a circle object */
    Circle() {
    }
                                                                                                    Constructors
    /** Construct a circle object */
    Circle(double newRadius) {
      radius = newRadius;
    }

    /** Return the area of this circle */
    double getArea() {                                                                              Method
      return radius * radius * 3.14159;
    }
}
          Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                               rights reserved.
                                                                                                             7
UML Class Diagram
  UML Class Diagram                            Circle                                   Class name

                                  radius: double                                        Data fields

                                  Circle()                                               Constructors and
                                  Circle(newRadius: double)                              methods
                                  getArea(): double



                                          circle2: Circle                              circle3: Circle           UML notation
    circle1: Circle
                                                                                                                 for objects
radius = 1.0                         radius = 25                                  radius = 125




                  Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                       rights reserved.
                                                                                                                        8
Example: Defining Classes and
         Creating Objects

 Objective:Demonstrate creating objects,
 accessing data, and using methods.




                        TestSimpleCircle                                                    Run


        Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                             rights reserved.
                                                                                                       9
Example: Defining Classes and
         Creating Objects

 Objective:Demonstrate creating objects,
 accessing data, and using methods.


                                         TV

                                    TestTV                                                  Run


        Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                             rights reserved.
                                                                                                       10
Constructors
                                                 Constructors are a special
Circle() {                                       kind of methods that are
}                                                invoked to construct objects.

Circle(double newRadius) {
  radius = newRadius;
}




     Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                          rights reserved.
                                                                                                    11
Constructors, cont.
A constructor with no parameters is referred to as a
no-arg constructor.
·    Constructors must have the same name as the
class itself.
·   Constructors do not have a return type—not
even void.
·    Constructors are invoked using the new
operator when an object is created. Constructors
play the role of initializing objects.
        Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                             rights reserved.
                                                                                                       12
Creating Objects Using
           Constructors
new ClassName();


Example:
new Circle();

new Circle(5.0);



      Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                           rights reserved.
                                                                                                     13
Default Constructor
A class may be defined 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
defined in the class.




         Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                              rights reserved.
                                                                                                        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, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                               rights reserved.
                                                                                                         15
Declaring/Creating Objects
            in a Single Step
ClassName objectRefVar = new ClassName();

                Assign object reference                           Create an object
Example:
Circle myCircle = new Circle();




           Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                rights reserved.
                                                                                                          16
Accessing Object’s Members
   Referencing the object’s data:
      objectRefVar.data
      e.g., myCircle.radius

   Invoking the object’s method:
     objectRefVar.methodName(arguments)
     e.g., myCircle.getArea()




         Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                              rights reserved.
                                                                                                        17
animation
                                           Trace Code
                                                                                             Declare myCircle


Circle myCircle = new Circle(5.0);                                                                              no value
                                                                                       myCircle
SCircle yourCircle = new Circle();

yourCircle.radius = 100;




                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                           18
animation

                                Trace Code, cont.

Circle myCircle = new Circle(5.0);                                                                              no value
                                                                                       myCircle
Circle yourCircle = new Circle();

yourCircle.radius = 100;                                                                             : Circle

                                                                                       radius: 5.0




                                                       Create a circle




                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                           19
animation

                                Trace Code, cont.

Circle myCircle = new Circle(5.0);
                                                                                       myCircle reference value
Circle yourCircle = new Circle();

yourCircle.radius = 100;                  Assign object reference                                    : Circle
                                               to myCircle
                                                                                       radius: 5.0




                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                20
animation

                                Trace Code, cont.
Circle myCircle = new Circle(5.0);
                                                                                       myCircle reference value
Circle yourCircle = new Circle();

yourCircle.radius = 100;                                                                             : Circle

                                                                                       radius: 5.0


                                                                                       yourCircle               no value




                                                                                        Declare yourCircle



                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                           21
animation

                                Trace Code, cont.
Circle myCircle = new Circle(5.0);
                                                                                       myCircle reference value
Circle yourCircle = new Circle();

yourCircle.radius = 100;                                                                             : Circle

                                                                                       radius: 5.0


                                                                                       yourCircle               no value



                                                                                                         : Circle
                                                    Create a new                            radius: 1.0
                                                    Circle object



                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                           22
animation

                                Trace Code, cont.
Circle myCircle = new Circle(5.0);
                                                                                       myCircle reference value
Circle yourCircle = new Circle();

yourCircle.radius = 100;                                                                             : Circle

                                                                                       radius: 5.0


                                                                                       yourCircle reference value

                                             Assign object reference
                                                  to yourCircle                                          : Circle

                                                                                            radius: 1.0




                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                    23
animation

                                Trace Code, cont.
Circle myCircle = new Circle(5.0);
                                                                                       myCircle reference value
Circle yourCircle = new Circle();

yourCircle.radius = 100;                                                                             : Circle

                                                                                       radius: 5.0


                                                                                       yourCircle reference value



                                                                                                         : Circle
                                         Change radius in                                   radius: 100.0
                                           yourCircle


                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                    24
Caution
Recall that you use
     Math.methodName(arguments) (e.g., Math.pow(3, 2.5))


to invoke a method in the Math class. Can you invoke getArea() using
Circle1.getArea()? The answer is no. All the methods used before this
chapter are static methods, which are defined using the static keyword.
However, getArea() is non-static. It must be invoked from an object
using

     objectRefVar.methodName(arguments) (e.g., myCircle.getArea()).


More explanations will be given in the section on “Static Variables,
Constants, and Methods.”

             Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                  rights reserved.
                                                                                                            25
Reference Data Fields
The data fields can be of reference types. For example,
the following Student class contains a data field name of
the String type.

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'
}




            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                           26
The null Value
If a data field of a reference type does not
reference any object, the data field holds a
special literal value, null.




        Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                             rights reserved.
                                                                                                       27
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, and 'u0000' for a char type.
However, Java assigns no default value to a local
variable inside a method.
public class Test {
  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, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                           28
Example
Java assigns no default value to a local variable
inside a method.
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, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                               rights reserved.
                                                                                                         29
Differences between Variables of
Primitive Data Types and Object Types
                                                                                                Created using new Circle()
Primitive type          int i = 1              i                1

Object type             Circle c              c          reference                                           c: Circle

                                                                                                        radius = 1




              Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                   rights reserved.
                                                                                                                         30
Copying Variables of Primitive
      Data Types and Object Types
      Primitive type assignment i = j

Before:                           After:

i         1                       i          2


j         2                       j          2

                                                                            Object type assignment c1 = c2

                                                        Before:                                                  After:

                                                      c1                                                        c1


                                                      c2                                                        c2


                                                    c1: Circle           C2: Circle                         c1: Circle    C2: Circle
                                                    radius = 5           radius = 9                         radius = 5    radius = 9


                 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                      rights reserved.
                                                                                                                          31
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 referenced. This object is known as
garbage. Garbage is automatically
collected by JVM.


      Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                           rights reserved.
                                                                                                     32
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 JVM will automatically
 collect the space if the object is not
 referenced by any variable.



     Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                          rights reserved.
                                                                                                    33
The Date Class
 Java provides a system-independent encapsulation of date
 and time in the java.util.Date class. 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.

                                           java.util.Date
The + sign indicates
public modifer               +Date()                                          Constructs a Date object for the current time.
                             +Date(elapseTime: long)                          Constructs a Date object for a given time in
                                                                                milliseconds elapsed since January 1, 1970, GMT.
                             +toString(): String                              Returns a string representing the date and time.
                             +getTime(): long                                 Returns the number of milliseconds since January 1,
                                                                                1970, GMT.
                             +setTime(elapseTime: long): void                 Sets a new elapse time in the object.




                       Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                            rights reserved.
                                                                                                                         34
The Date Class Example
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, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                              rights reserved.
                                                                                                        35
The Random Class
You have used Math.random() to obtain a random double
value between 0.0 and 1.0 (excluding 1.0). A more useful
random number generator is provided in the java.util.Random
class.
      java.util.Random
 +Random()                           Constructs a Random object with the current time as its seed.
 +Random(seed: long)                 Constructs a Random object with a specified seed.
 +nextInt(): int                     Returns a random int value.
 +nextInt(n: int): int               Returns a random int value between 0 and n (exclusive).
 +nextLong(): long                   Returns a random long value.
 +nextDouble(): double               Returns a random double value between 0.0 and 1.0 (exclusive).
 +nextFloat(): float                 Returns a random float value between 0.0F and 1.0F (exclusive).
 +nextBoolean(): boolean             Returns a random boolean value.

                   Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                        rights reserved.
                                                                                                                  36
The Random Class Example
If two Random objects have the same seed, they will generate
identical sequences of numbers. For example, the following
code creates two Random objects with the same seed 3.
Random random1 = new Random(3);
System.out.print("From random1: ");
for (int i = 0; i < 10; i++)
  System.out.print(random1.nextInt(1000) + " ");
Random random2 = new Random(3);
System.out.print("nFrom random2: ");
for (int i = 0; i < 10; i++)
  System.out.print(random2.nextInt(1000) + " ");


            From random1: 734 660 210 581 128 202 549 564 459 961
            From random2: 734 660 210 581 128 202 549 564 459 961

            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                           37
Displaying GUI Components
When you develop programs to create graphical user
interfaces, you will use Java classes such as JFrame,
JButton, JRadioButton, JComboBox, and JList to
create frames, buttons, radio buttons, combo boxes,
lists, and so on. Here is an example that creates two
windows using the JFrame class.



                                       TestFrame                                                         Run

          Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                               rights reserved.
                                                                                                               38
animation
                                       Trace Code                                                            Declare, create,
                                                                                                            and assign in one
                                                                                                               statement
JFrame frame1 = new JFrame();                                 frame1 reference
frame1.setTitle("Window 1");
                                                                                : JFrame
frame1.setSize(200, 150);                                               title:
frame1.setVisible(true); JFrame                                         width:
frame2 = new JFrame();                                                  height:
                                                                        visible:
frame2.setTitle("Window 2");
frame2.setSize(200, 150);
frame2.setVisible(true);




             Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                  rights reserved.
                                                                                                                        39
animation
                                       Trace Code
JFrame frame1 = new JFrame();                                 frame1 reference
                                                                                                            Set title property
frame1.setTitle("Window 1");
                                                                               : JFrame
frame1.setSize(200, 150);                                               title: "Window 1"
frame1.setVisible(true); JFrame                                         width:
frame2 = new JFrame();                                                  height:
                                                                        visible:
frame2.setTitle("Window 2");
frame2.setSize(200, 150);
frame2.setVisible(true);




             Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                  rights reserved.
                                                                                                                        40
animation
                                      Trace Code
JFrame frame1 = new JFrame();                                frame1 reference
frame1.setTitle("Window 1");
                                                                              : JFrame                     Set size property
frame1.setSize(200, 150);                                              title: "Window 1"
frame1.setVisible(true);                                               width: 200
JFrame frame2 = new JFrame();                                          height: 150
                                                                       visible:
frame2.setTitle("Window 2");
frame2.setSize(200, 150);
frame2.setVisible(true);




            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                                     41
animation
                                      Trace Code
JFrame frame1 = new JFrame();                                frame1 reference
frame1.setTitle("Window 1");
                                                                              : JFrame
frame1.setSize(200, 150);                                              title: "Window 1"
frame1.setVisible(true);                                               width: 200                          Set visible
                                                                       height: 150                          property
JFrame frame2 = new JFrame();
                                                                       visible: true
frame2.setTitle("Window 2");
frame2.setSize(200, 150);
frame2.setVisible(true);




            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                                  42
animation
                                      Trace Code
JFrame frame1 = new JFrame();                                frame1 reference
frame1.setTitle("Window 1");
                                                                              : JFrame
frame1.setSize(200, 150);                                              title: "Window 1"
frame1.setVisible(true);                                               width: 200
JFrame frame2 = new JFrame();                                          height: 150
                                                                       visible: true
frame2.setTitle("Window 2");
frame2.setSize(200, 150);                                                                                   Declare, create,
                                                            frame2 reference                               and assign in one
frame2.setVisible(true);                                                                                      statement
                                                                              : JFrame
                                                                      title:
                                                                      width:
                                                                      height:
                                                                      visible:




            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                                      43
animation
                                      Trace Code
JFrame frame1 = new JFrame();                                frame1 reference
frame1.setTitle("Window 1");
                                                                              : JFrame
frame1.setSize(200, 150);                                              title: "Window 1"
frame1.setVisible(true);                                               width: 200
JFrame frame2 = new JFrame();                                          height: 150
                                                                       visible: true
frame2.setTitle("Window 2");
frame2.setSize(200, 150);                                   frame2 reference
frame2.setVisible(true);
                                                                                                           Set title property
                                                                             : JFrame
                                                                      title: "Window 2"
                                                                      width:
                                                                      height:
                                                                      visible:




            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                                     44
animation
                                      Trace Code
JFrame frame1 = new JFrame();                                frame1 reference
frame1.setTitle("Window 1");
                                                                              : JFrame
frame1.setSize(200, 150);                                              title: "Window 1"
frame1.setVisible(true);                                               width: 200
JFrame frame2 = new JFrame();                                          height: 150
                                                                       visible: true
frame2.setTitle("Window 2");
frame2.setSize(200, 150);                                   frame2 reference
frame2.setVisible(true);
                                                                             : JFrame
                                                                      title: "Window 2"                    Set size property
                                                                      width: 200
                                                                      height: 150
                                                                      visible:




            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                                     45
animation
                                      Trace Code
JFrame frame1 = new JFrame();                                frame1 reference
frame1.setTitle("Window 1");
                                                                              : JFrame
frame1.setSize(200, 150);                                              title: "Window 1"
frame1.setVisible(true);                                               width: 200
JFrame frame2 = new JFrame();                                          height: 150
                                                                       visible: true
frame2.setTitle("Window 2");
frame2.setSize(200, 150);                                   frame2 reference
frame2.setVisible(true);
                                                                             : JFrame
                                                                      title: "Window 2"
                                                                                                           Set visible
                                                                      width: 200
                                                                                                            property
                                                                      height: 150
                                                                      visible: true




            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                                  46
Adding GUI Components to Window
You can add graphical user interface components,
such as buttons, labels, text fields, combo boxes,
lists, and menus, to the window. The components are
defined using classes. Here is an example to create
buttons, labels, text fields, check boxes, radio
buttons, and combo boxes.



                              GUIComponents                                                             Run

         Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                              rights reserved.
                                                                                                              47
Instance
        Variables, and Methods


Instance variables belong to a specific instance.

Instance methods are invoked by an instance of
the class.



       Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                            rights reserved.
                                                                                                      48
Static Variables, Constants,
              and Methods
Static variables are shared by all the instances of the
class.

Static methods are not tied to a specific object.
Static constants are final variables shared by all the
instances of the class.



         Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                              rights reserved.
                                                                                                        49
Static Variables, Constants,
          and Methods, cont.

To declare static variables, constants, and methods,
use the static modifier.




         Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                              rights reserved.
                                                                                                        50
Static Variables, Constants,
                           and Methods, cont.
                                              instantiate
                                                                     circle1                       Memory

                                                             radius = 1                                1         radius              After two Circle
                  Circle                                     numberOfObjects = 2                                                     objects were created,
                                                                                                                                     numberOfObjects
radius: double                                                                                                                       is 2.
numberOfObjects: int
                                                                                                        2          numberOfObjects
getNumberOfObjects(): int
+getArea(): double                             instantiate
                                                                     circle2

                                                             radius = 5                                 5         radius
UML Notation:                                                numberOfObjects = 2
 +: public variables or methods
 underline: static variables or methods




                              Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                                   rights reserved.
                                                                                                                                            51
Example of
Using Instance and Class Variables
           and Method
 Objective: Demonstrate the roles of
 instance and class variables and their
 uses. This example adds a class variable
 numberOfObjects to track the number of
 Circle objects created.
   CircleWithStaticMembers

  TestCircleWithStaticMembers                                                     Run
      Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                           rights reserved.
                                                                                                     52
Visibility Modifiers and
         Accessor/Mutator Methods
    By default, the class, variable, or method can be
    accessed 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, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                 rights reserved.
                                                                                                           53
package p1;                                                                               package p2;
  public class C1 {                  public class C2 {                                        public class C3 {
    public int x;                      void aMethod() {                                         void aMethod() {
    int y;                               C1 o = new C1();                                         C1 o = new C1();
    private int z;                       can access o.x;                                          can access o.x;
                                         can access o.y;                                          cannot access o.y;
      public void m1() {                 cannot access o.z;                                       cannot access o.z;
      }
      void m2() {                            can invoke o.m1();                                       can invoke o.m1();
      }                                      can invoke o.m2();                                       cannot invoke o.m2();
      private void m3() {                    cannot invoke o.m3();                                    cannot invoke o.m3();
      }                                  }                                                        }
  }                                  }                                                        }




 package p1;                                                                            package p2;
      class C1 {                    public class C2 {                                         public class C3 {
        ...                           can access C1                                             cannot access C1;
      }                             }                                                           can access C2;
                                                                                              }

   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.
                   Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                        rights reserved.
                                                                                                                      54
NOTE
An object cannot access its private members, as shown in (b).
It is OK, however, if the object is declared in its own class, as
shown in (a).
public class F {                                                              public class Test {
  private boolean x;                                                            public static void main(String[] args) {
                                                                                  Foo f = new F();
    public static void main(String[] args) {                                      System.out.println(f.x);
      F f = new F ();                                                             System.out.println(f.convert(f.x));
      System.out.println(f.x);                                                  }
      System.out.println(f.convert());                                        }
    }

    private int convert(boolean b) {
      return x ? 1 : -1;
    }
}
                                                                                    (b) This is wrong because x and convert are private in F.
    (a) This is OK because object f is used inside the F class




                            Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                                 rights reserved.
                                                                                                                                                55
Why Data Fields Should Be
            private?
To protect data.

To make class easy to maintain.




       Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                            rights reserved.
                                                                                                      56
Example of
                       Data Field Encapsulation
                                               Circle
The - sign indicates
private modifier           -radius: double                                   The radius of this circle (default: 1.0).
                           -numberOfObjects: int                             The number of circle objects created.

                           +Circle()                                         Constructs a default circle object.
                           +Circle(radius: double)                           Constructs a circle object with the specified radius.
                           +getRadius(): double                              Returns the radius of this circle.
                           +setRadius(radius: double): void                  Sets a new radius for this circle.
                           +getNumberOfObject(): int                         Returns the number of circle objects created.
                           +getArea(): double                                Returns the area of this circle.



             CircleWithPrivateDataFields

         TestCircleWithPrivateDataFields                                                                  Run
                       Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                            rights reserved.
                                                                                                                          57
Passing Objects to Methods

 Passing by value for primitive type value
 (the value is passed to the parameter)
 Passing by value for reference type value
 (the value is the reference to the object)

                             TestPassObject                                                          Run




      Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                           rights reserved.
                                                                                                           58
Passing Objects to Methods, cont.

Stack                                    Pass by value (here
                                         the value is 5)
Space required for the
printAreas method                                                  Pass by value
    int times: 5                                                   (here the value is
 Circle c: reference                                               the reference for
                                                                   the object)                              Heap
Space required for the
main method
  int n: 5                                                                                                   A circle
  myCircle: reference                                                                                        object




             Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                  rights reserved.
                                                                                                               59
Array of Objects
Circle[] circleArray = new Circle[10];


An array of objects is actually an array of
 reference variables. So invoking
 circleArray[1].getArea() involves two
 levels of referencing as shown in the next
 figure. circleArray references to the entire
 array. circleArray[1] references to a
 Circle object.
       Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                            rights reserved.
                                                                                                      60
Array of Objects, cont.
  Circle[] circleArray = new Circle[10];




circleArray    reference                                     circleArray[0]                                  Circle object 0
                                                             circleArray[1]

                                                                       …                                     Circle object 1


                                                             circleArray[9]                                  Circle object 9




              Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                                   rights reserved.
                                                                                                                      61
Array of Objects, cont.
Summarizing the areas of the circles




                                                  TotalArea                                           Run
       Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All
                                            rights reserved.
                                                                                                        62

More Related Content

What's hot

Defining classes-and-objects-1.0
Defining classes-and-objects-1.0Defining classes-and-objects-1.0
Defining classes-and-objects-1.0BG Java EE Course
 
M Gumbel - SCABIO: a framework for bioinformatics algorithms in Scala
M Gumbel - SCABIO: a framework for bioinformatics algorithms in ScalaM Gumbel - SCABIO: a framework for bioinformatics algorithms in Scala
M Gumbel - SCABIO: a framework for bioinformatics algorithms in ScalaJan Aerts
 
Scala categorytheory
Scala categorytheoryScala categorytheory
Scala categorytheoryKnoldus Inc.
 
Lecture 4_Java Method-constructor_imp_keywords
Lecture   4_Java Method-constructor_imp_keywordsLecture   4_Java Method-constructor_imp_keywords
Lecture 4_Java Method-constructor_imp_keywordsmanish kumar
 
Python unit 3 m.sc cs
Python unit 3 m.sc csPython unit 3 m.sc cs
Python unit 3 m.sc csKALAISELVI P
 
Object and Classes in Java
Object and Classes in JavaObject and Classes in Java
Object and Classes in Javabackdoor
 
Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes Uzair Salman
 
Brief Summary Of C++
Brief Summary Of C++Brief Summary Of C++
Brief Summary Of C++Haris Lye
 

What's hot (19)

Defining classes-and-objects-1.0
Defining classes-and-objects-1.0Defining classes-and-objects-1.0
Defining classes-and-objects-1.0
 
Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674Core java complete notes - Contact at +91-814-614-5674
Core java complete notes - Contact at +91-814-614-5674
 
Java basic
Java basicJava basic
Java basic
 
oops-1
oops-1oops-1
oops-1
 
Unit i
Unit iUnit i
Unit i
 
Lecture 7 arrays
Lecture   7 arraysLecture   7 arrays
Lecture 7 arrays
 
Class or Object
Class or ObjectClass or Object
Class or Object
 
Chapter 05 classes and objects
Chapter 05 classes and objectsChapter 05 classes and objects
Chapter 05 classes and objects
 
JAVA CONCEPTS
JAVA CONCEPTS JAVA CONCEPTS
JAVA CONCEPTS
 
M Gumbel - SCABIO: a framework for bioinformatics algorithms in Scala
M Gumbel - SCABIO: a framework for bioinformatics algorithms in ScalaM Gumbel - SCABIO: a framework for bioinformatics algorithms in Scala
M Gumbel - SCABIO: a framework for bioinformatics algorithms in Scala
 
Scala categorytheory
Scala categorytheoryScala categorytheory
Scala categorytheory
 
Csharp_Chap03
Csharp_Chap03Csharp_Chap03
Csharp_Chap03
 
JavaYDL6
JavaYDL6JavaYDL6
JavaYDL6
 
Getting Started With Scala
Getting Started With ScalaGetting Started With Scala
Getting Started With Scala
 
Lecture 4_Java Method-constructor_imp_keywords
Lecture   4_Java Method-constructor_imp_keywordsLecture   4_Java Method-constructor_imp_keywords
Lecture 4_Java Method-constructor_imp_keywords
 
Python unit 3 m.sc cs
Python unit 3 m.sc csPython unit 3 m.sc cs
Python unit 3 m.sc cs
 
Object and Classes in Java
Object and Classes in JavaObject and Classes in Java
Object and Classes in Java
 
Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes
 
Brief Summary Of C++
Brief Summary Of C++Brief Summary Of C++
Brief Summary Of C++
 

Viewers also liked

Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02
Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02
Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02Anh Quoc
 
Peer to peer
Peer to peerPeer to peer
Peer to peerAnh Quoc
 
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)Anh Quoc
 

Viewers also liked (8)

13slide graphics
13slide graphics13slide graphics
13slide graphics
 
04slide
04slide04slide
04slide
 
12slide
12slide12slide
12slide
 
01slide
01slide01slide
01slide
 
07slide
07slide07slide
07slide
 
Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02
Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02
Bai giang-an-toan-va-bao-mat-he-thong-thong-tin-lxt-121219110644-phpapp02
 
Peer to peer
Peer to peerPeer to peer
Peer to peer
 
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
 

Similar to 08slide

09slide.ppt oops classes and objects concept
09slide.ppt oops classes and objects concept09slide.ppt oops classes and objects concept
09slide.ppt oops classes and objects conceptkavitamittal18
 
Java™ (OOP) - Chapter 8: "Objects and Classes"
Java™ (OOP) - Chapter 8: "Objects and Classes"Java™ (OOP) - Chapter 8: "Objects and Classes"
Java™ (OOP) - Chapter 8: "Objects and Classes"Gouda Mando
 
Class and Object.ppt
Class and Object.pptClass and Object.ppt
Class and Object.pptGenta Sahuri
 
Lect 1-class and object
Lect 1-class and objectLect 1-class and object
Lect 1-class and objectFajar Baskoro
 
packages and interfaces
packages and interfacespackages and interfaces
packages and interfacesmadhavi patil
 
Unit 1 Part - 2 Class Object.ppt
Unit 1 Part - 2 Class Object.pptUnit 1 Part - 2 Class Object.ppt
Unit 1 Part - 2 Class Object.pptDeepVala5
 
Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2Mahmoud Alfarra
 
Object and class in java
Object and class in javaObject and class in java
Object and class in javaUmamaheshwariv1
 
Core java complete notes - PAID call at +91-814-614-5674
Core java complete notes - PAID call at +91-814-614-5674Core java complete notes - PAID call at +91-814-614-5674
Core java complete notes - PAID call at +91-814-614-5674WebKrit Infocom
 
OO Development 4 - Object Concepts
OO Development 4 - Object ConceptsOO Development 4 - Object Concepts
OO Development 4 - Object ConceptsRandy Connolly
 
Class and Object.pptx
Class and Object.pptxClass and Object.pptx
Class and Object.pptxHailsh
 

Similar to 08slide (20)

09slide.ppt oops classes and objects concept
09slide.ppt oops classes and objects concept09slide.ppt oops classes and objects concept
09slide.ppt oops classes and objects concept
 
09slide.ppt
09slide.ppt09slide.ppt
09slide.ppt
 
slides 01.ppt
slides 01.pptslides 01.ppt
slides 01.ppt
 
Java™ (OOP) - Chapter 8: "Objects and Classes"
Java™ (OOP) - Chapter 8: "Objects and Classes"Java™ (OOP) - Chapter 8: "Objects and Classes"
Java™ (OOP) - Chapter 8: "Objects and Classes"
 
Class and Object.ppt
Class and Object.pptClass and Object.ppt
Class and Object.ppt
 
Lect 1-class and object
Lect 1-class and objectLect 1-class and object
Lect 1-class and object
 
Java sem i
Java sem iJava sem i
Java sem i
 
packages and interfaces
packages and interfacespackages and interfaces
packages and interfaces
 
Unit 1 Part - 2 Class Object.ppt
Unit 1 Part - 2 Class Object.pptUnit 1 Part - 2 Class Object.ppt
Unit 1 Part - 2 Class Object.ppt
 
Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2
 
07slide.ppt
07slide.ppt07slide.ppt
07slide.ppt
 
Object and class in java
Object and class in javaObject and class in java
Object and class in java
 
Object & classes
Object & classes Object & classes
Object & classes
 
Lecture 2 classes i
Lecture 2 classes iLecture 2 classes i
Lecture 2 classes i
 
10slide.ppt
10slide.ppt10slide.ppt
10slide.ppt
 
Core java complete notes - PAID call at +91-814-614-5674
Core java complete notes - PAID call at +91-814-614-5674Core java complete notes - PAID call at +91-814-614-5674
Core java complete notes - PAID call at +91-814-614-5674
 
OO Development 4 - Object Concepts
OO Development 4 - Object ConceptsOO Development 4 - Object Concepts
OO Development 4 - Object Concepts
 
06slide
06slide06slide
06slide
 
ch:8CS112
ch:8CS112ch:8CS112
ch:8CS112
 
Class and Object.pptx
Class and Object.pptxClass and Object.pptx
Class and Object.pptx
 

Recently uploaded

LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0DanBrown980551
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxNeo4j
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024Brian Pichman
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3DianaGray10
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and businessFrancesco Corti
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfTejal81
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptxHansamali Gamage
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Alkin Tezuysal
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingMAGNIntelligence
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosErol GIRAUDY
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingFrancesco Corti
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 

Recently uploaded (20)

LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and business
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced Computing
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenarios
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is going
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 

08slide

  • 1. Chapter 8 Objects and Classes Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1
  • 2. Motivations After learning the preceding chapters, you are capable of solving many programming problems using selections, loops, methods, and arrays. However, these Java features are not sufficient for developing graphical user interfaces and large scale software systems. Suppose you want to develop a graphical user interface as shown below. How do you program it? Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 2
  • 3. Objectives  To describe objects and classes, and use classes to model objects (§8.2).  To use UML graphical notation to describe classes and objects (§8.2).  To demonstrate how to define classes and create objects (§8.3).  To create objects using constructors (§8.4).  To access objects via object reference variables (§8.5).  To define a reference variable using a reference type (§8.5.1).  To access an object’s data and methods using the object member access operator (.) (§8.5.2).  To define data fields of reference types and assign default values for an object’s data fields (§8.5.3).  To distinguish between object reference variables and primitive data type variables (§8.5.4).  To use the Java library classes Date, Random, and JFrame (§8.6).  To distinguish between instance and static variables and methods (§8.7).  To define private data fields with appropriate get and set methods (§8.8).  To encapsulate data fields to make classes easy to maintain (§8.9).  To develop methods with object arguments and differentiate between primitive- type arguments and object-type arguments (§8.10).  To store and process objects in arrays (§8.11). Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 3
  • 4. OO Programming Concepts Object-oriented programming (OOP) involves programming using objects. An object represents an entity in the real world that can be distinctly identified. For example, a student, a desk, a circle, a button, and even a loan can all be viewed as objects. An object has a unique identity, state, and behaviors. The state of an object consists of a set of data fields (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, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 4
  • 5. Objects Class Name: Circle A class template Data Fields: radius is _______ Methods: getArea Circle Object 1 Circle Object 2 Circle Object 3 Three objects of the Circle class Data Fields: Data Fields: Data Fields: radius is 10 radius is 25 radius is 125 An object has both a state and behavior. The state defines the object, and the behavior defines what the object does. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 5
  • 6. Classes Classes are constructs that define objects of the same type. A Java class uses variables to define data fields and methods to define behaviors. Additionally, a class provides a special type of methods, known as constructors, which are invoked to construct objects from the class. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 6
  • 7. Classes class Circle { /** The radius of this circle */ double radius = 1.0; Data field /** Construct a circle object */ Circle() { } Constructors /** Construct a circle object */ Circle(double newRadius) { radius = newRadius; } /** Return the area of this circle */ double getArea() { Method return radius * radius * 3.14159; } } Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 7
  • 8. UML Class Diagram UML Class Diagram Circle Class name radius: double Data fields Circle() Constructors and Circle(newRadius: double) methods getArea(): double circle2: Circle circle3: Circle UML notation circle1: Circle for objects radius = 1.0 radius = 25 radius = 125 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 8
  • 9. Example: Defining Classes and Creating Objects  Objective:Demonstrate creating objects, accessing data, and using methods. TestSimpleCircle Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 9
  • 10. Example: Defining Classes and Creating Objects  Objective:Demonstrate creating objects, accessing data, and using methods. TV TestTV Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 10
  • 11. Constructors Constructors are a special Circle() { kind of methods that are } invoked to construct objects. Circle(double newRadius) { radius = newRadius; } Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 11
  • 12. Constructors, cont. A constructor with no parameters is referred to as a no-arg constructor. · Constructors must have the same name as the class itself. · Constructors do not have a return type—not even void. · Constructors are invoked using the new operator when an object is created. Constructors play the role of initializing objects. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 12
  • 13. Creating Objects Using Constructors new ClassName(); Example: new Circle(); new Circle(5.0); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 13
  • 14. Default Constructor A class may be defined 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 defined in the class. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 14
  • 15. 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, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 15
  • 16. Declaring/Creating Objects in a Single Step ClassName objectRefVar = new ClassName(); Assign object reference Create an object Example: Circle myCircle = new Circle(); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 16
  • 17. Accessing Object’s Members  Referencing the object’s data: objectRefVar.data e.g., myCircle.radius  Invoking the object’s method: objectRefVar.methodName(arguments) e.g., myCircle.getArea() Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 17
  • 18. animation Trace Code Declare myCircle Circle myCircle = new Circle(5.0); no value myCircle SCircle yourCircle = new Circle(); yourCircle.radius = 100; Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 18
  • 19. animation Trace Code, cont. Circle myCircle = new Circle(5.0); no value myCircle Circle yourCircle = new Circle(); yourCircle.radius = 100; : Circle radius: 5.0 Create a circle Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 19
  • 20. animation Trace Code, cont. Circle myCircle = new Circle(5.0); myCircle reference value Circle yourCircle = new Circle(); yourCircle.radius = 100; Assign object reference : Circle to myCircle radius: 5.0 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 20
  • 21. animation Trace Code, cont. Circle myCircle = new Circle(5.0); myCircle reference value Circle yourCircle = new Circle(); yourCircle.radius = 100; : Circle radius: 5.0 yourCircle no value Declare yourCircle Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 21
  • 22. animation Trace Code, cont. Circle myCircle = new Circle(5.0); myCircle reference value Circle yourCircle = new Circle(); yourCircle.radius = 100; : Circle radius: 5.0 yourCircle no value : Circle Create a new radius: 1.0 Circle object Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 22
  • 23. animation Trace Code, cont. Circle myCircle = new Circle(5.0); myCircle reference value Circle yourCircle = new Circle(); yourCircle.radius = 100; : Circle radius: 5.0 yourCircle reference value Assign object reference to yourCircle : Circle radius: 1.0 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 23
  • 24. animation Trace Code, cont. Circle myCircle = new Circle(5.0); myCircle reference value Circle yourCircle = new Circle(); yourCircle.radius = 100; : Circle radius: 5.0 yourCircle reference value : Circle Change radius in radius: 100.0 yourCircle Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 24
  • 25. Caution Recall that you use Math.methodName(arguments) (e.g., Math.pow(3, 2.5)) to invoke a method in the Math class. Can you invoke getArea() using Circle1.getArea()? The answer is no. All the methods used before this chapter are static methods, which are defined using the static keyword. However, getArea() is non-static. It must be invoked from an object using objectRefVar.methodName(arguments) (e.g., myCircle.getArea()). More explanations will be given in the section on “Static Variables, Constants, and Methods.” Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 25
  • 26. Reference Data Fields The data fields can be of reference types. For example, the following Student class contains a data field name of the String type. 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' } Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 26
  • 27. The null Value If a data field of a reference type does not reference any object, the data field holds a special literal value, null. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 27
  • 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, and 'u0000' for a char type. However, Java assigns no default value to a local variable inside a method. public class Test { 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, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 28
  • 29. Example Java assigns no default value to a local variable inside a method. 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, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 29
  • 30. Differences between Variables of Primitive Data Types and Object Types Created using new Circle() Primitive type int i = 1 i 1 Object type Circle c c reference c: Circle radius = 1 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 30
  • 31. Copying Variables of Primitive Data Types and Object Types Primitive type assignment i = j Before: After: i 1 i 2 j 2 j 2 Object type assignment c1 = c2 Before: After: c1 c1 c2 c2 c1: Circle C2: Circle c1: Circle C2: Circle radius = 5 radius = 9 radius = 5 radius = 9 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 31
  • 32. 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 referenced. This object is known as garbage. Garbage is automatically collected by JVM. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 32
  • 33. 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 JVM will automatically collect the space if the object is not referenced by any variable. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 33
  • 34. The Date Class Java provides a system-independent encapsulation of date and time in the java.util.Date class. 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. java.util.Date The + sign indicates public modifer +Date() Constructs a Date object for the current time. +Date(elapseTime: long) Constructs a Date object for a given time in milliseconds elapsed since January 1, 1970, GMT. +toString(): String Returns a string representing the date and time. +getTime(): long Returns the number of milliseconds since January 1, 1970, GMT. +setTime(elapseTime: long): void Sets a new elapse time in the object. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 34
  • 35. The Date Class Example 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, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 35
  • 36. The Random Class You have used Math.random() to obtain a random double value between 0.0 and 1.0 (excluding 1.0). A more useful random number generator is provided in the java.util.Random class. java.util.Random +Random() Constructs a Random object with the current time as its seed. +Random(seed: long) Constructs a Random object with a specified seed. +nextInt(): int Returns a random int value. +nextInt(n: int): int Returns a random int value between 0 and n (exclusive). +nextLong(): long Returns a random long value. +nextDouble(): double Returns a random double value between 0.0 and 1.0 (exclusive). +nextFloat(): float Returns a random float value between 0.0F and 1.0F (exclusive). +nextBoolean(): boolean Returns a random boolean value. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 36
  • 37. The Random Class Example If two Random objects have the same seed, they will generate identical sequences of numbers. For example, the following code creates two Random objects with the same seed 3. Random random1 = new Random(3); System.out.print("From random1: "); for (int i = 0; i < 10; i++) System.out.print(random1.nextInt(1000) + " "); Random random2 = new Random(3); System.out.print("nFrom random2: "); for (int i = 0; i < 10; i++) System.out.print(random2.nextInt(1000) + " "); From random1: 734 660 210 581 128 202 549 564 459 961 From random2: 734 660 210 581 128 202 549 564 459 961 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 37
  • 38. Displaying GUI Components When you develop programs to create graphical user interfaces, you will use Java classes such as JFrame, JButton, JRadioButton, JComboBox, and JList to create frames, buttons, radio buttons, combo boxes, lists, and so on. Here is an example that creates two windows using the JFrame class. TestFrame Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 38
  • 39. animation Trace Code Declare, create, and assign in one statement JFrame frame1 = new JFrame(); frame1 reference frame1.setTitle("Window 1"); : JFrame frame1.setSize(200, 150); title: frame1.setVisible(true); JFrame width: frame2 = new JFrame(); height: visible: frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 39
  • 40. animation Trace Code JFrame frame1 = new JFrame(); frame1 reference Set title property frame1.setTitle("Window 1"); : JFrame frame1.setSize(200, 150); title: "Window 1" frame1.setVisible(true); JFrame width: frame2 = new JFrame(); height: visible: frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 40
  • 41. animation Trace Code JFrame frame1 = new JFrame(); frame1 reference frame1.setTitle("Window 1"); : JFrame Set size property frame1.setSize(200, 150); title: "Window 1" frame1.setVisible(true); width: 200 JFrame frame2 = new JFrame(); height: 150 visible: frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 41
  • 42. animation Trace Code JFrame frame1 = new JFrame(); frame1 reference frame1.setTitle("Window 1"); : JFrame frame1.setSize(200, 150); title: "Window 1" frame1.setVisible(true); width: 200 Set visible height: 150 property JFrame frame2 = new JFrame(); visible: true frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2.setVisible(true); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 42
  • 43. animation Trace Code JFrame frame1 = new JFrame(); frame1 reference frame1.setTitle("Window 1"); : JFrame frame1.setSize(200, 150); title: "Window 1" frame1.setVisible(true); width: 200 JFrame frame2 = new JFrame(); height: 150 visible: true frame2.setTitle("Window 2"); frame2.setSize(200, 150); Declare, create, frame2 reference and assign in one frame2.setVisible(true); statement : JFrame title: width: height: visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 43
  • 44. animation Trace Code JFrame frame1 = new JFrame(); frame1 reference frame1.setTitle("Window 1"); : JFrame frame1.setSize(200, 150); title: "Window 1" frame1.setVisible(true); width: 200 JFrame frame2 = new JFrame(); height: 150 visible: true frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2 reference frame2.setVisible(true); Set title property : JFrame title: "Window 2" width: height: visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 44
  • 45. animation Trace Code JFrame frame1 = new JFrame(); frame1 reference frame1.setTitle("Window 1"); : JFrame frame1.setSize(200, 150); title: "Window 1" frame1.setVisible(true); width: 200 JFrame frame2 = new JFrame(); height: 150 visible: true frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2 reference frame2.setVisible(true); : JFrame title: "Window 2" Set size property width: 200 height: 150 visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 45
  • 46. animation Trace Code JFrame frame1 = new JFrame(); frame1 reference frame1.setTitle("Window 1"); : JFrame frame1.setSize(200, 150); title: "Window 1" frame1.setVisible(true); width: 200 JFrame frame2 = new JFrame(); height: 150 visible: true frame2.setTitle("Window 2"); frame2.setSize(200, 150); frame2 reference frame2.setVisible(true); : JFrame title: "Window 2" Set visible width: 200 property height: 150 visible: true Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 46
  • 47. Adding GUI Components to Window You can add graphical user interface components, such as buttons, labels, text fields, combo boxes, lists, and menus, to the window. The components are defined using classes. Here is an example to create buttons, labels, text fields, check boxes, radio buttons, and combo boxes. GUIComponents Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 47
  • 48. Instance Variables, and Methods Instance variables belong to a specific instance. Instance methods are invoked by an instance of the class. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 48
  • 49. Static Variables, Constants, and Methods Static variables are shared by all the instances of the class. Static methods are not tied to a specific object. Static constants are final variables shared by all the instances of the class. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 49
  • 50. Static Variables, Constants, and Methods, cont. To declare static variables, constants, and methods, use the static modifier. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 50
  • 51. Static Variables, Constants, and Methods, cont. instantiate circle1 Memory radius = 1 1 radius After two Circle Circle numberOfObjects = 2 objects were created, numberOfObjects radius: double is 2. numberOfObjects: int 2 numberOfObjects getNumberOfObjects(): int +getArea(): double instantiate circle2 radius = 5 5 radius UML Notation: numberOfObjects = 2 +: public variables or methods underline: static variables or methods Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 51
  • 52. Example of Using Instance and Class Variables and Method Objective: Demonstrate the roles of instance and class variables and their uses. This example adds a class variable numberOfObjects to track the number of Circle objects created. CircleWithStaticMembers TestCircleWithStaticMembers Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 52
  • 53. Visibility Modifiers and Accessor/Mutator Methods By default, the class, variable, or method can be accessed 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, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 53
  • 54. package p1; package p2; public class C1 { public class C2 { public class C3 { public int x; void aMethod() { void aMethod() { int y; C1 o = new C1(); C1 o = new C1(); private int z; can access o.x; can access o.x; can access o.y; cannot access o.y; public void m1() { cannot access o.z; cannot access o.z; } void m2() { can invoke o.m1(); can invoke o.m1(); } can invoke o.m2(); cannot invoke o.m2(); private void m3() { cannot invoke o.m3(); cannot invoke o.m3(); } } } } } } package p1; package p2; class C1 { public class C2 { public class C3 { ... can access C1 cannot access C1; } } can access C2; } 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. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 54
  • 55. NOTE An object cannot access its private members, as shown in (b). It is OK, however, if the object is declared in its own class, as shown in (a). public class F { public class Test { private boolean x; public static void main(String[] args) { Foo f = new F(); public static void main(String[] args) { System.out.println(f.x); F f = new F (); System.out.println(f.convert(f.x)); System.out.println(f.x); } System.out.println(f.convert()); } } private int convert(boolean b) { return x ? 1 : -1; } } (b) This is wrong because x and convert are private in F. (a) This is OK because object f is used inside the F class Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 55
  • 56. Why Data Fields Should Be private? To protect data. To make class easy to maintain. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 56
  • 57. Example of Data Field Encapsulation Circle The - sign indicates private modifier -radius: double The radius of this circle (default: 1.0). -numberOfObjects: int The number of circle objects created. +Circle() Constructs a default circle object. +Circle(radius: double) Constructs a circle object with the specified radius. +getRadius(): double Returns the radius of this circle. +setRadius(radius: double): void Sets a new radius for this circle. +getNumberOfObject(): int Returns the number of circle objects created. +getArea(): double Returns the area of this circle. CircleWithPrivateDataFields TestCircleWithPrivateDataFields Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 57
  • 58. Passing Objects to Methods  Passing by value for primitive type value (the value is passed to the parameter)  Passing by value for reference type value (the value is the reference to the object) TestPassObject Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 58
  • 59. Passing Objects to Methods, cont. Stack Pass by value (here the value is 5) Space required for the printAreas method Pass by value int times: 5 (here the value is Circle c: reference the reference for the object) Heap Space required for the main method int n: 5 A circle myCircle: reference object Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 59
  • 60. Array of Objects Circle[] circleArray = new Circle[10]; An array of objects is actually an array of reference variables. So invoking circleArray[1].getArea() involves two levels of referencing as shown in the next figure. circleArray references to the entire array. circleArray[1] references to a Circle object. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 60
  • 61. Array of Objects, cont. Circle[] circleArray = new Circle[10]; circleArray reference circleArray[0] Circle object 0 circleArray[1] … Circle object 1 circleArray[9] Circle object 9 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 61
  • 62. Array of Objects, cont. Summarizing the areas of the circles TotalArea Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 62