[Current] [News] [Glance] [Discussions] [Instructions] [Search] [Links] [Handouts] [Outlines] [Readings] [Labs] [Homeworks] [Quizzes] [Exams] [Examples] [Fall2000.01] [Spring2000]
a. Take the quiz.
b. Do the reading on object-oriented programming
Define a one-field object tally
that responds
to exactly four
messages:
':show-contents
,
':set-contents-to-zero!
,
':increment!
, which has the effect of increasing the
number stored in the contents
field by 1.
':decrement!
, which has the effect of decreasing the
number stored in the contents
field by 1.
The initial value of the field should be 0.
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)
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.
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.
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.
[Current] [News] [Glance] [Discussions] [Instructions] [Search] [Links] [Handouts] [Outlines] [Readings] [Labs] [Homeworks] [Quizzes] [Exams] [Examples] [Fall2000.01] [Spring2000]
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 http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2000F/Labs/oop.html
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 rebelsky@grinnell.edu