Project Introduction

The objective of this project is to construct a reference formatting system. A reference list or bibliography appears at the end of most research papers to provide the information necessary for a reader to locate and retrieve any source cited in the body of the paper.  There are a variety of ways in which to format references, such as MLA, APA, and Chicago, as well as a variety of reference types that must be formatted, like papers that have been published in texts, journals, and conference proceedings.  By carefully constructing the project requirements, each deliverable can address specific design concepts.  Each deliverable will build on previous deliverables until a complete system has been developed and tested.  That system can be easily expanded to accommodate additional reference types and formatting styles.

A “reference list” or a “List of Works Cited” often includes a wide range of resource materials - books, journal articles, Internet sources, information services, and many others.  A reference list generally refers to any list of resource materials that includes the title or a description of the work, the author’s name, an indication of the resource type (e.g., journal article, book, manuscript, film), and publication information in a consistent and recognizable form.  Unlike a bibliography, which is often either a comprehensive or in-depth survey of works available on a particular subject or research area or a list of all materials that have been consulted during the course of conducting research for a project or a paper, a reference list usually includes only those works actually referenced in a paper or manuscript.

There is a myriad of styles for reference formatting.  The most common are

  • APA (American Psychological Association): psychology, education, and other social sciences.

  • MLA (Modern Language Association): literature, arts, and humanities.

  • AMA (American Medical Association): medicine, health, and biological sciences.

  • Turabian: designed for college students to use with all subjects.

  • Chicago: used with all subjects in the "real world" by books, magazines, newspapers, and other non-scholarly publications.


There are several additional specialized formatting styles like IEEE (Institute of Electrical and Electronics Engineers), ACS (American Chemical Society), CSE (Council of Science Editors), SAA (Society of American Archaeology), ASA (American Sociological Association), APS (American Physical Society), ASABE (American Society of Agricultural and Biological Engineers) , AAA (American Anthropological Association), and others even more specialized and obscure. 

When a research paper is written and submitted to an academic conference journal, the journal specifies the required style.  If the paper is rejected by that conference or journal and the decision is made to revise it and submit it to another journal or conference, often the formatting style requirements will be different and the entire reference list must be reformatted.  This had become such a burden that specialized software like Endnotes has been expressly developed for this purpose.  However, given the time and patience it is easy enough to develop such software independently using good object-oriented design methodology.

Overview of Requirements

A reference formatting system will be developed through a set of deliverables.  Each deliverable will emphasize a certain set of OO concepts, and each deliverable will build upon earlier ones.  A brief overview of each will be provided.

Deliverable 1 focuses on abstraction.  The student will gain experience designing classes.  It will require the abstraction of a programmer-defined clsName class to allow the storage and display of author names in various formats.  In addition, it will require the design of a programmer-defined clsDate class that will allow the storage and display of publication dates in different formats.

Deliverable 2 focuses on encapsulation.  The student will gain experience encapsulating classes and instantiating objects from those classes.  It will require the creation of a programmer-defined clsName class to allow the storage and display of author names in various formats.  In addition, it will require development of a programmer-defined clsDate class that will allow the storage and display of publication dates in different formats.     

Deliverable 3 will provide the student with experience modifying classes, setting up arrays of objects, and sorting those arrays.  Specifically, specifications require the modification of the clsName class so that it implements the IComparable interface and includes a CompareTo method.   It also requires instantiation of an array of clsName objects, providing values for them, and then sorting the array of objects in order by last name and first name.  

Deliverable 4 focuses on the concept of aggregation.  It provides students with additional experience with classes and object instantiation, as well as utilizing aggregation to take advantage of code reuse.  They are required to develop a new class called clsReference that includes as instance variables an array of clsNames to represent authors, and a clsDate object reference to represent the publication date.  Upon completion of this deliverable the student will have developed a structure capable of handling information shared by most publication types, including authors, title, and publication date.

Deliverable 5a reinforces the concept of abstract classes and abstract interfaces.  The reference class developed in the previous deliverable must be modified so that it can serve as an abstract class.  The next step is to develop an abstract interface that will be implemented by the reference class as well as all classes derived from it.  The interface will include method signatures for formatMLA, formatAPA, and formatChicago, the subset of reference style approaches selected for this project.  The reference class should be modified to implement the new abstract interface.

Deliverable 5b focuses on the concept of inheritance.  It requires the development of derived classes from the reference class.  A book class and a journal class will be derived directly from the reference class, and a text chapter class will be derived from the book class.  Additional classes, such as a proceedings class, can easily be added to extend the scope of the project. 

The focus of Deliverable 6 is on polymorphism.  As the user enters individual references, such as book, chapter, and journal details, they will be stored in an arraylist of generic references.  They will then be manipulated based on their actual type to demonstrate the concept of polymorphism, which requires both method overriding and dynamic binding.  Students will see that while they may not know the specific type of an individual array element, the appropriate methods each object will be invoked correctly.  Type casting will also be demonstrated by this exercise. The program should also  implement a preview feature using a web browser control if one is available in their development environment.

Deliverable 7 requires that the student learns how to create persistent objects using the binary formatter or SOAP and data files.  Students will write their arraylist of references to a binary or SOAP file and later retrieve it into another array and manipulate to demonstrate that no object properties were lost in the transition. The arraylist of objects will then be read from the file and the program will loop through the array applying the selected format and write the formatted output to a Microsoft Word file.    At the instructor’s discretion the student can also be directed to implement a user-friendly interface with menus, etc., to improved usability of the system.