Title: CS320n
1CS320n Visual Programming
- Class-level Methods and Inheritance Part 1
- Mike Scott
- (Slides 4-3-1)
Thanks to Wanda Dann, Steve Cooper, and Susan
Rodger for slides
2Reminders
- Assignment due tonight by 11 pm
3What We Will Do Today
- Learn about class level methods and inheritance
- class work
4Animated 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
- If the action involves 2 or more objects in the
world it should be a world level method
5Class-level Methods
- Write a method to add abilities / functions /
actions / behaviors to a specific class of
objects - class-level method
- NOT world-level methods
- Demo how to build class-level method
6An Example
- How can we create a skate method for ice skater
objects?
- We need to
- create a new method for the ice skater
- add code to the new method to make it look like
the skater skates
7Demo The solution
- First, to associate the behavior 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
8Storyboard for skate
Skate Do together move skater
forward 2 meters Do in order slide
on left leg slide on right leg
- The slide actions
- require several motion instructions
- so well break these two actions into smaller
pieces - a technique known as stepwise refinement (and
abstraction)
9An Aside
- Shouldnt the skater already know how to skate?
- Should people already know how to walk?
- The objects in Alice are simply 3D models created
in other programs - articulating, coloring, setting center point
- When added to Alice all objects have certain
basic behaviors, move, turn, roll, - programmers must write code for more complex
behaviors - CLASS-LEVEL METHODS!
10But This Seems So Hard
- Anecdote 1 Show Kelly Scott anything cool the
computer does - Anecdote 2 Finding Nemo. Making the viewer
believe Dory can barely say what she is thinking
and how sad she is - It is hard. It is complex. Take a look at the
penguin method walk
11Penguin Method Walk
and there is more after this. Bottom line.
Interesting behaviors are usually complex
12Refined storyboard for skate
Refinement of slideLeft Do 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 slideRight Do in order Lift
left leg and turn upper body forward Lower
left leg and return body upright
13Writing 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 upper body
forward - Lower the right leg turn the right thigh
backward - Return the body upright turn the upper body
backward
14Demo
- Demonstration of
- slideLeft
- slideRight
- skate
- Could we parametize slideLeft and slideRight?
- should we?
15Correspondence of design to code
Skate Do together move skater
forward 2 meters Do in order slide
on left leg slide on right leg
16Question
- 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? - any other ice skaters in this world DO NOT know
how to skate
17Answer Save out as a new class
1) Rename iceSkater as advancedSkater. 2) Save
out as a new class. Alice saves the new class as
AdcancedSkater.a2c
18Inheritance
- The AdvancedSkater class
- inherits all the properties and methods from the
original IceSkater class, and also - has the newly defined methods (skate, slideLeft,
slideRight) - In other programming languages, the concept of
creating a new class based on a previously
defined class is called inheritance. - object oriented programming. As opposed to
procedural programming or functional programming
o or
19Using CleverSkater
- An instance of the CleverSkater class can be
added to a new world use FileImport.
20Benefits of Inheritance
- Inheritance 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
- The best code in your program is the code you
didnt have to write!