Overall Architecture

The spreadsheet program is designed around a Spreadsheet class that defines a spreadsheet's basic behavior. Several types of Spreadsheets, such as AverageSpreadsheet and SumSpreadsheet, use its behaviors and only need to extend by knowing how to calculate their overall values. A LinkedSpreadsheet is a type of Spreadsheet that links to two (or sometimes more) different spreadsheets (or particular cells) instead of having its own spreadsheet of cells. There are several types of LinkedSpreadsheets that know how to calculate their overall values from the linked spreadsheets. The human interface component is composed of a simple SpreadsheetViewContainer which is a ModelCollectionViewContainer (from Coad and Nicola).