Top Banner
Chapter 4: Writing Classes Chapter 4: Writing Classes Presentation slides for Presentation slides for Java Software Solutions Java Software Solutions Foundations of Program Design Foundations of Program Design Second Edition Second Edition by John Lewis and William Loftus by John Lewis and William Loftus Java Software Solutions is published by Addison-Wesley Java Software Solutions is published by Addison-Wesley Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved. Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved. Instructors using the textbook may use and modify these slides for pedagogical purposes. Instructors using the textbook may use and modify these slides for pedagogical purposes.
35

Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Dec 13, 2015

Download

Documents

Erin Summers
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Chapter 4: Writing Classes Chapter 4: Writing Classes

Presentation slides forPresentation slides for

Java Software SolutionsJava Software SolutionsFoundations of Program DesignFoundations of Program Design

Second EditionSecond Edition

by John Lewis and William Loftusby John Lewis and William Loftus

Java Software Solutions is published by Addison-WesleyJava Software Solutions is published by Addison-Wesley

Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved.Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved.

Instructors using the textbook may use and modify these slides for pedagogical purposes.Instructors using the textbook may use and modify these slides for pedagogical purposes.

Page 2: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

2

Writing ClassesWriting Classes

We've been using predefined classes. Now we will learn to We've been using predefined classes. Now we will learn to write our own classes to define new objectswrite our own classes to define new objects

Chapter 4 focuses on:Chapter 4 focuses on:• class declarationsclass declarations

• method declarationsmethod declarations

• instance variablesinstance variables

• encapsulationencapsulation

• method overloadingmethod overloading

• graphics-based objectsgraphics-based objects

Page 3: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

3

ObjectsObjects

An object has:An object has:• statestate - descriptive characteristics - descriptive characteristics

• behaviorsbehaviors - what it can do (or be done to it) - what it can do (or be done to it)

For example, consider a coin that can be flipped so that it's For example, consider a coin that can be flipped so that it's face shows either "heads" or "tails"face shows either "heads" or "tails"

The state of the coin is its current face (heads or tails)The state of the coin is its current face (heads or tails) The behavior of the coin is that it can be flippedThe behavior of the coin is that it can be flipped Note that the behavior of the coin might change its stateNote that the behavior of the coin might change its state

Page 4: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

4

ClassesClasses

A A classclass is a blueprint of an object is a blueprint of an object

It is the model or pattern from which objects are createdIt is the model or pattern from which objects are created

For example, the For example, the StringString class is used to define class is used to define StringString objectsobjects

Each Each StringString object contains specific characters (its state) object contains specific characters (its state)

Each Each StringString object can perform services (behaviors) such object can perform services (behaviors) such as as toUpperCasetoUpperCase

Page 5: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

ClassesClasses

The The StringString class was provided for us by the Java class was provided for us by the Java standard class librarystandard class library

But we can also write our own classes that define specific But we can also write our own classes that define specific objects that we needobjects that we need

For example, suppose we wanted to write a program that For example, suppose we wanted to write a program that simulates the flipping of a coinsimulates the flipping of a coin

We could write a We could write a CoinCoin class to represent a coin object class to represent a coin object

Page 6: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

ClassesClasses

A class contains data declarations and method declarationsA class contains data declarations and method declarations

int x, y;char ch;

Data declarationsData declarations

Method declarationsMethod declarations

Page 7: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Data ScopeData Scope

The The scopescope of data is the area in a program in which that of data is the area in a program in which that data can be used (referenced)data can be used (referenced)

Data declared at the class level can be used by all methods Data declared at the class level can be used by all methods in that classin that class

Data declared within a method can only be used in that Data declared within a method can only be used in that methodmethod

Data declared within a method is called Data declared within a method is called local datalocal data

Page 8: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Writing MethodsWriting Methods

A A method declarationmethod declaration specifies the code that will be specifies the code that will be executed when the method is invoked (or called)executed when the method is invoked (or called)

When a method is invoked, the flow of control jumps to the When a method is invoked, the flow of control jumps to the method and executes its codemethod and executes its code

When complete, the flow returns to the place where the When complete, the flow returns to the place where the method was called and continuesmethod was called and continues

The invocation may or may not return a value, depending The invocation may or may not return a value, depending on how the method was definedon how the method was defined

Page 9: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

myMethod();

myMethodcompute

