Sunteți pe pagina 1din 46

presentation slides for

Object-Oriented Problem Solving


JAVA, JAVA, JAVA
Second Edition

Ralph Morelli
Trinity College
Hartford, CT

published by Prentice
Hall
Java, Java, Java
Object Oriented Problem Solving

Chapter 3 Methods:
Communicating with Objects
Objectives
• Understand the role that methods play in an
object-oriented program.
• Know how to use parameters and arguments
to pass data to an object.
• Understand how constructor methods are
used to instantiate objects.
• Know the difference between passing a value
and passing a reference to an method.
• Know how to design your own methods.
• Be able to use the selection control structure.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Outline
• Passing Information to an Object
• Constructor Methods
• Retrieving Information from an Object
• Passing a Value and Passing a Reference
• Flow of Control: Selection Control Structures
• The Improved CyberPet
• From the Java Library: Object
• Object-Oriented Design: Class Inheritance
• In the Laboratory: Feeding CyberPet
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Passing Information to an Object
• Let’s add a name variable to CyberPet:

• A private variable cannot be accessed by


other objects.
• To allow other objects to access CyberPet’s
name, we will provide public accessor and
mutator methods (sometimes called “get”
and “set” methods).
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The CyberPet.setName() Method
The setName()
The str parameter serves as a
mutator method
storage location for data being
assigns a String
passed to the method.
value to CyberPet’s
public class CyberPet { name variable.
...
private String name = “no name”;
...
public void setName (String str)
{
name = str;
}
...
}

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Parameter Scope

• Scope defines where a variable can be used


in a program.
• Local Scope: a parameter’s scope is limited
to the method in which it is declared.
• Class Scope: an instance variable can be
accessed anywhere within the class instance.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Parameter
Scope

Drawing boxes
around modules
helps visualize
scope.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Arguments and Parameters

• Arguments refer to the values that are used


in the method call or method invocation.
pet1.setName("Socrates");

• Qualified names (dot notation), are used to


refer to methods within other classes.
• The arguments used in the method call must
match the parameters defined in method
definition.
public void setName(String s) {…}

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Arguments and Parameters (cont)
Create a CyberPet instance

CyberPet pet1 = new Call setName(),


CyberPet();
pet1.setName("Socrates"); passing a String literal
String s = "Hal";
pet1.setName(s); Or, pass the value (“Hal”)
stored in a String variable!

Syntax errors: setName() requires a String argument


pet1.setName(Socrates);
pet1.setName(10);
pet1.setName();
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Passing a String to CyberPet
public class TestCyberPet
{
public static void main (String argv[])
{
CyberPet pet1; // Declare a CyberPet
pet1 = new CyberPet(); // Create a CyberPet
pet1.setName("Socrates"); // Set the pet's name
return; // Return to the system
} // main()
} // TestCyberPet

pet1’s state after the


method call
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Parameters are Temporary Storage

(a) Before the assignment, (b) After the assignment,


the parameter str refers to the variable name refers
“Socrates” to “Socrates”

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Parameters and the Generality Principle
• Parameters make methods more general.
• A poor design for a setName() method.
This version can only set the pet’s name to
“Socrates”:
public void setName()
{
name = "Socrates";
}

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Parameters and the Generality Principle
• We can use setName(String) to create two
CyberPets with different names:

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Constructor Methods
• Used to create an instance (object) of a
class
• Not inherited by subclasses
• Used to initialize instance variables
• Defined as public or private
• Do not return public
a value
CyberPet(String str)
{
• Example: }
name = str;

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Default Constructors
• If no constructor is coded, Java provides a
default constructor.
• If a class is public, the default constructor
will also be public.
• CyberPet: Invoking the default constructor:
CyberPet socrates = new CyberPet();

Is equivalent to invoking a constructor defined as:


public CyberPet() { }

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Overloading and Method Signatures
• A method name is overloaded if there is more
than one method with the same name:
public CyberPet () { } // Constructor #1
public CyberPet (String str) // Constructor #2
{
name = str;
}

• A method is uniquely identified by its


method signature, which includes the
method name plus the the number, order,
and types of its parameters.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Constructor Invocation
• A constructor is invoked only once, in conjunction with
the new keyword, when an instance of an object is
created.
• The arguments in the method call must match the
parameters in the method definition.

Constructor
invocations
CyberPet pet1 = new CyberPet();
pet1.setName("Pet1");
CyberPet pet2 = new CyberPet("Pet2");

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Retrieving Information from an Object
• Methods with non-void return types can be used
to extract information from an object.
• A method that returns a value may or may not
have a formal parameter list.
Return Type Parameters

public double average (int n1, int n2)


{
return (n1 + n2) / 2;
}

Return Value
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The CyberPet.getName() Method
public String getName() getName() takes no parameters,
{
return name; and returns the value of the
} name instance variable

pet1.setName("Socrates");
pet1.getName() has the
pet1.getName(); value “Socrates”

System.out.println(pet1.getName());
Nested Method Call: We use
println() to print “Socrates”
We can assign “Socrates”
to a String variable
String s = pet1.getName();

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The Expanded CyberPet Class

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Passing a Value vs. Passing a Reference
• Passing a primitive value differs from
passing a reference value
• Values of type int, boolean, float, and
double are examples of primitive types. A
primitive argument cannot be changed by a
method call.
• All objects (String, CyberPet) are reference
types. Reference arguments can be changed
by a method call.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Passing a Primitive Value
• For primitive type parameters, a copy of the
argument’s value is passed to the method.
public void primitiveCall(int n)
{ primitiveCall() will be
n = n + 1; passed an int value
}
5
int x = 5; x stores the value 5
primitiveCall(x);

