list of dots Digital Research Alliance of Canada logo  NSERC logo  University of Ottawa logo / UniversitĂ© d'Ottawa

User Manual    [Previous]   [Next]   

Community Association

Requirements for this system are as follows:

You are in charge of the website of a community. Residents in the community can sign up to join the community association for a fee of $30. If they do, then they can vote for the executive of the association, can use facilities and attend certain events for free. Only one membership is required per residence and it must be renewed by the end of October each year (it is valid for one year). For each member the system stores the street address, apartment number (if there is one) the email address, the telephone number, and the names of the residents. Anyone under 18 is flagged, as there are special events for these people. The community runs a rink in the winter and three tennis courts in the summer. Members of the community association are given priority to sign up for blocks of time in these facilities, to a maximum of four hours per week. Residents who are not members can sign up 24 hours before their booked time, if there are still any free time slots. When a non-member signs up in this way, they need to give their name, street address and email address. Some time slots in the rink and tennis courts are left unbooked for free 'first-come-first-served' access.

Example

// UML class diagram in Umple showing a simple
// system for managing the data maintained by a
// community association

class Facility
{
  id;
  type;
  openPeriod;
  1 -- * Booking booked;
}

class Resident
{
  name;
  Boolean under18;
  emailAddress;
  telephoneNumber;
  executivePosition;
}

class CommunityResidence
{  
  streetAddress;
  Integer apartmentNumber;
  feePaidToDate;
  1 -- * Resident;
}

class Event
{
  Date date;
  Time time;
  Float fee;
  name;
}

class Booking
{
  Date date;
  Time startTime;
  Time endTime;
  Float feePaid;
  Boolean isReservedForFCFS;
  * -- 0..1 Resident;
}

class Under18Event
{
  isA Event;
}

class Rink
{
  isA Facility;
}

class TennisCourt
{
  isA Facility;
}

class CommunityAssociation
{
  singleton;
  1 -- * CommunityResidence;
  1 -- * Facility;
  1 -- * Event;
}
      

Load the above code into UmpleOnline