Definition: A bowler is someone who could be a member of none or more leagues.  Each bowler has a unique ID number issued by the sanctioning body (USBC).  A bowler will have one address, birthday, and sex and may have multiple phone numbers and e-mail addresses.  These would remain the same regardless of what league the bowler belonged to.  Since a bowler could have different nicknames and deliveries depending on which league the bowler is a member, those traits are reserved for the Member object.

I have deliberately not provided for a middle initial or middle name.  People, like me, who use their middle name as a first name find this problematic.  If a middle initial or name is needed, then include it as part of the first name field, i.e.: W. Hayward or Sam E.

I do not provide a prefix (Mr., Ms., etc.) because I don’t feel it adds anything worthwhile.  The suffix is included because it can help differentiate between persons with the same name, and some people are very particular about it.

No effort is made to format the phone numbers, sanctionID, or e-mail address.  Besides the internationalization issues, there are other complications (like extension number for phones) which makes freeform entry more preferable.

An unresolved issue is whether there should be just one Vacant bowler, one for each sex, put the vacant as a Member, or allow the user to create multiple Vacant bowlers or members.

Variables:  Variables here

  Modifier Class Name Value
    Integer serializableVersionUID 1234567

Characteristics:

  Tic name object
  LastName String
FirstName String
Suffix String
AddressID Integer
Personal Phone (Cell) String
Work Phone String
Other Phone String
Birthdate BowlingDate
Sex Sex Enum
Sanction ID String
Personal E-mail String
Work E-mail String
Other E-mail String

Requirments:

  • Ticable
  • HasID
  • Serializable
  • Comparable and Comparator
  • Obsevable
  • new, to create a new instance using Tic default values.
  • RecordIO

Required Methods:

  • A no argument constructor.
  • Setters and getters for the characteristics.
  • The compare(Object, Object), compareTo(Object), and equals(Object) methods. (Comparable and Comparator)
  • Save() and Load() methods for saving/loading to a delimited file. (RecordIO)
  • Get a specific object using the ID.  The object may be in memory or need to be retrieved from a data store (file). (HasID)
  • A setDefaultValues() method may be needed.
  • String getName() which returns the name of the bowler.
  • Either isMale() or SexEnum getSex(), or both.
  • Int getAge() returns the age in years as of today.  A corollary method of int getAge(BowlingDate) to return the age as of the Bowlingdate argument would also be useful.
  • Boolean hasWon(AwardCriteriaID) for determining lifetime award eligibility.