Methods - Classes

Methods
13-Jul-17
Overview

In this presentation we will discuss these 4 topics:




Main method vs. Jeroo methods
Choosing behaviors to turn into methods
Writing a Jeroo method
Preconditions and postconditions
Jeroo has many built-in methods

Actions


Sensor methods


hop, turn, …
isNet? isFlower? …
The programmer can define additional methods to
extend the behavior of every Jeroo.
Behaviors and methods




Behavior = an action that an object can take or a task it
can perform in response to a request from an external
source
Method = Collection of statements written in a
programming language to describe a specific behavior.
1st define and name a behavior
2nd write code for the method
Which parts of the program should be methods?

choose a behavior




Any complex, well-defined step
Any sequence of steps that more than 1 Jeroo will perform
Any sequence of steps that occur several times.
A good behavior to turn into a method has a very clear
definition and is used more than once in the program.
Writing the method

A Jeroo method contains the code describing what any
Jeroo needs to do to carry out a particular behavior.
method method_name ( )
{
Body of method
Containing statements that
describe how any arbitrary
Jeroo can carry out this
particular behavior.
} //== method_name==
•Choose a name that is
meaningful
•Empty parenthesis
required on the header
line (first line)
•Indent code inside the
method
Important differences
Main method




Only one main method
Must be called main
Always comes first
Instantiate Jeroos
Jeroo methods




Can be many other methods
Choose your own names
Must be called by the main
method
Can’t instantiate in the
method
Example of a Jeroo method
Comments clearly explain what the
method does
//***********************************************************
//Turn Around: makes a Jeroo turn 180 degrees
//***********************************************************
Good , descriptive name for the method
method turnAround( )
{
turn(LEFT);
turn(LEFT);
}
The code is indented
Notice that no Jeroo name is
specified in the steps
// === end turnAround ===
Everything in yellow is good! 
Important difference
Main method

All steps must specify which
Jeroo does each action:
objectname.method();
Example in main for a Jeroo
named betty
 betty.pick();
 betty.hop(2);
 betty.give(AHEAD);
Jeroo methods
Define a behavior available to
ALL Jeroos so do not specify
which Jeroo performs the
steps inside the method
Example in a Jeroo method for
any Jeroo
 pick();
 hop(2);
 give(AHEAD);

Using a Jeroo method

After you write your code
method plantCorner( )
{
plant();
hop();
turn(RIGHT);
hop();
plant();
} // === plant Corner ===

Use it just like any other method
method main( )
{
Jeroo ali = new Jeroo(5,5,8);
ali.plantCorner( );
} // === main ===
One method can call another

The plantThree method is used twice in the
plantRectangle method
method plantThree( )
{
plant( );
hop( );
B
plant( );
hop( );
plant( );
} //=== plantThree ===
method plantRectangle( )
{
plantThree( );
moveDown( );
A
plantThree( );
}//=== plantRectangle ===
Defined above
Must also
be defined
somewhere
Preconditions and Postconditions


A complete definition for a behavior includes:
Preconditions


Postconditions


Assumptions of what is true before the method is called
What will be true after the method is finished
In Jeroo, the only things that change are:


island cells (flower planted, net gone…)
Jeroo attributes (location, number of flowers …)
Things to consider when writing a precondition

What must be true for this method to work?

Ask: does the Jeroo need




A certain number of flowers?
To be facing a particular direction?
To be in a certain location?
Ask: are the contents of certain island cells important?
//********************************************
//Plant 3 flowers in a row starting at current location
//PRECONDITIONS:
//
1. There are 2 clear spaces directly in front
//
2. Jeroo has at least 3 flowers
//********************************************
method plantThree( )
{…
Things to consider when writing a postcondition

Describe what is true after the method finishes

Ask: how will the method change




the number of flowers?
the direction the Jeroo is facing?
the Jeroo’s location?
Ask: have the contents of certain island cells changed?
//
// POSTCONDITIONS:
//
1. Three flowers have been planted, starting at the
//
beginning location and proceeding straight ahead
//
2. The jeroo is standing on the last flower,
//
facing its original direction
// ********************************************
method plantThree( )
{
…
The End