SlideShare une entreprise Scribd logo
1  sur  62
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

How to write you first class in c++ object oriented programming
How to write you first class in c++ object oriented programmingHow to write you first class in c++ object oriented programming
How to write you first class in c++ object oriented programmingSyed Faizan Hassan
 
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...Collection Framework in Java | Generics | Input-Output in Java | Serializatio...
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...Sagar Verma
 
object oriented programming language by c++
object oriented programming language by c++object oriented programming language by c++
object oriented programming language by c++Mohamad Al_hsan
 
Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3Sagar Verma
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objectsmaznabili
 
Introduction to java programming
Introduction to java programmingIntroduction to java programming
Introduction to java programmingshinyduela
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorialskailash454
 
4. Classes and Methods
4. Classes and Methods4. Classes and Methods
4. Classes and MethodsNilesh Dalvi
 
The Ring programming language version 1.7 book - Part 77 of 196
The Ring programming language version 1.7 book - Part 77 of 196The Ring programming language version 1.7 book - Part 77 of 196
The Ring programming language version 1.7 book - Part 77 of 196Mahmoud Samir Fayed
 
Java OOP Programming language (Part 5) - Inheritance
Java OOP Programming language (Part 5) - InheritanceJava OOP Programming language (Part 5) - Inheritance
Java OOP Programming language (Part 5) - InheritanceOUM SAOKOSAL
 

Tendances (20)

How to write you first class in c++ object oriented programming
How to write you first class in c++ object oriented programmingHow to write you first class in c++ object oriented programming
How to write you first class in c++ object oriented programming
 
Java oop
Java oopJava oop
Java oop
 
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...Collection Framework in Java | Generics | Input-Output in Java | Serializatio...
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...
 
Clustering
ClusteringClustering
Clustering
 
object oriented programming language by c++
object oriented programming language by c++object oriented programming language by c++
object oriented programming language by c++
 
9 cm604.14
9 cm604.149 cm604.14
9 cm604.14
 
Java chapter 4
Java chapter 4Java chapter 4
Java chapter 4
 
Java chapter 5
Java chapter 5Java chapter 5
Java chapter 5
 
Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objects
 
Introduction to java programming
Introduction to java programmingIntroduction to java programming
Introduction to java programming
 
C++ classes
C++ classesC++ classes
C++ classes
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
class c++
class c++class c++
class c++
 
JavaYDL7
JavaYDL7JavaYDL7
JavaYDL7
 
03class
03class03class
03class
 
Java Reflection Concept and Working
Java Reflection Concept and WorkingJava Reflection Concept and Working
Java Reflection Concept and Working
 
4. Classes and Methods
4. Classes and Methods4. Classes and Methods
4. Classes and Methods
 
The Ring programming language version 1.7 book - Part 77 of 196
The Ring programming language version 1.7 book - Part 77 of 196The Ring programming language version 1.7 book - Part 77 of 196
The Ring programming language version 1.7 book - Part 77 of 196
 
Java OOP Programming language (Part 5) - Inheritance
Java OOP Programming language (Part 5) - InheritanceJava OOP Programming language (Part 5) - Inheritance
Java OOP Programming language (Part 5) - Inheritance
 

En vedette

Presentation Kingdom of Belgium
Presentation Kingdom of BelgiumPresentation Kingdom of Belgium
Presentation Kingdom of BelgiumKristina Huber
 
Presentation about belgium
Presentation about belgiumPresentation about belgium
Presentation about belgiumBaeke Alieke
 
Languages of World History I
Languages of World History ILanguages of World History I
Languages of World History Iierlynn
 
History SOL Testing Tips
History SOL Testing TipsHistory SOL Testing Tips
History SOL Testing Tipsierlynn
 
European Languages - history and evolution
European Languages - history and evolutionEuropean Languages - history and evolution
European Languages - history and evolutionEuroasia
 
Evolution of formula 1 cars
Evolution of formula 1 carsEvolution of formula 1 cars
Evolution of formula 1 carsAmit Mangtani
 
Customs And Traditions Of Belgium
Customs     And Traditions Of BelgiumCustoms     And Traditions Of Belgium
Customs And Traditions Of Belgiumsschryvers
 
Belgium Presentation
Belgium PresentationBelgium Presentation
Belgium Presentationarlamb85
 
Ppt belgium
Ppt belgiumPpt belgium
Ppt belgiumytack
 
