Class-level Methods

Download Report

Transcript Class-level Methods

Class-level Methods
Alice
World / Class Method
World method
A general method that may refer to
multiple objects; not closely associated
with any particular class
Class method
A method belonging to a class,
designed to operate on an object of that
class
Animated Actions
Some actions are more naturally
associated with a specific class of objects
rather than with the overall world.
Examples
A person walking
A wheel rolling
A fish swimming
Class Level Methods
These methods apply to a particular
class of objects
They are included as part of the class
template
Some classes have such methods
(beyond the primitive methods expected of
all objects)
Every instance of the class has such a
method
Create class level methods (functions)
to extend the functionality of the class
Class-level Methods
We can write our own methods to add
abilities/functions to a specific class of
objects
This will result in a class-level rather than a
world-level method
The next few slides will demonstrate
how to build class-level methods
Primitive / User-defined Methods
Primitive methods
those directly provided by the classes
that are part of the Alice system
move, turn, distanceTo, …
User-defined methods (and functions)
those added to a world or class as part
of a program
These consist of collections of primitive and
other user-defined methods
A Predefined Class Method
Mana (Local Gallery>People) has two
predefined methods
These are different from built-in methods
because you can edit them
Every instance of the Mana class has these
methods
Predefined
methods
Note Edit button
Designing Class Level Methods
Be sure it will apply to all objects of the
specific class
World level methods implement general
functionality that can be applied to many
different types of objects
Class level methods will apply to all objects
of the class
Each object created from the class will
include the new methods
Argument / Parameter
Argument
A piece of information passed to a method or
function that will be used in its computations
World.jump(who = Rabbit) // Rabbit is the Argument
Parameter
A placeholder for information passed to a
method (or function) by the caller; provides a
handle (name) by which the information is
referred to in the method
In method definition:
World.jump(who) // who is the parameter
who move up 1 meter
An example
(building technique)
How can we create a skate method for ice skater
objects?
We need to:
(1) tell Alice to associate the
new method (the one we
are about to write) with an
ice skater, and
(2) write a new method to
animate the ice skater
skating.
Demo: The solution
First, to associate the
animation with the ice skater
• select the iceSkater tile in
the Object Tree
•select the methods tab in the
details area
•click on the "create new
method" button
Storyboard for skate
Skate:
Do together
move skater forward 2 meters
Do in order
slide on left leg
slide on right leg
The slide actions each require several
motion instructions, so we will break
these two actions down into smaller
pieces… this technique is called
stepwise refinement
Refined storyboard for skate
Skate:
Do together
1) move forward 2 meters
2) Do in order
slideLeft
slideRight
Refinement of slideLeft
Do in order
Lift right leg and turn upper body forward
Lower right leg and return body upright
Refinement of slideRight
Do in order
Lift left leg and turn upper body forward
Lower left leg and return body upright
Writing the code
The next step is to translate the design
into program code.
For the slideLeft method, a possible
translation is:
Design step
Instruction
Lift the right leg
turn the right thigh forward
Turn upper body forward
turn the abs forward
Lower the right leg
turn the right thigh backward
Return the body upright
turn the abs backward
Demo
Demonstration of
slideLeft
slideRight
skate
Correspondence of design to code
Skate:
Do together
move skater forward 2 meters
Do in order
slide on left leg
slide on right leg
Question
Writing the methods to make an ice skater
perform a skating motion is an intricate
task.
Most likely, you would like to reuse these
new methods in other worlds.
How can you make the skate method
available for an ice skater in a different
world?
Answer:
Save out as a new class
1) Rename iceSkater as
cleverSkater.
2) Save out as a new
class. Alice saves the
new class as
CleverSkater.a2c
Creating a Class in Alice
Choose a class as a base class
Your new class will inherit everything
from the base
class
Create an object of the base
class
Add properties, methods, and
functions to the object's details
Test!
Save the object as a new 3D class
model
Using CleverSkater
An instance of the CleverSkater class can be
added to a new world – use File|Import.
Benefits of Creating a Class
New Classes supports
the reuse of program code -- allows the
programmer to write code once and use it
again later in different programs.
sharing code with others in a team project
Class Methods No-No's
Class-level methods should be closely
related to an object of the class
If not, consider making the method a worldlevel one, or place it in another class
Programming in Alice
© 2006 Dr. Tim Margush
22
Class Methods No-No's
Do not make methods too large
Instead, use step-wise refinement
Create smaller methods to accomplish the
subtasks needed for more complex tasks
Programming in Alice
© 2006 Dr. Tim Margush
23
Class Methods No-No's
Do not refer to other objects in your classlevel methods
Those objects may not exist in another world
Camera and world objects are a possible
exception to this rule
Instead, create a parameter (of type object)
and refer to the object in a more general
sense
Programming in Alice
© 2006 Dr. Tim Margush
24
Assignment
Read Chapter 4-3
Class-level methods and Inheritance
Read Tips & Techniques 4
Visible and Invisible Objects