CompSci 4Chap 4 Sec 3 – Part 2Feb 17, 2005Prof. Susan RodgerNote: thanks to Wanda Dann and Steve Cooper for slide ideasAnnouncements• Read Chapter 5.1 for next time• Assignment 5 out today• Prof Rodger – extra office hours friday, no office hours next week!What we will do today• Lecture on Chap 4 Sec 3 (continued)• ClassworkGuidelines• To avoid misuse of class level methods– Avoid references to other objects– Avoid calls to world-level methods– Play a sound only if the sound has been imported and saved out as part of the new class• If these guidelines are not followed and an instance of the new class is added to another world– Alice will open an Error dialog box to tell you something is wrongBad Example 1Bad Example 2Problem• What if you were convinced you needed to write a class-level method where another object is involved?• For example, a method for ice skater to skate around another object – here a penguinSolution• Class-level method with object parametercleverSkater.skateAroundParameter: whichObjectDo in orderDo togethercleverSkater turn to face whichObjectcleverSkater lift right legcleverSkater move to whichObjectcleverSkater turn around whichObjectTranslating Design into Code• Most of skateAround storyboard easy to code• Last two steps, require more thought– cleverSkater move to whichObject• What distance should cleverSkater move?– cleverSkater turn around whichObject• How do we tell cleverSkater to turn (in a circle) around another object?Built-in Functions (or questions)• The built-in function distance to– used to determine the distance the skater must moveCalling the function• Code to move skater to whichObjectOops, skater will collide with penguin!Distance between two objects ismeasured center-to-centerExpressions• To avoid collision– Use math operator to create an expression that adjusts the distance• Math operators in Aliceaddition + subtraction -multiplication * division /•Example:How to put in an Expression2 3 1 4 Result:ResultStops before penguin Skates around penguinasSeenBy• For skater to skate around another object–Pass whichObject as an argument to asSeenBy parameter in turn instructionMore on AsSeenBy• Use invisible object (isShowing set to false) to have objects fly around in a circleTesting• Each time you create a new class, test it!– Add an instance of new class to new world– Write a short test program • Test each new method• Testing increases your confidence in the ability to reuse your code in other worldsClasswork today• Modify your two classes from last time– Add methods with parameters– Use asSeenBy– Use isShowing– Use math• Create a new world with 3 objects and demo• See handout for more
View Full Document