History of programming languages
History of programming languagesHistory of programming languages
History of programming languagestwuniversity
 
Formula1 presentation
Formula1 presentationFormula1 presentation
Formula1 presentationAmit Mangtani
 
Presentation of belgium
Presentation of belgiumPresentation of belgium
Presentation of belgiumdoonacad
 

En vedette (18)

History of languages'
History of languages'History of languages'
History of languages'
 
Presentation Kingdom of Belgium
Presentation Kingdom of BelgiumPresentation Kingdom of Belgium
Presentation Kingdom of Belgium
 
Presentation about belgium
Presentation about belgiumPresentation about belgium
Presentation about belgium
 
Languages of World History I
Languages of World History ILanguages of World History I
Languages of World History I
 
History SOL Testing Tips
History SOL Testing TipsHistory SOL Testing Tips
History SOL Testing Tips
 
European Languages - history and evolution
European Languages - history and evolutionEuropean Languages - history and evolution
European Languages - history and evolution
 
Evolution of formula 1 cars
Evolution of formula 1 carsEvolution of formula 1 cars
Evolution of formula 1 cars
 
Ppt On Belgium
Ppt On BelgiumPpt On Belgium
Ppt On Belgium
 
Formula 1
Formula 1Formula 1
Formula 1
 
Formula 1 race car
Formula 1 race carFormula 1 race car
Formula 1 race car
 
Customs And Traditions Of Belgium
Customs     And Traditions Of BelgiumCustoms     And Traditions Of Belgium
Customs And Traditions Of Belgium
 
Belgium Presentation
Belgium PresentationBelgium Presentation
Belgium Presentation
 
Belgium Culture
Belgium CultureBelgium Culture
Belgium Culture
 
Formula 1
Formula 1Formula 1
Formula 1
 
Ppt belgium
Ppt belgiumPpt belgium
Ppt belgium
 
History of programming languages
History of programming languagesHistory of programming languages
History of programming languages
 
Formula1 presentation
Formula1 presentationFormula1 presentation
Formula1 presentation
 
Presentation of belgium
Presentation of belgiumPresentation of belgium
Presentation of belgium
 

Similaire à JavaYDL8

