02a LittleCrabProgram

advertisement
Program: Little Crab
Mr Gano
Little Crab Scenario
Inheritance
The Arrows Denote Hierarchy
Crab is an Animal
Animal is an Actor
Therefore, It Follows That
The Crab is Also an Actor
Crab Game
Start Greenfoot and open the little-crab scenario. Place a crab into the
world and run the program (click the Run button). What do you
observe? (Remember: If the class icons on the right appear striped, you
have to compile the project first.)
Press the Run button and nothing happens. This is due to the fact that
there are no instructions in the act() method.
Click Run and Nothing Happens
Open the source code for the Crab object by right clicking
on the Crab object and selecting Open editor.
Right Click the Crab Class
Click On Open Editor
Here we can see that the act() method is empty. This means there are no
instructions for the crab and that is why the crab does nothing when
told to act.
When Run is Clicked
the Crab does nothing
This is because there is no Source Code in the
act Method for the Crab.
Making the Crab Move
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
/*
* This class defines a crab. Crabs live on the beach.
*/
Replace the comment with
public class Crab extends Animal
move();
{
public void act()
{
// Add your action code here
}
}
move() method added to the act() method
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
/*
* This class defines a crab. Crabs live on the beach.
*/
public class Crab extends Animal
{
public void act()
{
move();
}
}
Compile after editing the act() method
Add the call to move( );
Click Compile
Place a crab in the world
Right Click on the Crab Class
Drag a Crab into the World
Click the Act and Run Buttons
Click Run and the crab moves to the end of the world
Crab Moves to Edge of the World
More than one crab
Place Multiple Crabs into the World
Click the Act and Run Buttons
All crabs hit the edge of the world
Crabs All Move to Edge of the World
Turning
public void act ()
{
turn (5);
}
Work with the turn() method to get the crab to make a turn
Set turn to 5 and recompile
Crab spins to the right with a positive integer
Crab Spins to the Right
Try another parameter to see what the crab will do.
Set turn to -5 and recompile
Crab spins to the left with a negative integer
Crab Spins to the Left
Code
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
/*
* This class defines a crab. Crabs live on the beach.
*/
public class Crab extends Animal
{
public void act()
{
move ();
turn (5);
}
}
Methods instructing crab to move and turn
move and turn
The result of the code here is the crab turns in a circle
Crab moves in a circle
Syntax error message
Syntax Error - Expected Semicolon
Try to cause more errors
Make various changes to cause different error messages. Find at least
five different error messages. Write down each error message and what
change you introduced to provoke this error.
1. ‘;’ expected
2. cannot find symbol - method Move()
3. turn(int) in Animal cannot be applied to (int,int)
4. turn(int) in Animal cannot be applied to (double)
5. act() in Crab cannot override act() in Animal; attempting to use
incompatible return type
6. cannot find symbol - class voids
7. unclosed comment
8. class, interface, or enum expected
9. illegal start of type
10. illegal start of expression
Dealing with Screen Edges
Right Click on Animal Class
and Click on Open editor
Documentation View
Method
Summary
Switch Between
Source and Documentation
Documentation View
Open the editor for the Animal class. Switch to Documentation view.
Find the list of methods for this class (the “Method Summary”). How
many methods does this class have?
Method Signatures
Return Type
Method Name
Parameters
void turn (int angle)
boolean atWorldEdge ( )
void move ( )
Source for atWorldEdge ( )
/*
* Test if we are close to one of the edges of the world. Return true is we are.
*/
public boolean atWorldEdge()
{
if(getX() < 20 || getX() > getWorld().getWidth() - 20)
return true;
if(getY() < 20 || getY() > getWorld().getHeight() - 20)
return true;
else
return false;
}
Find boolean atWorldEdge() method
Create a crab. Right-click it, and find the boolean atWorldEdge()
method (it is in the inherited from Animal submenu, since the crab
inherited this method from the Animal class). Call this method. What
does it return?
Right click to find the atWorldEdge() method by selecting
‘inherited from Animal’ and then clicking on ‘boolean
atWorldEdge()
Right Click on the Crab and
Select inherited from Animal
Then Click on
atWorldEdge ( )
Here we can see the boolean value that is returned
from the method atWorldEdge()
See what boolean value is returned from atWorldEdge()
when the crab is at the edge of the world
Move the Crab to the Edge of the
World and Repeat the Experiment
Here we see the value returned as true when we
check on the atWorldEdge() method
Code for setting conditions of atWorldEdge() method.
This condition tells the turtle to turn 17 degrees when it
hits the edge of the world
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
/*
* This class defines a crab. Crabs live on the beach.
*/
public class Crab extends Animal
{
public void act()
{
if ( atWorldEdge ( ) )
{
turn (17);
}
move ( );
}
}
Make a crab turn when it hits the edge of the world
Crab Runs Around the World
Turning when it Encounters a Wall
Set the Turn to 180 and the Crab
Should Reverse Direction
Crab Moves from Side to Side
Place the move () Inside the
if Statement
We now see the crab following its given instructions
If the Crab is Not Near the Edge Nothing Happens.
If the Crab is at the Edge, Then It Turns Around.
Summary of Programming Techniques
In this PPT, we have seen how to call methods such as
move( ), with and without parameters. This will form the
basis for all further Java Programming.
We have encountered a glimpse of inheritance. Classes
inherit the methods from their superclasses.
And, very important we have seen how to make decisions.
We have used an if-statement for conditional execution.
Concept Summary
A method call is an instruction that tells an object to perform an action. The action is
defined by a method of the object.
Additional information can be passed to some methods within the parentheses. The value
passed is called a parameter.
Multiple instructions are executed in sequence, one after the other, in the order in which
they are written.
When a class is compiled, the compiler checks to see whether there are any errors. If an
error is found, an error message is displayed.
A subclass inherits all the methods from its superclass. That means that it has, and can
use, all methods that its superclass defines.
Calling a method with a void return type issues a command. Calling a method with a
non-void return type asks a question.
An if-statement can be used to write instructions that are executed only when a certain
condition is true.
Download