Fundamentals of Computer Science I (CSC-151.02 2000F)

Lab: Object-Oriented Programming


Exercise 0: Preparaton

a. Take the quiz.

b. Do the reading on object-oriented programming

Exercise 1: A Single Tally Object

Define a one-field object tally that responds to exactly four messages:

The initial value of the field should be 0.

Exercise 2: Testing Switches

Test the switches created by the make-switch procedure from the reading. Here are a few possible instructions.

> (define lamp-switch (make-switch))
> (define vacuum-cleaner-switch (make-switch))
> (lamp-switch ':show-position)
> (vacuum-cleaner-switch ':show-position)
> (lamp-switch ':toggle!)
> (lamp-switch ':show-position)
> (vacuum-cleaner-switch ':show-position)
> (lamp-switch ':toggle!)
> (vacuum-cleaner-switch ':toggle!)
> (lamp-switch ':show-position)
> (vacuum-cleaner-switch ':show-position)

Exercise 3: Making Generic Tallys

a. Define a make-tally procedure that constructs and returns objects similar to the tally object you defined in exercise 1.

b. Create two tally objects and demonstrate that they can be incremented and reset independently.

Exercise 4: Tallys with Initial Values

Write a new make-tally procedure that allows the client to create new tallys with a specied initial value. For example, I might say that a starting grade is 90 with

> (define grade (make-tally 90))

I would then increment and decrement it as students do good or bad work.

Exercise 5: Monitored Tallys

a. Define a constructor procedure, make-monitored-tally, for objects similar to the tally objects from exercise 2 above, except that each such object keeps track of the total number of messages that it has received.

Hint: For this exercise, you will want to make a two-element vector. Element 0 of that vector will be the value of the tally. Element 1 of that vector will be the count of operations.

b. Test your procedure.



Disclaimer Often, these pages were created "on the fly" with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.

This page may be found at

Source text last modified Wed Dec 6 10:21:08 2000.

This page generated on Wed Dec 6 10:24:20 2000 by Siteweaver. Validate this page's HTML.

Contact our webmaster at