Programmer-Match: Dating for the 0x15th Century

Part 0b01 (that's binary)
Programmer-Match is an online dating service that is specifically designed to match computer programmers to other computer programmers using characateristics that we find important. Anyone can login to the programmer match system and create a profile. That profile should contain their name, password, email address, IQ and a list of all programming languages they know. For each programming language they should include a proficiency level (1-10) and the total number of lines of code they have written in that language (ever) --- one number. They must be able to enter zero to as many programming languages as they would like.

The user can then ask to find their matches. The system will then match the users and display those matches. Users can then view the detailed information about each match. The system allows a user to send email to another user, but does not display email addresses due to privacy concerns.

The system should maintain a database of statistics with the number of searches completed and number of emails sent. The system must also separately maintain the number of emails sent and searches completed by programming language. (For example, we want to be able to answer the question are Java, C, or .Net programmers more successful using our system.). Remember, there is no limit on the number of unique programming languages supported by our system.

Part 0b10 (that's binary)

"Joke: There are 10 kinds of people in this world. Those who understand binary and those who don't"

In part 2 you will test your class diagram. For the following use-cases write out the series of method calls from your class diagram to accomplish these tasks. This is how to verify class diagrams "work". Methods from a high-level class diagram will describe WHAT you want to do, not HOW you want to do it. For example, you can write a method called "validatePassword" asuming the object you are in has all the relevant information to validate it. You do not need to specify HOW the password is validated, that is an implementation decision we're not making right now. You do need to make sure you have all the information though. If you don't, you need to ask another object for it.

A. Register a new user. (Hint: Did you get all the information needed to the class to create the user? )
B. User logs in and searches for matches and then emails one of them. (Did you update all the statistics correctly?)
C. An administrator looks up the number of emails sent by Java programmers