






Hotspots: Admin Pages | Turn-in Site |
Current Links: Case Final Project Summer 2007
Summer 2001 Midterm Review
Wouldn't you like to be a pepper too?
A midterm in 2340 is 4-5 questions like each of the below. Most of the questions below are from actual midterms. I won't post answers, but I will correct any mistakes I notice. You guys must supply the raw material, and you'll get as much out of it as you put into it.
Historical Context
- Who first used the word "object-oriented" to talk about programming systems?
- Name a person or company who designed an OO language within the last 20 years.
- How did ideas in a drawing program influence OO development?
- Name another programming approach that was popular when OO was first developing, and name a language of the time that exemplified it.
Put your answers/comment/questions at Sum2001 Midterm Review: Historical Context
Changed/Update mechanism
In the third Clock user interface, a Clock instance forms the model and a ClockText instance forms part of the user interface. Describe the sequence of messages that occur when a second of time passes by, such that the Clock is updated and the updated time is displayed by the ClockText.
Put your answers/comments/questions at Sum2001 Midterm Review: Changed/Update
OO Theory
- What is a class? What is an instance?
- What is the difference between a class and instance method?
- What is the difference between a class and instance variable?
Put your answers/comments/questions at Sum2001 Midterm Review: OO Theory
Design Critique
A friend is designing a problem for his job, and they have asked you to critique it. What's going wrong in each of the following situations?
- "Here are my CRC cards. This class here is named MapLinkedList and it is a collection of all the Map objects in the system..."
- "Here is my object ProcessMap. It knows its Map and it does the basic processing needed to get it on my website..."
- "But everything is controlled here by the MapManager object. No other object processes without confirming it with the MapManager."
Put your answers/comments/questions at Sum2001 Midterm Review: Design Critique
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.
- 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.
- 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 Sum2001 Midterm Review: Hotel Doors OOA/D
Write Smalltalk Code
Write workspace code (something I can select and say DoIt in the workspace) to draw the below figure. Don't worry about exact sizes–just draw two rectangles with the text inside. (To remind you, Pens know how to up, down, go:, turn:, and north:. Strings know how to displayAt: a given point.)

Put your answers/comments/questions at Sum2001 Midterm Review: Write Smalltalk Code
UML Class Diagramming
Draw a UML class diagram for the set of classes described below.
- A Student has a name, a student number, a major, and a transcript. A student knows how to change her major, can report her name or student number, and can provide a grade for a given course.
- A Transcript has a collection of course grades. It knows how to add a course grade, and how to look up a grade for a given course.
- A Major has a department name and a list of courses that are required. It only has accessors.
- A Course has a name, and a number of credit hours associated. It knows how to respond with its name.
- A CourseGrade has a course and agrade associated. It has accessors for each.
Put your answers/comments/questions at Sum2001 Midterm Review: UML Class Diagramming
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 addStudent: s.
s := Student new name: 'Wilma'; section: 'b'; number: '3456789012'.
c addStudent: 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 Sum2001 Midterm Review: Analyze Student/Classroom Code
Reading Code
| anArray aString |
anArray := #('abc' 'def' 'ghi','jkl').
aString := ''.
anArray do: [:each |
aString := aString, each.].
Transcript show: aString.
- What appears on the Transcript ?
- How many times did the body of the do: loop get executed?
| i test |
i := 1.
test := (i < 10).
[test] whileTrue: [Transcript show: 'hello'.
i := i + 1.].
- How many times does hello get printed in this example?
Put your answers/comments/questions at Sum2001 Midterm Review: Reading Code
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?
- Write the methods insert for key; start and run for engine; and turn for the wheel.
- Write whatever accessor methods you need to make the above example work.
- Write the workspace code that you'd use to create the above scenario
Put your answers/comments/questions at Sum2001 Midterm Review: Simulate a Motorcycle
More Drawing in Smalltalk
- Using Pen, write the code to draw an equilateral triangle.
- Using the Box class, write the code to draw a pyramid of three boxes.
- Explain what this code will do:
| joe |
joe := Box new.
30 timesRepeat: [joe turn: 12.]
Put your answers/comments/questions at Sum2001 Midterm Review: More 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.) 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 Sum2001 Midterm Review: Analyzing the Robot Car
Links to this Page