Just another (occasional) brain dump on technology and the technology industry...

About Me

My photo
I enjoy wine, laptops, walks, bicycling with the kids and long drives. I am constanly reading. In my heart I am a teacher a salesman and a technologist.

Saturday, August 30, 2008

Introducing the Rolodex

What is a Rolodex?

According to Wikipedia, a "RolodexTM (Rolling Index) is a rotating file device used to store business contact information currently manufactured by Newell Rubbermaid. The Rolodex holds specially shaped index cards; the user writes the contact information for one person or company on each card. Many users avoid the effort of writing by taping the contact's business card directly to the Rolodex index card. Some companies have produced business cards in the shape of Rolodex cards, as a marketing idea.

The Rolodex was invented by Arnold Neustadter in 1958...."

Why is a Rolodex interesting?

A Rolodex makes for a great example of a physical device that can be implemented as software. When one looks at it closely one can easily identify object-oriented principles.



  • Abstraction - a person is a contact.

  • Association (or composition or aggregation) - a person works for an organization, a person has given names and so on.

  • Polymorphism - a contact's string representation will look different depending on whether the contact is a person or an organization.

What goes into a Rolodex?


A Rolodex stores contact information. A contact can have a couple of telephone numbers, email addresses and addresses. A contact may be a person or an organization. A person has given names, a family name, a gender and a birth date. An organization has a name. A person may be associated with an organization. An organization may have many employees.


What can one do with a Rolodex?


You can add, remove, find and edit contacts. You can also add, remove, edit and find telephone numbers, email addresses and addresses for contacts. You my want to update a person or an organization's information from time to time.


Why did I describe the Rolodex?


Because I want to show how to implement a software solution that can take the place of a Rolodex. Over the next couple of weeks I want to show how you will go about implementing the Rolodex mainly using Java technology. I will cover the following topics:



  • Rolodex's interfaces.

  • Persisting Rolodex entities in an XML file using JSE technologies.

  • Persisting Rolodex entities in a relational database via JPA using JSE technologies.

  • Accessing Rolodex functionality as JEE components.

  • Exposing the Rolodex as a Web Service.

  • Exposing the Rolodex via JSF.

  • Exposing the Rolodex via SEAM and,

  • using .NET and web services technologies to expose the Rolodex as a .NET client.