Class-level Methods Alice. World / Class Method World method A general method that may refer to...

25
Class-level Methods Alice

Transcript of Class-level Methods Alice. World / Class Method World method A general method that may refer to...

Class-level Methods

Alice

World / Class Method

World methodA general method that may refer to

multiple objects; not closely associated with any particular class

Class methodA 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.

ExamplesA person walking

A wheel rolling

A fish swimming

Class Level Methods

These methods apply to a particular class of objectsThey 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 methodCreate 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 methodsthose directly provided by the classes

that are part of the Alice systemmove, turn, distanceTo, …

User-defined methods (and functions)those added to a world or class as part

of a programThese 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 Predefined methodsmethodsNote Edit buttonNote 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

ArgumentA piece of information passed to a method or

function that will be used in its computationsWorld.jump(who = Rabbit) // Rabbit is the Argument

ParameterA 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

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

Skate:Do together move skater forward 2 meters Do in order slide on left leg slide on right leg

Refined storyboard for skate

Refinement of slideLeftDo in order Lift right leg and turn upper body forward Lower right leg and return body upright Skate:

Do together 1) move forward 2 meters 2) Do in order slideLeft slideRight

Refinement of slideRightDo 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 InstructionLift the right leg turn the right thigh forwardTurn 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 classYour 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

Programming in Alice © 2006 Dr. Tim Margush 22

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 world-level one, or place it in another class

Programming in Alice © 2006 Dr. Tim Margush 23

Class Methods No-No's

Do not make methods too large

Instead, use step-wise refinementCreate smaller methods to accomplish the subtasks needed for more complex tasks

Programming in Alice © 2006 Dr. Tim Margush 24

Class Methods No-No's

Do not refer to other objects in your class-level methods

Those objects may not exist in another worldCamera 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

Assignment

Read Chapter 4-3 Class-level methods and Inheritance

Read Tips & Techniques 4 Visible and Invisible Objects