Object-Oriented Design

Your Assignment

This assignment will test your ability to design classes from a description of a problem. This lab is mostly free-form in style.

You will write a program that simulates an Automatic Teller Machine (ATM). Each user will have access to only a checking account. Design your interface to be similar to what you see on your local ATM.

  1. The purpose of this assignment is to test your object-oriented design abilities.
  • You will need write multiple Python classes to solve this problem.
  • Remember, you will use the basic principles of constructing classes as discussed in class. Figure out your nouns, verbs, and the properties of your problem.
  1. Since debit card swiping is not possible here, instead ask the user of your program for user ID and a PIN. The user ID will be used to look up the info for the user’s accounts (including the PIN to see if it matches what the user types in).
  2. You can program some fake accounts and holders directly into your program, with starting balances, i.e. “Joe Smith” has user id jsmith and a balance of 1350 US dollars. You can program in any number of users you need. Hint: A dictionary is great for this.
  3. The user should able to check the balance of, withdraw from, or deposit into their checking account. You can add other actions (transfer between accounts) or accounts (savings, another checking) of your own, as well in addition to the require ones.
  4. You should have a main() function that uses any classes you wrote in some sort of interactive loop.
  5. The rest is up to you!


The implementation of this assignment will vary wildly between students, so no helpful output can be provided.

Submission Requirements

Your file is required to be named lab_ood.py.

Please read and follow the Submission Requirements to avoid point deductions specified below.


The following is the grading rubric for this lab to be used by the course graders. The lab is worth 100 points.

The solution to this assignment is open to interpretation, there won’t be one “right way” to do this so long as the basics are followed.

Note: There may be additional criteria for grading, this is just a summary of the major rubric items.

Grading Rubric
Type Description Point Loss (Max)
SyntaxError Exceptions A program that doesn’t even start due to syntax errors. -30
Docstrings Missing proper lab header (e.g. no name, lab section, etc) -10
main() Your program should have main() as the first-called function -10
PEP 8 Style Egregious problems with your code styling -10
Incorrect Filename Follow the submission instructions -5
Commenting Insufficient or excessive comments -5
  [Lab Specific]  
Multiple Classes Classes must be used to solve this lab -50
Interactivity Interactive for ATM commands, e.g. withdrawl, deposit, etc) -15
Proper OOD Appropriate object-oriented design style must be used -20 points
Checking Account Each user in your program should have at least a checking account -5
Account Actions Allow a minimal set of useful operations like check balances, withdraw cash. -10