5 is copied into n when primitiveCall()


is called. So primitiveCall() has no
access to x itself and x remains equal to
5 even though n is incremented.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Passing a Reference Value
• For reference parameters, a reference to an object is
passed to the method.
public void referenceCall(CyberPet p)
{
p.setName("Mary"); referenceCall() will be passed
} a reference to a CyberPet
x refers to a CyberPet
CyberPet x = new CyberPet("Harry"); named “Harry”
referenceCall(x);

Passing x is like passing the object


itself. x’s name will be “Mary” after
the method is called.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Passing a Reference Value
• In (a), when myMethod(pet1) is called, p points to pet1.

• In (b), p.setName() changes pet1’s name to “Mary”. This change will persist.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Flow of Control: Selection Structures

• Selection Control Structures allow the


program to select one of multiple paths of
execution.

• The path is selected based on some


conditional criteria, as is the case in a
flowchart.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The Simple If Statement

if ( boolean expression )
statement ;

• If the boolean expression evaluates to true, the


statement will be executed. Otherwise, it will
be skipped.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Boolean Expressions

• Boolean expressions are expression that


evaluate to either true or false.
• Examples of Boolean Expressions:
true false
isSleeping (1 + 1) == 2
• == is the equality operator in Java

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The getState() Method
public String getState()
{
if (isEating)
return “Eating”;
if (isSleeping)
return “Sleeping”;
return “Error in State”;
}

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The If-Then-Else Statement

if ( boolean expression )
statement1
else
statement2 ;

• If the boolean expression is true, execute


statement1, otherwise execute statement2.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Multiway Selection

• We can embed if-


then-else clauses
to create multiway
selection
structures.
• Note that this
complicated
structure has one
entry and one exit.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Selection Statement Examples
if (isEating) Simple If
return "Eating";
If-then-else
if (isEating)
System.out.println("Is Eating");
else
System.out.println("Is NOT Eating");

if (isSleeping) Multiway Selection


System.out.println("I'm sleeping");
else if (isEating)
System.out.println("I'm eating");
else if (isThinking)
System.out.println("I'm thinking");
else
System.out.println("Error: I don't know what I'm doing");

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The Dangling Else Problem
• Rule: An else clause
matches the closest previous
unmatched if clause.
• Indentation (which the
compiler ignores) should
reflect the statement’s logic.

Incorrect Indentation Correct Indentation


if (condition1) if (condition1)
if (condition2) if (condition2)
System.out.println("One"); System.out.println("One");
else else
System.out.println("Two"); System.out.println("Two");

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
The Switch/Break Structure
• Multiway selection can also be done with
the switch/break structure.
switch ( integralExpression )
{
case integralValue2 :
statement1;
break;
case integralValue2 :
statement2;
break;

case integrealValueN :
statementN;
break;
default:
statementDefault;
}

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Switch/Break Examples

Correct: Prints m=2 Error: Prints ch=b.ch=c, default


int m = 2; char ch = ‘b’;
switch (m) switch (ch)
{ {
case 1 : case ‘a’ :
System.out.println(“m=1”); System.out.println(“ch=a”);
break;
case 2 : case ‘b’ :
System.out.println(“m=2”); System.out.println(“ch=b”);
break;
case 3 : case ‘c’ :
System.out.println(“m=3”); System.out.println(“ch=c”);
break;
default: default:
System.out.println(“default”);} System.out.println(“default”);
}

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Inheritance: Object.toString()

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Overriding Object.toString()

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Polymorphic Object.toString()

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
In the Laboratory: Feeding CyberPet

The objectives of this lab are:

• To give practice writing Java methods from


scratch.
• To give practice using parameters to pass
information to a method.
• To give practice using return values to pass
information back from a method.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
In the Laboratory: Feeding CyberPet
Problem Statement
Modify the CyberPet and TestCyberPet
classes to create a simulation in which pets
can eat different kinds of food. The
completed program should be capable of
producing the following output:
pet1's name is Socrates
Socrates is eating an apple
Socrates is sleeping
pet2's name is Cleopatra
Cleopatra is eating beans
Cleopatra is sleeping

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Object Design

This version of CyberPet


contains two eat()
methods.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Technical Terms
• accessor method • multiway selection
• argument • mutator method
• boolean expression • parameter
• class scope • primitive type
• constructor • reference type
• dangling else • scope
• dynamic binding • selection structure
• local scope • side effect
• method definition • stub method
• method invocation • switch/break structure
• method overloading
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Summary Of Important Points
• A formal parameter is a place holder in a
method declaration and it always consists of
a type followed by variable identifier.
• An argument is a value that is passed to a
method via a formal parameter when the
method is invoked.
• A method's parameters constrain the type of
information that can be passed to a method.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Summary of Important Points (cont)
• Parameter Passing. When an argument of
primitive type is passed to a method, it
cannot be modified within the method.
• When an argument of reference type is
passed to a method, the object it refers to
can be modified within the method.
• Except for void methods, a method
invocation or method call is an expression
which has a a value of a certain type.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Summary of Important Points (cont)
• The signature of a method consists of its
name, its return type, and the number and
type of its formal parameters.
• A class may not contain more than one
method with the same signature.
• A constructor is a method that is invoked
when an instance object is created. If a class
does not contain a constructor method, the
Java compiler supplies a default constructor.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods
Summary of Important Points (cont)
• The if statement executes a statement only
if its boolean condition is true.
• The if-else statement statement executes
one or the other of its statements depending
on the value of its boolean condition.
• Multiway selection allows one and only one
of several choices to be selected depending
on the value of its boolean condition.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 3: Methods

S-ar putea să vă placă și