Method Control FlowMethod Control Flow

The called method could be within the same class, in which The called method could be within the same class, in which case only the method name is neededcase only the method name is needed

Page 10: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

doIt

helpMe

helpMe();

obj.doIt();

main

Method Control FlowMethod Control Flow

The called method could be part of another class or objectThe called method could be part of another class or object

Page 11: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

The Coin ClassThe Coin Class

In our In our CoinCoin class we could define the following data: class we could define the following data:• faceface, an integer that represents the current face, an integer that represents the current face• HEADSHEADS and and TAILSTAILS, integer constants that represent the two , integer constants that represent the two

possible statespossible states

We might also define the following methods:We might also define the following methods:• a a CoinCoin constructor, to set up the object constructor, to set up the object

• a a flipflip method, to flip the coin method, to flip the coin

• a a getFacegetFace method, to return the current face method, to return the current face

• a a toStringtoString method, to return a string description for printing method, to return a string description for printing

Page 12: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

The Coin ClassThe Coin Class

See See CountFlipsCountFlips.java .java (page 179)(page 179) See See Coin.java Coin.java (page 180)(page 180)

Once the Once the CoinCoin class has been defined, we can use it again class has been defined, we can use it again in other programs as neededin other programs as needed

Note that the Note that the CountFlipsCountFlips program did not use the program did not use the toStringtoString method method

A program will not necessarily use every service provided A program will not necessarily use every service provided by an objectby an object

Page 13: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Instance DataInstance Data

The The faceface variable in the variable in the CoinCoin class is called class is called instance datainstance data because each instance (object) of the because each instance (object) of the CoinCoin class has its own class has its own

A class declares the type of the data, but it does not reserve A class declares the type of the data, but it does not reserve any memory space for itany memory space for it

Every time a Every time a CoinCoin object is created, a new object is created, a new faceface variable variable is created as wellis created as well

The objects of a class share the method definitions, but they The objects of a class share the method definitions, but they have unique data spacehave unique data space

That's the only way two objects can have different statesThat's the only way two objects can have different states

Page 14: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Instance DataInstance Data

See See FlipRaceFlipRace.java .java (page 182)(page 182)

face 0

coin1

int face;

class Coin

face 1

coin2

Page 15: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

15

EncapsulationEncapsulation

You can take one of two views of an object:You can take one of two views of an object:• internal - the structure of its data, the algorithms used by its internal - the structure of its data, the algorithms used by its

methodsmethods

• external - the interaction of the object with other objects in the external - the interaction of the object with other objects in the programprogram

From the external view, an object is an From the external view, an object is an encapsulatedencapsulated entity, entity, providing a set of specific servicesproviding a set of specific services

These services define the These services define the interfaceinterface to the object to the object

Recall from Chapter 2 that an object is an Recall from Chapter 2 that an object is an abstractionabstraction, , hiding details from the rest of the systemhiding details from the rest of the system

Page 16: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

16

EncapsulationEncapsulation

An object should be An object should be self-governingself-governing

Any changes to the object's state (its variables) should be Any changes to the object's state (its variables) should be accomplished by that object's methodsaccomplished by that object's methods

We should make it difficult, if not impossible, for one We should make it difficult, if not impossible, for one object to "reach in" and alter another object's stateobject to "reach in" and alter another object's state

The user, or The user, or clientclient, of an object can request its services, but , of an object can request its services, but it should not have to be aware of how those services are it should not have to be aware of how those services are accomplishedaccomplished

Page 17: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

17

EncapsulationEncapsulation

An encapsulated object can be thought of as a An encapsulated object can be thought of as a black boxblack box Its inner workings are hidden to the client, which only Its inner workings are hidden to the client, which only

invokes the interface methodsinvokes the interface methods

ClientClient Methods

Data

Page 18: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

18

Visibility ModifiersVisibility Modifiers

In Java, we accomplish encapsulation through the In Java, we accomplish encapsulation through the appropriate use of appropriate use of visibility modifiersvisibility modifiers

A A modifiermodifier is a Java reserved word that specifies particular is a Java reserved word that specifies particular characteristics of a method or data valuecharacteristics of a method or data value

We've used the modifier We've used the modifier finalfinal to define a constant to define a constant

Java has three visibility modifiers: Java has three visibility modifiers: publicpublic, , privateprivate, , and and protectedprotected

