






Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Midterm Review - Sp2000
A midterm in 2340 is 4-5 questions like each of the below. Most of the questions below are from actual midterms in CS2390.
I recommend working together to figure out the solutions. I will check up on the discussions, but I won't provide answers where no answers are posted.
Unless you need to edit/repair something here, do not edit this page! Put your answers on the answer page. If you do edit this page, please be careful with the formatting. Thanks! Mark Guzdial
Swing as MVC
Swing is conceptually based on MVC (Model-View-Controller). Where is each part? Are models the same as in Squeak? Are views the same? Where is the controller? How are dependencies handled?
Put your answers/comments/questions at Sp2000 Midterm Review: Swing as MVC
O-O Systems
(a) What's a class? What's an instance?
(b) What's the difference between a class and instance method?
(c) What's the difference between a class and instance variable?
(d) What are the strengths and weaknesses of a prototype vs. class-based object system?
Put your answers/comments/questions at Sp2000 Midterm Review: O-O Systems
Hotel Doors OOA/D
You have been hired to design a door lock and tracking system for a hotel. These are doors that are opened with a key card that contains an encoded number of some sort. NOTE: The keys have no processor nor network connection. You can't "talk to" a key.
- Each door lock has a connection to a central lock database
- A master key should open any door.
- A customer is given one or more keys that should open the door that she is assigned to
- If a customer loses a key, all the current keys should be made invalid, and only the new keys should be accepted.
- When a customer checks out, all the current keys should be made invalid, and only the new keys should be accepted.
(a). Name at least two classes that you would need in the design for this system, and two classes that you might consider but would reject. Give your reasons for rejecting those two classes.
(b) On the back of this sheet or on a separate sheet that you attach to the exam (remember, each problem will be graded separately!), draw the CRC cards for this scenario:
A customer gets a card key, takes it to the door, puts it in the door lock which checks if it's valid, then the door opens because it is valid.
Put your answers/comments/questions at Sp2000 Midterm Review: Hotel Doors OOA/D
Analyze Student/Classroom Code
Imagine that I have a Student object in a Classroom object, something like this.
| s c |
c := Classroom new name: 'CS2390'.
s := Student new name: 'Fred'; section: 'a'; number: '123456789'.
c add: s.
s := Student new name: 'Wilma'; section: 'b'; number: '3456789012'.
c add: s.
s := Student new name: 'Barney'; section: 'a'; number: '012345678'.
"...More code here..."
a. (7 points) What would you say is the relationship between Student objects and the Classroom object is? Why?
b. (10 points) What attributes and services do you think that the Student and Classroom objects have, based on what you see in the above code?
Put your answers/comments/questions at Sp2000 Midterm Review: Analyze Student/Classroom Code
History of Object Systems
- What is Sketchpad?
- What is Simula?
- What do they have to do with C++?
Put your answers/comments/questions at Sp2000 Midterm Review: History of Object Systems
Short Essays
a. Explain how object-oriented programming is related to simulations.
b. What is a CRC card? What are they good for? When do you use them?
c. Explain in what sense inheritance is a form of delegation.
d. Why is it useful to think about objects as "biological cells"? (Hint: Think about scalability and about modularity.)
Put your answers/comments/questions at Sp2000 Midterm Review: Short Essays
Reading Code
| anArray aString |
anArray := #('abc' 'def' 'ghi','jkl').
aString := ''.
anArray do: [:each |
aString := aString, each.].
Transcript show: aString.
a. What appears on the Transcript ?
b. How many times did the do: loop get executed?
| i test |
i := 1.
test := (i < 10).
[test] whileTrue: [Transcript show: 'hello'.
i := i + 1.].
c. How many times does hello get printed in this example?
Put your answers/comments/questions at Sp2000 Midterm Review: Reading Code
Definitions
Define each and give an example.
a. What is Inheritance?
b. What is Delegation?
c. What is Polymorphism?
Put your answers/comments/questions at Sp2000 Midterm Review: Definitions
Draw a Class Diagram of a Student Registration System
You have just completed an analysis of a student registration system:
- Students have names, student numbers, and a transcript
- Transcripts list the sections that a student has taken and the grade for each.
- A Section is an offering of a Class that has a time and term associated with it, and a number of students who took the class that quarter.
- A Class has a name, a number (e.g. "CS2390"), and a number of credits associated with it.
Draw a class diagram for these classes.
Put your answers/comments/questions at Sp2000 Midterm Review: Draw a Class Diagram of a Student Registration System
Simulate a Motorcycle
Imagine an object-oriented simulation of a motorcycle.
- When the key is inserted into the ignition, the
key
object tells the engine
object to start
.
- The engine should then start to run. When the
engine
object is running, it prints Putt! to the Transcript
once a second.
- Each time the
engine
objects "putts," it sends a message to its wheel
object to turn
.
- When a
wheel
object turns, it prints Turn! to the Transcript.
What instance variables are you going to need for each of the key, engine, and wheel classes?
(b) Write the methods insert for key; start and run for engine; and turn for the wheel.
(c) Write whatever accessor methods you need to make the above example work.
(d) Write the workspace code that you'd use to create the above scenario
Put your answers/comments/questions at Sp2000 Midterm Review: Simulate a Motorcycle
Drawing in Smalltalk
1.Using Pen, write the code to draw an equilateral triangle.
2.Using the Box class, write the code to draw a pyramid of three boxes.
3.Explain what this code will do:
| joe |
joe := Box new.
30 timesRepeat: [joe turn: 12.]
Put your answers/comments/questions at Sp2000 Midterm Review: Drawing in Smalltalk
Analyze Robot Car
A robot is being designed to explore the surface of Mars autonomously.

Features of this robot include:
- Six wheels A-F (three per side) which can go forward or backward independently. There is a Controller that can also activate all wheels at once.
- Two sets of sensors. Sensors can be on or off.
- An array of twelve distance sensors 1-12 around the perimeter. Distance sensors report distance to nearest obstacle in direction of sensor.
- An array of four light sensors pointed upward and outward: L3, L6, L9, and L12. Light sensors report brightness.
- A solar panel on an axis and motor capable of turning 360 degrees.
You are being asked to write some of the operating software for this robot.
Create a class diagram for the robot.
(You don't have to add more than what's in the above example.) Note: Partial credit will be given, so err on the side of too much, not too little. In your analysis, be sure to address:
- What classes do you need? What service do each need to provide? What attributes do each need to know?
- Where are there generalization-specialization relationships? Where are there part-whole relationships?
Put your answers/comments/questions at Sp2000 Midterm Review: Analyzing the Robot Car
Code for Robot Car
Code for Robot Car: Here is part of the vehicle avoidance method for the robot:
moveBackAfterBumpingFront: sensor
sensor = 11
ifTrue:
[ "Assume that we1ve bumped our front left bumper"
"Shift all wheels into reverse gear"
#('a' 'b' 'c' 'd' 'e' 'f') do: [:each | each shiftRear.]
"Activate all wheels for one second."
wheelsController activateFor: 1.
"Shift left side wheels into forward gear."
#('a' 'b' 'c') do: [:each | each shiftForward.].
"Makes left wheels go forward while right wheels go reverse -- left turn."
wheelsController activateFor: 1.
].
Write the analagous code for bumping the front right bumper.
sensor = 1 ifTrue:
[
Your code goes here
]
Put your answers/comments/questions at Sp2000 Midterm Review: Coding the Robot Car
Links to this Page