CS111 Lab 3

Wednesday, September 27, 2000

EXERCISE 1: Invocation Tree

Given the following code below, draw an invocation tree for [LBW1].run(), where [LBW1] is an instance of LabBuggleWorld in Object Land.


public class LabBuggleWorld extends BuggleWorld { public void run () { LabBuggle barb = new LabBuggle(); Color c = Color.blue; barb.forward(2); barb.turnAround(); barb.jump(2,3); barb.colorTwo(c.darker()); barb.isOverBagel(); } } class LabBuggle extends Buggle { public void turnAround () { this.left(); this.left(); } public double jump (int right, int up) { Point p = this.getPosition(); this.setPosition(new Point(p.x+right, p.y+up)); return this.distanceFromStart(); } public double distanceFromStart () { Point p = getPosition(); int x = p.x-1; int y = p.y-1; return Math.sqrt((x*x)+(y*y)); } public void colorTwo (Color c) { forward(); setColor(c); backward(); } }


EXERCISE 2: Escher Knitting Patterns

Read about the Escher knitting patterns from Problem Set 3. Below are three practice knitting patterns to figure out. The skeletons for the methods are in the LabKnitWorld.java file.


labKnit1(Color.red, Color.green)


labKnit2(Color.magenta, Color.blue)


labKnit3(Color.blue, Color.red,
Color.cyan, Color.magenta)

 

Note: The patterns above can be viewed by loading the SeeKnit.html file in the Test folder.


EXERCISE 3: Simple QuiltWorld Patterns

First, a gentle introduction to quilting (Tasks 3a & 3b):

Task 3a Suppose you are given the following black box method:

public Picture triangle (Color c)
Returns a Picture of a triangle of the specified Color whose vertices are at (0,0), (1,0), and (0,1).

For example,


triangle(Color.green);

Using only the methods in the PictureWorld contract, write (on paper) the expressions which will return the following Pictures:


picture 1


picture 2


picture 3


Task 3b

Evaluate the following expressions. Draw (on paper) the Picture that each represents. Indicate the colors in whatever way is convenient (colored pencils, markers,etc.). Do not write a program to run on the computer to show you the pictures; do it by hand!

picture 4

overlay(clockwise90(triangle(Color.blue)),triangle(Color.blue));

picture 5

above(fourSame(flipDiagonally(triangle(Color.yellow))),
      beside(triangle(Color.green),
             above(empty(), flipVertically(triangle(Color.green)))));


Task 3c

Read about QuiltWorld in Problem Set 3. Below are two simpler quilt designs to figure out. The skeletons for the methods are in the LabQuiltWorld.java file.


diamonds()


fourColors()

Note: The patterns above can be viewed by loading the SeeQuilt.html file in the Test folder.