Chapter 8: User-Defined Chapter 8: User-Defined Classes and ADTsClasses and ADTs
Java Programming:Java Programming:
Program Design Including Data Program Design Including Data StructuresStructures
Java Programming: Program Design Including Data Structures 2
Chapter Objectives
Learn about classes Learn about private, protected, public,
and static members of a class Explore how classes are implemented Learn about the various operations on classes
Java Programming: Program Design Including Data Structures 3
Chapter Objectives (continued)
Examine constructors and finalizers Examine the method toString Learn about the abstract data type (ADT)
Java Programming: Program Design Including Data Structures 4
Classes
class: collection of a fixed number of components
Components: Members of a class Members are accessed by name Class categories/modifiers:
– private– public– protected (discussed at chapter 11)
Java Programming: Program Design Including Data Structures 5
Classes (continued)
Private: members of class are not accessible outside class
Public: members of class are accessible outside class
Class members: can be methods or variables Variable members are declared like any other
variables
Java Programming: Program Design Including Data Structures 6
SyntaxThe general syntax for defining a class:
If a member of a class is a named constant, you declare it just like any other named constant
If a member of a class is a variable, you declare it just like any other variable
Java Programming: Program Design Including Data Structures 7
Syntax (continued)
• If a member of a class is a method, you define it just like any other method
• If a member of a class is a method, it can (directly) access any member of the class—data members and methods
• When you write the definition of a method, you can directly access any data member of the class (without passing it as a parameter)
Java Programming: Program Design Including Data Structures 8
class Clock:Data Members (Instance Variables):• private int hr; //store hours• private int min; //store minutes• private int sec; //store seconds
Methods: • public void setTime(int hours, int minutes, int seconds)• public int getHours()• public int getMinutes()• public int getSeconds()• public void printTime() • public void incrementSeconds()• public void incrementMinutes()• public void incrementHours()• public boolean equals(Clock otherClock)• public void makeCopy(Clock otherClock)• public Clock getCopy()
Syntax (continued)
Java Programming: Program Design Including Data Structures 9
Two types of constructors: With parameters Without parameters (default constructor)
Constructors
Java Programming: Program Design Including Data Structures 10
Constructors (continued)
• Constructors have the following properties:– The name of a constructor is the same as the name
of the class
– A constructor has no return type
– A class can have more than one constructor
– All constructors of a class have the same name
– If a class has more than one constructor, any two constructors must have different signatures
Java Programming: Program Design Including Data Structures 11
Constructors (continued)
– Constructors are automatically executed when a class object is instantiated
– With multiple constructors, which constructor executes depends on the type of values passed to the class object when the class object is instantiated
Java Programming: Program Design Including Data Structures 12
class Clock: Constructors Default constructor is public Clock()
Constructor with parameters: public Clock(int hours, int minutes,int seconds)
Constructors (continued)
Java Programming: Program Design Including Data Structures 13
Unified Modeling Language Class Diagrams
Java Programming: Program Design Including Data Structures 14
Variable Declaration and Object Instantiation
General syntax for using the operator new is:new className()
OR
new className(argument1, argument2, ..., argumentN)
Clock myClock; Clock yourClock;
myClock = new Clock(); yourClock = new Clock(9, 35, 15);
Java Programming: Program Design Including Data Structures 15
Variable Declaration and Object Instantiation (continued)
Java Programming: Program Design Including Data Structures 16
Accessing Class Members
• To access a data member of a class object or method:referenceVariableName.memberName
Example 8-1
myClock.setTime(5, 2, 30);
myClock.printTime();
yourClock.setTime(x, y, z);
if (myClock.equals(yourClock))
…
Java Programming: Program Design Including Data Structures 17
Assignment Operator: A Precaution
Consider: myClock = yourClock;Copies the value of the reference variable yourClock
into the reference variable myClockAfter execution, both variables refer to same object
Java Programming: Program Design Including Data Structures 18
Assignment Operator: A Precaution (continued)
Shallow copying: two or more reference variables of the same type point to the same object
Deep copying: each reference variable refers to its own object
Java Programming: Program Design Including Data Structures 19
The Copy Constructor
Executes when an object is instantiated Initialized using an existing object Syntax:
public ClassName(ClassName otherObject)
Java Programming: Program Design Including Data Structures 20
Example: class Clock
Java Programming: Program Design Including Data Structures 21
The Method toString
Public value-returning method Takes no parameters Returns address of a String object Output using print, println, printf
methods Default definition creates String with name of
object’s class name followed by hash code of objectSystem.out.println(myClock);is:Clock@11b86e7
Java Programming: Program Design Including Data Structures 22
The Modifier static
In the method heading, specifies that the method can be invoked by using the name of the class
If used to declare data member, data member invoked by using the class name
Static data members of class exist even when no object of class type instantiated
Static variables are initialized to their default values
Java Programming: Program Design Including Data Structures 23
Example 8-3
public class Illustrate{ private int x; private static int y; public static int count;
public Illustrate() { x = 0; }
public Illustrate(int a) { x = a; }
The Modifier static (continued)
Java Programming: Program Design Including Data Structures 24
void setX(int a) { x = a; }
public String toString() { return("x = " + x + ", y = " + y + ", count = " + count); } public static void incrementY() { y++; }}
Illustrate illusObject = new Illustrate();Illustrate.incrementY();Illustrate.count++;
The Modifier static (continued)
Java Programming: Program Design Including Data Structures 25
Illustrate illusObject1 = new Illustrate(3);
Illustrate illusObject2 = new Illustrate(5);
The Modifier static (continued)
Java Programming: Program Design Including Data Structures 26
Illustrate.incrementY();Illustrate.count++;
The Modifier static (continued)
Java Programming: Program Design Including Data Structures 27
Finalizers
Automatically execute when class object goes out of scope
Have no parameters Only one finalizer per class Name of finalizer: finalize
Java Programming: Program Design Including Data Structures 28
Accessor and Mutator Methods
Accessor method: A method of a class that only accesses (that is, does not modify) the value(s) of the data member(s)
Mutator method: modifies the value(s) of the data member(s)
Java Programming: Program Design Including Data Structures 29
Creating Packages
You can create packages using a reserved word package Define the class to be public. (If class is not public, it can only be used within package.)
Choose name for package Organize package (create subdirectories)
Java Programming: Program Design Including Data Structures 30
Creating Package for class Clock
package jpfpatpd.ch08.clockPackage;public class Clock{ //put instance variables and methods, //as before, here}
import jpfpatpd.ch08.clockPackage.Clock;
Java Programming: Program Design Including Data Structures 31
The Reference this
Refers to instance variables and methods of a class
Used to implement cascaded method calls
Java Programming: Program Design Including Data Structures 32
Inner Classes
Defined within other classes Can be either a complete class definition or an
anonymous inner class definition Used to handle events
Java Programming: Program Design Including Data Structures 33
Abstract Data Type
A data type that specifies the logical properties without the implementation details
Java Programming: Program Design Including Data Structures 34
Programming Example: Candy Machine (Problem
Statement)A new candy machine is bought for the gym, but it is not working properly. The machine sells candies, chips, gum, and cookies. In this programming example, we will write a program to create a Java application program for this candy machine so that it can be put into operation. We will divide this program in two parts. In the first part, we will design a non-GUI application program. In the second part, we will design an application program that will create a GUI, as described in the second part.
Java Programming: Program Design Including Data Structures 35
Programming Example: Candy Machine (Problem
Statement continued)• The non-GUI application program should do the
following:1. Show the customer the different products sold
2. Let the customer make the selection
3. Show the customer the cost of the item selected
4. Accept money from the customer
5. Release the item
Java Programming: Program Design Including Data Structures 36
Programming Example: Candy Machine (Input and
Output) Input: The item selection and the cost of the item Output: The selected item
Java Programming: Program Design Including Data Structures 37
Programming Example: Candy Machine
Components: Cash register Dispenser Machine
Java Programming: Program Design Including Data Structures 38
Programming Example: Candy Machine (continued)
Java Programming: Program Design Including Data Structures 39
Programming Example: Candy Machine (continued)
Java Programming: Program Design Including Data Structures 40
Programming Example: Candy Machine (continued)
Java Programming: Program Design Including Data Structures 41
Programming Example: Candy Machine (continued)
Java Programming: Program Design Including Data Structures 42
Programming Example: Candy Machine (continued)
Java Programming: Program Design Including Data Structures 43
Programming Example: Candy Machine (continued)
Java Programming: Program Design Including Data Structures 44
Chapter Summary
Creating classes Members of a class:
private protected public static
Implementing classes Various operations on classes
Java Programming: Program Design Including Data Structures 45
Chapter Summary (continued)
Constructors Finalizers Method toString Abstract data types