View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Spring2004 M1- Create a set of genealogy objects and write a GEDCOM file

note that we have changed the method for setting gender to properly match conventions... sorry for the confusion we caused

Genealogy systems are typically organized around information about individuals (persons) and about biological families. In this first project you will define objects to represent persons and families, provide methods to associate information with persons and families and create a text representation of your objects in a standard genealogical interchange format.


1. You will create an object to represent an individual by sending new to Person. You must implement the following methods to associate information with a person (assume that p := Person new. q := Person new. r := Person new.) :
Note that these can occur in any order and that the information about a person may be incomplete.

2. You will create an object to represent a family by sending new to Family or by sending the message Family new husband: p wife: q. to create a family and specify the members of the couple. Information can be associated with a family in the following ways (assume f := Family new.):
Note again that information can be incomplete. For instance, a family can be defined with only one of the parents being specified or even with neither parent specified.

3. There is a standard format for genealogical data. It's called GEDCOM. You can learn about GEDCOM at various places on the Web, including

For a quick tutorial and the list of GEDCOM tags, look at

The GEDCOM standard is at There is a good example at the end of Chapter 2.

You are to create the ability to export your genealogical data from your tool and demonstrate that your output meets the standard by using it with a freely available GEDCOM-reading tool. GEDCOM's a pretty complicated format, but you only have to use enough of it to encode the kinds of information required above.

Tools for processing GEDCOM files which you can use to demonstrate that you write standard GEDCOM are:

4. Test the classes you implement using SUnit. You should have SUnit classes PersonTest and FamilyTest that test Person and Family. These should be runnable from within TestRunner and contain tests for each method.


Before class time on the due date, turn-in your well-documented code (at least two lines of comments for each non-accessor method, in-line comments at significant portions) using the turnin coweb:

Links to this Page