CS-1030 Software Design 2
Lab 6: Personal Organizer
Course Objectives
Addressed
- Apply UML class and sequence diagrams to the design and
documentation of a small software system.
- Design and implement simple C++
classes and class libraries.
- Design small software systems from specific
requirements
- Apply composition, operator overloading, and STL
templated classes.
Overview
The purpose of this lab is to develop an
Personal Organizer for creating and managing a contact list and task list.
Some of this application has been written for you already and can be downloaded
here. You will be completing the
implementation of the unfinished components. The files you download are already
compilable and linkable and will produce a running program - however, it is not
functional.
This is a two-week, three-session lab which
must be completed and demonstrated during the final lab session of Week 10.
Problem Statement
You are to develop a Personal Organizer that can be used to
create and contain two different types
of lists: Contact Information, such as your friends' names & phone
numbers, and Tasks,
such as lab reports, which have a specific due date.
As you develop the Personal Organizer, you must
assume that it might be implemented on to work with either a Windows-based UI,
or just a plain console-based UI, so you don't really know what kind of user interface
will ultimately be used. Thus, it must not assume anything
about how to get input or present output to a user; rather, the Personal
Organizer is more of an "engine" that presents a public interface that will be
used by a UI written by someone else.
Functional requirements:
Your Personal Organizer must meet the following
minimum functional requirements:
- The public interface to the Personal
Organizer must provide methods to permit both Contact Information
and Task items to be created
- The characteristics of a Task item are
- A user-definable
description of the activity, such as "Mom's birthday", "Lab
6 due",
"workout at Kern Center", or "Pickup turkey for Thanksgiving"
- A due date on which a task is due to
complete on or before.
- The characteristics of a Contact
Information item are
- Last Name
- First Name
- Phone number
- The public interface to must provide query
methods that return the following types of results:
- a collection of all Tasks sorted
alphabetically by order of description.
- a collection of all Tasks sorted in order of due
date, with earliest dates listed first.
- a collection of all Contacts sorted
alphabetically by last name.
- a collection of all Contacts sorted
alphabetically by first name
- The public interface must provide methods
that permit both Contact Information items and Task items to be
deleted from the database. Hint: this is best accomplished by assigning
each entry some type of unique ID that serves as the "handle" to which an
item can be referred to during deletion.
- The public interface must provide methods
that command the Personal Organizer to save and reload a specified file
containing the database of information.
Design requirements:
- Unlike previous labs, you will not have to
write your own collection class and manage pointers yourself. Rather, your design must incorporate the use of STL
lists or vectors to manage the collections of Tasks and Contact Information items.
- Your design must incorporate STL lists or
vectors to implement the collections of query results.
- Your design must incorporate the use of
STL algorithms to sort when producing query
results. Hint: you will have to overload certain operators of certain
classes to get these algorithms to work.
- You must determine "appropriate" members
(methods and attributes) of each of your classes.
- You will need to elicit clarifications on
the requirements from me in order to achieve a comprehensive solution.
Testing requirements:
- To test your Personal Organizer "engine",
you must develop a test program that exercises the public interfaces. A
console-based test program might be the simplest approach, but
you may implement a graphical user interface (UI) if you wish. You might want
to base your test program on the included sample program.
Activity
By the second lab, and using Enterprise Architect, develop a high-level design for the Personal Organizer,
including a completed UML class diagram and Sequence diagrams illustrating the
sequence of calls needed to 1) create a Task or Contact, 2) Delete a Task or
Contact. Doing this
may cause you to revisit the Static Class Diagrams and make some
additions or modifications to the initial design. You must submit your UML model
by the end of the second lab. Use webCT to submit the UML model.
You will be shown how to generate a preliminary UML model from the partially
completed program you downloaded.
Use the resulting design to implement the Personal Organizer and accompanying
test program.
Demonstration (during the final lab)
Your program should be fully
functional, and you should be able to demonstrate it in its final form in class.
Lab Report (due Wednesday of the final
lab)
Your lab report must contain a complete UML class diagram
and sequence diagrams for each use case listed above.
Submit your material following these instructions:
-
DO NOT create a zip
archive of your project subdirectory as for previous labs; just send
unzipped (normal) files.
-
Use webct
to submit your assignment.
Be sure to keep copies of all your files, in case something gets lost.Your lab grade will be determined by the following
factors:
- Lab report with UML Design Specifications
- Program technical quality & comments
- Correct program output
- Timeliness of completion.