We will discuss the We will discuss the protectedprotected modifier later modifier later

Page 19: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

19

Visibility ModifiersVisibility Modifiers

Members of a class that are declared with Members of a class that are declared with public visibilitypublic visibility can be accessed from anywherecan be accessed from anywhere

Members of a class that are declared with Members of a class that are declared with private visibilityprivate visibility can only be accessed from inside the classcan only be accessed from inside the class

Members declared without a visibility modifier have Members declared without a visibility modifier have default default visibilityvisibility and can be accessed by any class in the same and can be accessed by any class in the same packagepackage

Java modifiers are discussed in detail in Appendix FJava modifiers are discussed in detail in Appendix F

Page 20: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

20

Visibility ModifiersVisibility Modifiers

As a general rule, no object's data should be declared with As a general rule, no object's data should be declared with public visibilitypublic visibility

Methods that provide the object's services are usually Methods that provide the object's services are usually declared with public visibility so that they can be invoked declared with public visibility so that they can be invoked by clientsby clients

Public methods are also called Public methods are also called service methodsservice methods

A method created simply to assist a service method is called A method created simply to assist a service method is called a a support methodsupport method

Since a support method is not intended to be called by a Since a support method is not intended to be called by a client, it should not be declared with public visibilityclient, it should not be declared with public visibility

Page 21: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Method Declarations RevisitedMethod Declarations Revisited

A method declaration begins with a A method declaration begins with a method headermethod header

char calc (int num1, int num2, String message)

methodmethodnamename

returnreturntypetype

parameter listparameter list

The parameter list specifies the typeThe parameter list specifies the typeand name of each parameterand name of each parameter

The name of a parameter in the methodThe name of a parameter in the methoddeclaration is called a declaration is called a formal argumentformal argument

Page 22: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Method DeclarationsMethod Declarations

The method header is followed by the The method header is followed by the method bodymethod body

char calc (int num1, int num2, String message)

{ int sum = num1 + num2; char result = message.charAt (sum);

return result;}

The return expression must beThe return expression must beconsistent with the return typeconsistent with the return type

sumsum and and resultresultare are local datalocal data

They are created each They are created each time the method is called, time the method is called, and are destroyed when and are destroyed when it finishes executingit finishes executing

Page 23: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

23

The return StatementThe return Statement

The The return typereturn type of a method indicates the type of value that of a method indicates the type of value that the method sends back to the calling locationthe method sends back to the calling location

A method that does not return a value has aA method that does not return a value has a void void return return typetype

The The return statementreturn statement specifies the value that will be specifies the value that will be returnedreturned

Its expression must conform to the return typeIts expression must conform to the return type

Page 24: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

ParametersParameters

Each time a method is called, the Each time a method is called, the actual argumentsactual arguments in the invocation are in the invocation are copied into the formal argumentscopied into the formal arguments

char calc (int num1, int num2, String message)

{ int sum = num1 + num2; char result = message.charAt (sum);

return result;}

ch = obj.calc (25, count, "Hello");

Page 25: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

25

Constructors RevisitedConstructors Revisited

Recall that a constructor is a special method that is used to Recall that a constructor is a special method that is used to set up a newly created objectset up a newly created object

When writing a constructor, remember that:When writing a constructor, remember that:• it has the same name as the classit has the same name as the class

• it does not return a valueit does not return a value

• it has no return type, not evenit has no return type, not even void void• it often sets the initial values of instance variables it often sets the initial values of instance variables

The programmer does not have to define a constructor for The programmer does not have to define a constructor for a classa class

Page 26: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Writing ClassesWriting Classes

See BankAccounts.java (page 188)See BankAccounts.java (page 188) See Account.java (page 189)See Account.java (page 189)

An An aggregate objectaggregate object is an object that contains references to is an object that contains references to other objectsother objects