Similaire à JavaYDL8 (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
 
JavaYDL15
JavaYDL15JavaYDL15
JavaYDL15
 
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
 
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
 
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
 
11slide
11slide11slide
11slide
 
JavaYDL11
JavaYDL11JavaYDL11
JavaYDL11
 
OO Development 4 - Object Concepts
OO Development 4 - Object ConceptsOO Development 4 - Object Concepts
OO Development 4 - Object Concepts
 
06slide
06slide06slide
06slide
 

Plus de Terry Yoast

9781305078444 ppt ch12
9781305078444 ppt ch129781305078444 ppt ch12
9781305078444 ppt ch12Terry Yoast
 
9781305078444 ppt ch11
9781305078444 ppt ch119781305078444 ppt ch11
9781305078444 ppt ch11Terry Yoast
 
9781305078444 ppt ch10
9781305078444 ppt ch109781305078444 ppt ch10
9781305078444 ppt ch10Terry Yoast
 
9781305078444 ppt ch09
9781305078444 ppt ch099781305078444 ppt ch09
9781305078444 ppt ch09Terry Yoast
 
9781305078444 ppt ch08
9781305078444 ppt ch089781305078444 ppt ch08
9781305078444 ppt ch08Terry Yoast
 
9781305078444 ppt ch07
9781305078444 ppt ch079781305078444 ppt ch07
9781305078444 ppt ch07Terry Yoast
 
9781305078444 ppt ch06
9781305078444 ppt ch069781305078444 ppt ch06
9781305078444 ppt ch06Terry Yoast
 
9781305078444 ppt ch05
9781305078444 ppt ch059781305078444 ppt ch05
9781305078444 ppt ch05Terry Yoast
 
9781305078444 ppt ch04
9781305078444 ppt ch049781305078444 ppt ch04
9781305078444 ppt ch04Terry Yoast
 
9781305078444 ppt ch03
9781305078444 ppt ch039781305078444 ppt ch03
9781305078444 ppt ch03Terry Yoast
 
9781305078444 ppt ch02
9781305078444 ppt ch029781305078444 ppt ch02
9781305078444 ppt ch02Terry Yoast
 
9781305078444 ppt ch01
9781305078444 ppt ch019781305078444 ppt ch01
9781305078444 ppt ch01Terry Yoast
 
9781337102087 ppt ch13
9781337102087 ppt ch139781337102087 ppt ch13
9781337102087 ppt ch13Terry Yoast
 
9781337102087 ppt ch18
9781337102087 ppt ch189781337102087 ppt ch18
9781337102087 ppt ch18Terry Yoast
 
9781337102087 ppt ch17
9781337102087 ppt ch179781337102087 ppt ch17
9781337102087 ppt ch17Terry Yoast
 
9781337102087 ppt ch16
9781337102087 ppt ch169781337102087 ppt ch16
9781337102087 ppt ch16Terry Yoast
 
9781337102087 ppt ch15
9781337102087 ppt ch159781337102087 ppt ch15
9781337102087 ppt ch15Terry Yoast
 
9781337102087 ppt ch14
9781337102087 ppt ch149781337102087 ppt ch14
9781337102087 ppt ch14Terry Yoast
 
9781337102087 ppt ch12
9781337102087 ppt ch129781337102087 ppt ch12
9781337102087 ppt ch12Terry Yoast
 
9781337102087 ppt ch11
9781337102087 ppt ch119781337102087 ppt ch11
9781337102087 ppt ch11Terry Yoast
 

Plus de Terry Yoast (20)

9781305078444 ppt ch12
9781305078444 ppt ch129781305078444 ppt ch12
9781305078444 ppt ch12
 
9781305078444 ppt ch11
9781305078444 ppt ch119781305078444 ppt ch11
9781305078444 ppt ch11
 
9781305078444 ppt ch10
9781305078444 ppt ch109781305078444 ppt ch10
9781305078444 ppt ch10
 
9781305078444 ppt ch09
9781305078444 ppt ch099781305078444 ppt ch09
9781305078444 ppt ch09
 
9781305078444 ppt ch08
9781305078444 ppt ch089781305078444 ppt ch08
9781305078444 ppt ch08
 
9781305078444 ppt ch07
9781305078444 ppt ch079781305078444 ppt ch07
9781305078444 ppt ch07
 
9781305078444 ppt ch06
9781305078444 ppt ch069781305078444 ppt ch06
9781305078444 ppt ch06
 
9781305078444 ppt ch05
9781305078444 ppt ch059781305078444 ppt ch05
9781305078444 ppt ch05
 
9781305078444 ppt ch04
9781305078444 ppt ch049781305078444 ppt ch04
9781305078444 ppt ch04
 
9781305078444 ppt ch03
9781305078444 ppt ch039781305078444 ppt ch03
9781305078444 ppt ch03
 
9781305078444 ppt ch02
9781305078444 ppt ch029781305078444 ppt ch02
9781305078444 ppt ch02
 
9781305078444 ppt ch01
9781305078444 ppt ch019781305078444 ppt ch01
9781305078444 ppt ch01
 
9781337102087 ppt ch13
9781337102087 ppt ch139781337102087 ppt ch13
9781337102087 ppt ch13
 
9781337102087 ppt ch18
9781337102087 ppt ch189781337102087 ppt ch18
9781337102087 ppt ch18
 
9781337102087 ppt ch17
9781337102087 ppt ch179781337102087 ppt ch17
9781337102087 ppt ch17
 
9781337102087 ppt ch16
9781337102087 ppt ch169781337102087 ppt ch16
9781337102087 ppt ch16
 
9781337102087 ppt ch15
9781337102087 ppt ch159781337102087 ppt ch15
9781337102087 ppt ch15
 
9781337102087 ppt ch14
9781337102087 ppt ch149781337102087 ppt ch14
9781337102087 ppt ch14
 
9781337102087 ppt ch12
9781337102087 ppt ch129781337102087 ppt ch12
9781337102087 ppt ch12
 
9781337102087 ppt ch11
9781337102087 ppt ch119781337102087 ppt ch11
9781337102087 ppt ch11
 

Dernier

The Genuine Student Requirement for Australian Student Visas
The Genuine Student Requirement for Australian Student VisasThe Genuine Student Requirement for Australian Student Visas
The Genuine Student Requirement for Australian Student VisasAmit Kakkar
 
Canada PR - Eligibility, Steps to apply.pptx
Canada PR - Eligibility, Steps to apply.pptxCanada PR - Eligibility, Steps to apply.pptx
Canada PR - Eligibility, Steps to apply.pptxY-Axis Overseas Careers
 
Sizzling Summer Adventures Unforgettable Tours Under the Sun
Sizzling Summer Adventures Unforgettable Tours Under the SunSizzling Summer Adventures Unforgettable Tours Under the Sun
Sizzling Summer Adventures Unforgettable Tours Under the SunSnowshoe Tahoe
 
Lucknow to Sitapur Cab | Lucknow to Sitapur Taxi
Lucknow to Sitapur Cab | Lucknow to Sitapur TaxiLucknow to Sitapur Cab | Lucknow to Sitapur Taxi
Lucknow to Sitapur Cab | Lucknow to Sitapur TaxiCab Bazar
 
What Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To Grasp
What Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To GraspWhat Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To Grasp
What Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To GraspHanalei Surf School
 
Melanie Smith Tourism, Wellbeing and Happiness
Melanie Smith Tourism, Wellbeing and HappinessMelanie Smith Tourism, Wellbeing and Happiness
Melanie Smith Tourism, Wellbeing and HappinessEDGAR TARRÉS FALCÓ
 
Backpacking in Bhutan: A Thrilling Adventure
Backpacking in Bhutan: A Thrilling AdventureBackpacking in Bhutan: A Thrilling Adventure
Backpacking in Bhutan: A Thrilling AdventureKunal Kunal
 
Access to Secretarial and Administrative Support in Serviced Apartments.pptx
Access to Secretarial and Administrative Support in Serviced Apartments.pptxAccess to Secretarial and Administrative Support in Serviced Apartments.pptx
Access to Secretarial and Administrative Support in Serviced Apartments.pptxPAJASA Apartments
 
What Safety Precautions Are Recommended For Na Pali Snorkeling Adventure
What Safety Precautions Are Recommended For Na Pali Snorkeling AdventureWhat Safety Precautions Are Recommended For Na Pali Snorkeling Adventure
What Safety Precautions Are Recommended For Na Pali Snorkeling AdventureHanalei Charters
 
Discover the Magic of Sicily: Your Travel Guide
Discover the Magic of Sicily: Your Travel GuideDiscover the Magic of Sicily: Your Travel Guide
Discover the Magic of Sicily: Your Travel GuideTime for Sicily
 
What Are The Must-Know Tips For First-Time Jet Skiers In Aruba
What Are The Must-Know Tips For First-Time Jet Skiers In ArubaWhat Are The Must-Know Tips For First-Time Jet Skiers In Aruba
What Are The Must-Know Tips For First-Time Jet Skiers In ArubaDelphi Watersports
 
Busy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptx
Busy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptxBusy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptx
Busy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptxRezStream
 
What Are Some Tips For A Safe White River Rafting Experience
What Are Some Tips For A Safe White River Rafting ExperienceWhat Are Some Tips For A Safe White River Rafting Experience
What Are Some Tips For A Safe White River Rafting ExperienceTahoe Whitewater Tours
 
_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdf
_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdf_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdf
_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdfNewChandigarhTravels
 
László Puczkó Wellbeing Tourism and Economy
László Puczkó Wellbeing Tourism and EconomyLászló Puczkó Wellbeing Tourism and Economy
László Puczkó Wellbeing Tourism and EconomyEDGAR TARRÉS FALCÓ
 
Visit the Famous Temples of Dev Bhoomi by Uttarakhand tour Package
Visit the Famous Temples of Dev Bhoomi by Uttarakhand tour PackageVisit the Famous Temples of Dev Bhoomi by Uttarakhand tour Package
Visit the Famous Temples of Dev Bhoomi by Uttarakhand tour PackageDhruv Sharma
 
Top Five Best Places to Visit in India.pdf
Top Five Best Places to Visit in India.pdfTop Five Best Places to Visit in India.pdf
Top Five Best Places to Visit in India.pdfonlinevisaindia
 
5 beautyfull places visiting in uttrakhand
5 beautyfull places visiting in uttrakhand5 beautyfull places visiting in uttrakhand
5 beautyfull places visiting in uttrakhandaradhya3287
 

Dernier (19)

The Genuine Student Requirement for Australian Student Visas
The Genuine Student Requirement for Australian Student VisasThe Genuine Student Requirement for Australian Student Visas
The Genuine Student Requirement for Australian Student Visas
 
Canada PR - Eligibility, Steps to apply.pptx
Canada PR - Eligibility, Steps to apply.pptxCanada PR - Eligibility, Steps to apply.pptx
Canada PR - Eligibility, Steps to apply.pptx
 
Sizzling Summer Adventures Unforgettable Tours Under the Sun
Sizzling Summer Adventures Unforgettable Tours Under the SunSizzling Summer Adventures Unforgettable Tours Under the Sun
Sizzling Summer Adventures Unforgettable Tours Under the Sun
 
Lucknow to Sitapur Cab | Lucknow to Sitapur Taxi
Lucknow to Sitapur Cab | Lucknow to Sitapur TaxiLucknow to Sitapur Cab | Lucknow to Sitapur Taxi
Lucknow to Sitapur Cab | Lucknow to Sitapur Taxi
 
What Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To Grasp
What Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To GraspWhat Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To Grasp
What Unwritten Rules Of Surfing Etiquette Are Crucial For Beginners To Grasp
 
Melanie Smith Tourism, Wellbeing and Happiness
Melanie Smith Tourism, Wellbeing and HappinessMelanie Smith Tourism, Wellbeing and Happiness
Melanie Smith Tourism, Wellbeing and Happiness
 
Backpacking in Bhutan: A Thrilling Adventure
Backpacking in Bhutan: A Thrilling AdventureBackpacking in Bhutan: A Thrilling Adventure
Backpacking in Bhutan: A Thrilling Adventure
 
Access to Secretarial and Administrative Support in Serviced Apartments.pptx
Access to Secretarial and Administrative Support in Serviced Apartments.pptxAccess to Secretarial and Administrative Support in Serviced Apartments.pptx
Access to Secretarial and Administrative Support in Serviced Apartments.pptx
 
Why Is Whitewater Rafting The Ultimate Water Adventure
Why Is Whitewater Rafting The Ultimate Water AdventureWhy Is Whitewater Rafting The Ultimate Water Adventure
Why Is Whitewater Rafting The Ultimate Water Adventure
 
What Safety Precautions Are Recommended For Na Pali Snorkeling Adventure
What Safety Precautions Are Recommended For Na Pali Snorkeling AdventureWhat Safety Precautions Are Recommended For Na Pali Snorkeling Adventure
What Safety Precautions Are Recommended For Na Pali Snorkeling Adventure
 
Discover the Magic of Sicily: Your Travel Guide
Discover the Magic of Sicily: Your Travel GuideDiscover the Magic of Sicily: Your Travel Guide
Discover the Magic of Sicily: Your Travel Guide
 
What Are The Must-Know Tips For First-Time Jet Skiers In Aruba
What Are The Must-Know Tips For First-Time Jet Skiers In ArubaWhat Are The Must-Know Tips For First-Time Jet Skiers In Aruba
What Are The Must-Know Tips For First-Time Jet Skiers In Aruba
 
Busy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptx
Busy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptxBusy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptx
Busy Season Mastery Simple Strategies to Optimize Your Lodging Business!.pptx
 
What Are Some Tips For A Safe White River Rafting Experience
What Are Some Tips For A Safe White River Rafting ExperienceWhat Are Some Tips For A Safe White River Rafting Experience
What Are Some Tips For A Safe White River Rafting Experience
 
_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdf
_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdf_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdf
_Unforgettable Chandigarh to Himachal Pradesh Tour Package.pdf
 
László Puczkó Wellbeing Tourism and Economy
László Puczkó Wellbeing Tourism and EconomyLászló Puczkó Wellbeing Tourism and Economy
László Puczkó Wellbeing Tourism and Economy
 
Visit the Famous Temples of Dev Bhoomi by Uttarakhand tour Package
Visit the Famous Temples of Dev Bhoomi by Uttarakhand tour PackageVisit the Famous Temples of Dev Bhoomi by Uttarakhand tour Package
Visit the Famous Temples of Dev Bhoomi by Uttarakhand tour Package
 
Top Five Best Places to Visit in India.pdf
Top Five Best Places to Visit in India.pdfTop Five Best Places to Visit in India.pdf
Top Five Best Places to Visit in India.pdf
 
5 beautyfull places visiting in uttrakhand
5 beautyfull places visiting in uttrakhand5 beautyfull places visiting in uttrakhand
5 beautyfull places visiting in uttrakhand
 

JavaYDL8

  • 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