The purpose of this lab is to learn how to analyze a real world design
and implement a solution in Squeak.
THIS IS AN INDIVIDUAL LAB - No Collaboration.
There are two main things to keep in mind while completing this lab:
1. Correctly implement a solution to the stated problem, and
2. Write clear, readable, modifiable, and maintainable code
(Hint: This means one of your fellow students will likely have to work with your code someday soon!)
Real World Scenario:
You love watching the "Crocodile Hunter" and Steve Irvin is one of your great role models. You always wanted to be just like Steve: handling deadly snakes with his bare hands and jumping on crocodiles. It's your dream to meet up with the famous Irvin and travel beside him on his journeys.
Upon hearing that Irvin was bitten by a crocodile and needing twelve stitches to patch his leg up, you became to realize the potential dangers involved in interacting with wild animals. For a couple of days you cowered in fear when even remotely thinking about walking in a forest. Luckily, you had a dream where Steve came to you and said, "Hoy! It's true that a croc bit me, but I didn't let it get to me! I continued on and still am energetic as before! You must do the same! Don't let your fears get the best of you!"
You became revitalized and have no more fears. You said to yourself, "I must be strong for not only myself but for Steve! I must be worthy whenever I appear before his presence!"
You remembered that you built a cheap bat box for a previous lab assignment. You yourself have a soft spot for bats. In your journey of being familiar with wild animals, you want to start off with the bats. You want to create more bat boxes and actually mount them so you can attract the bats.
Being the Computer Science major that you are, you thought to yourself, "Hey, maybe I can write a small program to design and draw a prototype of my bat box before I actually build it!" You vaguely remember the requirements for a good bat box as being:
At least 2 feet tall
14 inches or more wide
Have a landing area extending below the entrance at least 3 to 6 inches
Roost partitions should be carefully spaced > to 1 inch apart
And in general, you remembered that taller and wider bat boxes attract more bats. Also most boxes have generally one to four roosting partitions, but it's good if you have more roosting partitions.
Thinking feverishly, you decide to create the code in Squeak, having
the ability to create BatBox classes, having the ability to define the
specifics for the box such as height, width, color, roost partitions, and
etc. From there, you can tell the BatBox class to draw itself with a FrontView,
SideView, and InsideSideView perspective. You have now began your journey
of a thousand miles with this single step.
Hints for the Lab:
If you haven't figured it out, we want you to create a BatBox class, given the specifics of it, able to store the information and draw itself. This is an individual lab and we do want you to use good coding style (commenting code if necessary, good OO, etc.), but code in any way as you wish and think is acceptable.
If you are lost on figuring out how to draw things in Squeak, look at the stuff for Joe the Box. Make sure that you are able to scale the box well and able to see the details needed (for inside-side-view, see the roosting partitions; for the front view, see the height and landing area; for the side view, see the height and the width, etc).
For a good idea of what the drawing should look like, check out: http://www.dnr.state.wi.us/org/land/er/publications/bats/bathouse1.htm
(but you don't need to have the size information and such with the drawing in this lab).
1. Create a BaxBox at user specified height, width, color, number of roosting partitions, and scale.
2. Draw the BatBox in any of three views: front, side, inside-side views.
3. Don't worry about location on screen or multiple drawings overlapping. User can refresh display in between draw messages. Your focus is the function of drawing to scale and specifications for now. But the drawing must show somewhere on the screen in its entirety.
1. Creates a BatBox and draws to screen at user specifications. 15 points.
2. The BatBox is drawn to scale: 10 points.
3. The Batbox can be drawn in all three views: FrontView, SideView, and InsideSideView. 20 points.
4. Uses good OO Design. 15 points.
5. Write clear, readable, modifiable, and maintainable code. 20 points.
6. Provide complete and correct README file. 20 points.
What you should turn in: Spring 2001 Turnin Instructions
1. Your code: l3.st
2. IMPORTANT: You must provide a thorough README file that will describe how your program works, what it does, how to test and run it. We will reserve the right for TA to give you a ZERO if you did not explain how to run and test your code. Someone else, who never saw your code, should be able to understand/run/reuse your code after reading your README file.