An An AccountAccount object is an aggregate object because it object is an aggregate object because it contains a reference to a contains a reference to a StringString object (that holds the object (that holds the owner's name)owner's name)

An aggregate object represents a An aggregate object represents a has-a relationshiphas-a relationship A bank account A bank account has ahas a name name

Page 27: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Writing ClassesWriting Classes

Sometimes an object has to interact with other objects of Sometimes an object has to interact with other objects of the same typethe same type

For example, we might add two For example, we might add two RationalRational number objects number objects together as follows:together as follows:

r3 = r1.add(r2);

One object (One object (r1r1) is executing the method and another () is executing the method and another (r2r2) ) is passed as a parameteris passed as a parameter

See RationalNumbers.java (page 196)See RationalNumbers.java (page 196) See Rational.java (page 197)See Rational.java (page 197)

Page 28: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

28

Overloading MethodsOverloading Methods

Method overloadingMethod overloading is the process of using the same method is the process of using the same method name for multiple methodsname for multiple methods

The The signaturesignature of each overloaded method must be unique of each overloaded method must be unique

The signature includes the number, type, and order of the The signature includes the number, type, and order of the parametersparameters

The compiler must be able to determine which version of The compiler must be able to determine which version of the method is being invoked by analyzing the parametersthe method is being invoked by analyzing the parameters

The return type of the method is The return type of the method is notnot part of the signature part of the signature

Page 29: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Overloading MethodsOverloading Methods

float tryMe (int x){ return x + .375;}

Version 1Version 1

float tryMe (int x, float y){ return x*y;}

Version 2Version 2

result = tryMe (25, 4.32)

InvocationInvocation

Page 30: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

30

Overloaded MethodsOverloaded Methods

TheThe println println method is overloaded:method is overloaded:

println (String s)println (String s)

println (int i)println (int i)

println (double d)println (double d)

etc.etc.

The following lines invoke different versions of theThe following lines invoke different versions of the println println method:method:

System.out.println ("The total is:");System.out.println ("The total is:");

System.out.println (total);System.out.println (total);

Page 31: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

31

Overloading MethodsOverloading Methods

Constructors can be overloadedConstructors can be overloaded An overloaded constructor provides multiple ways to set up An overloaded constructor provides multiple ways to set up

a new objecta new object

See SnakeEyes.java (page 203)See SnakeEyes.java (page 203) See Die.java (page 204)See Die.java (page 204)

Page 32: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

The StringTokenizer ClassThe StringTokenizer Class

The next example makes use of the The next example makes use of the StringTokenizerStringTokenizer class, which is defined in the class, which is defined in the java.utiljava.util package package

A A StringTokenizerStringTokenizer object separates a string into object separates a string into smaller substrings (tokens)smaller substrings (tokens)

By default, the tokenizer separates the string at white spaceBy default, the tokenizer separates the string at white space

The The StringTokenizerStringTokenizer constructor takes the original constructor takes the original string to be separated as a parameterstring to be separated as a parameter

Each call to the Each call to the nextTokennextToken method returns the next token method returns the next token in the string in the string

Page 33: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Method DecompositionMethod Decomposition

A method should be relatively small, so that it can be A method should be relatively small, so that it can be readily understood as a single entityreadily understood as a single entity

A potentially large method should be decomposed into A potentially large method should be decomposed into several smaller methods as needed for clarityseveral smaller methods as needed for clarity

Therefore, a service method of an object may call one or Therefore, a service method of an object may call one or more support methods to accomplish its goalmore support methods to accomplish its goal

See PigLatin.java (page 207)See PigLatin.java (page 207) See PigLatinTranslator.java (page 208)See PigLatinTranslator.java (page 208)

Page 34: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Applet MethodsApplet Methods

In previous examples we've used the In previous examples we've used the paintpaint method of the method of the AppletApplet class to draw on an applet class to draw on an applet

The The AppletApplet class has several methods that are invoked class has several methods that are invoked automatically at certain points in an applet's lifeautomatically at certain points in an applet's life

The The initinit method, for instance, is executed only once when method, for instance, is executed only once when the applet is initially loadedthe applet is initially loaded

The The AppletApplet class also contains other methods that class also contains other methods that generally assist in applet processinggenerally assist in applet processing

Page 35: Chapter 4: Writing Classes Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus.

Graphical ObjectsGraphical Objects

Any object we define by writing a class can have graphical Any object we define by writing a class can have graphical elementselements

The object must simply obtain a graphics context (a The object must simply obtain a graphics context (a GraphicsGraphics object) in which to draw object) in which to draw

An applet can pass its graphics context to another object An applet can pass its graphics context to another object just as it can any other parameterjust as it can any other parameter

See LineUp.java (page 212)See LineUp.java (page 212) See StickFigure.java (page 215)See StickFigure.java (page 215)