45
Chapter 8: User-Defined Chapter 8: User-Defined Classes and ADTs Classes and ADTs Java Programming: Java Programming: Program Design Including Data Program Design Including Data Structures Structures

Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Embed Size (px)

Citation preview

Page 1: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 2: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 3: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 4: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 5: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 6: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 7: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 8: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 9: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 9

Two types of constructors: With parameters Without parameters (default constructor)

Constructors

Page 10: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 11: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 12: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 13: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 13

Unified Modeling Language Class Diagrams

Page 14: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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);

Page 15: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 15

Variable Declaration and Object Instantiation (continued)

Page 16: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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))

Page 17: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 18: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 19: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 20: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 20

Example: class Clock

Page 21: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 22: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 23: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 24: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 25: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 25

Illustrate illusObject1 = new Illustrate(3);

Illustrate illusObject2 = new Illustrate(5);

The Modifier static (continued)

Page 26: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 26

Illustrate.incrementY();Illustrate.count++;

The Modifier static (continued)

Page 27: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 28: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 29: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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)

Page 30: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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;

Page 31: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 32: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 33: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 33

Abstract Data Type

A data type that specifies the logical properties without the implementation details

Page 34: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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.

Page 35: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 36: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 37: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 37

Programming Example: Candy Machine

Components: Cash register Dispenser Machine

Page 38: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 38

Programming Example: Candy Machine (continued)

Page 39: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 39

Programming Example: Candy Machine (continued)

Page 40: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 40

Programming Example: Candy Machine (continued)

Page 41: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 41

Programming Example: Candy Machine (continued)

Page 42: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 42

Programming Example: Candy Machine (continued)

Page 43: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 43

Programming Example: Candy Machine (continued)

Page 44: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

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

Page 45: Chapter 8: User-Defined Classes and ADTs Java Programming: Program Design Including Data Structures Program Design Including Data Structures

Java Programming: Program Design Including Data Structures 45

Chapter Summary (continued)

Constructors Finalizers Method toString Abstract data types