CS 2704 : Project #2
Assigned: October 23
Intermediate Demonstration: November 1
Final Demonstration: November 11
Points: 75
Objectives
The objectives of the project are to:
- obtain a deeper understanding of inheritance, dynamic binding and
polymorphism.
- work with a fully developed class hierarchy (wxWindows) that uses
inheritance, dynamic binding and polymorphism,
- practice the planning and management of a programming project,
- develop new skills in building user interfaces that employ
menus, direct manipulation, and graphical display, and
- gain insight into the mechanisms underlying commonly user user
interface components.
These objectives will be achieved by the development of a simple
drawing tool.
Description
In this project a simple drawing tool will be built. The tool provides
a canvas on which a set of basic shapes can be drawn. Basic shapes can
be combined to form a composite shape that is itself treated as a
single entity. A composite shape can be combined with other basic or
composite shapes to form another composite shape. A shape, whether
basic or composite, can be drawn, moved (right, left, up , down), and
resized (expanded or contracted). The simple drawing tool is
suggestive of those found in such systems as McDraw, McPaint, xfig or
FrameMaker.
The specification deliberately leaves to each team many detailed
decisions about the exact "look and feel" of the drawing tool. Any
reasonable decisions made on these issues are acceptable.
The easy manipulation of a wide range of shapes requires the use of
inheritance, dynamic binding and polymorphism. The basic class
hierarchy that needs to be created has the following structure:
Your team may choose to implement more basic shapes than those shown
in this figure. At least all of the basic shapes shown in the figure
must be implemented.
Programming Teams
The simple drawing tool will be developed by a team of two people. Each
of the team members is expected to contribute equally to the
development of the system. Each team member will receive the same
grade for the project. A student should inform the instructor at the
earliest possible time of a situation where the student's partner is
not contributing equally to the project's development. It is
considered a violation of the Honor Code to allow a team member to
contribute less than an equal amount or to benefit unfairly from the
work of another student.
Project Plan
A project plan lists the sequence of steps that the team has taken or
anticipates taking to reach the project goal. Each step shold have the
following properties:
- it is a small change from the previous step,
- it is directly and easily testable,
- it has a date by which atiem the step was or will be completed,
and
- it contributes directly to the team's success in reaching the
project's goal.
For the current project, a project plan of 10-20 steps is reasonable.
The project plan is not static; it is an evolving record of the team's
accomplishments and objectives. The project plan is created at the
beginning of the project and is subject to, possibly many, revisions
as the work on the project progresses. The initial project plan is a
team's best judgement of how the work on the project will procede. In
the middle phase, the project plan is a record of the steps already
completed and the team's best judgement about how the remaining work
will be accomplished. When the project is completed, the project plan
is an accurate record of the project's history. For the current
project, it is reasonable to expect that the project plan will be
updated betwen 5 and 10 times.
Each team must have a set of project plans: The original project plan
and all subsequent revisions. The original plan and each revision
should be dated to shown when the plan was created or revised. A
project plan can be kept in an editable text file for convenient
sharing between the team members and easy updating throughtout the
project. The current set of project plans must be turned in at the
intermediate demonstration and at the final demonstration.
Evaluation
A live demonstration conducted in the McBryde 116 lab must be given by
each team on the dates of the intermiediate and final demonstrations.
A sign-up sheet will be distributed in class prior to the date of each
demonstration. Each team must sign up for one of the demonstration
time slots.
A team's project will be evaluated by how well the team:
- used inheritance and pure virtual methods to implement a class
structure similar to the one shown above,
- maintained an accurate and current set of project plans,
- implemented a drawing tool with the functionality described above,
- followed sound object-oriented design and coding practices,
- organized the code and include files (each class has its
own include and code file, and
- built a correct, usable makefile.
In addition to the live demonstration, each team must submit a printed
listing of their code and a current set of project plans at each
demonstration, The printed listing and the plans must give the name of
the two team members.
The evaluators reserve the right to deduct points for egregious
violations of reasonable user interface standards or coding practices.
The evaluators also reserve the right to award bonus points to teams
that develop projects of clearly superior quality.
Available Resources
A demonstration program illustrating the basic use of pulldown menus,
popup menus, mouse control and drawing will be distributed and
discussed in class. The complete reference manual of the the wxWindows
system is available on the lab machines in
/usr/local/wx/docs/referenc.ps. This file can be view via
ghostview. The reference manual is too long to be printed in its
entirety. A small number of paper copies of the complete reference
manual will be available in the lab. These copies may not be taken
from the lab area.