CS 635 Advanced Object-Oriented Programming

Spring Semester, 2007

Assignment 4

Assignment Index

© 2007, All Rights Reserved, SDSU & Roger Whitney

 San Diego State University -- This page last updated 4/10/07

SpreadSheet

Due May 1

1. Use the Interpreter pattern to evaluate postfix expressions. The expression (1 + 2) * sin(3) will be 1 2 + 3 sin * in postfix. For more information about postfix see the Wikipedia entry entry or this lecture by Bob Brown . The reason for using postfix expressions is to make it easier to parse the expression. Postfix notation is not related to the Interpreter pattern. You can restrict your values to integers if you like. You should support at least the operations +, -, *, / , lg (base 2) and cos. Expressions can have variables. You can assume that all variables are uppercase and start with the character $. So ($A + $B) / $A + 2 is a valid expression which is $A $B + $A / 2 + in postfix.  In order to evaluate the expression one also needs the values of $A and $B.

2. Implement a spreadsheet with 6 cells  with a GUI. The cells are labeled AA, AB, AC, BA, BB and BC. We will use the symbol $AA to represent the current value of cell AA. A cell can contain either a formula, a number or be empty. A formula can contain numbers, reference to cells and the operations. The spreadsheet has two different views or modes: value and equation. The user can toggle between the two views. Provide the user with a button to switch between views. All cells are in the same mode. Either all are in the value mode or view or all are in the equation mode. In the value mode a cell displays nothing if the cell is empty, the number if the cell contains a number and the value of its equation if it contains an equation. In the equation mode a cell displays nothing if the cell is empty, the number if the cell contains a number and the source of the equation if it contains an equation.

In the In the first example below cell $A contains 1, $B contains the number 2 and cell contains the formula $A + $B. We have an equation and a value view of the cells. The table below shows both the equation and the value views of the cells.  

Equation View

 

A

B

C

A

1

2

$AA $AB +

B

     

Value View

 

A

B

C

A

1

2

3

B

     

While in the value view if a user changes the value of a cell (for example cell $AA) then all cells dependent on that cell needs to be updated automatically. Note that more than one cell may require updating. The following example illustrates this.

Equation View

 

A

B

C

A

1

$AA 1 +

$AA $AB +

B

$AB 1 +

$AC 1 +

$BB $AC +

In this example all other cells depend on cell AA. If the user changes the value in cell AA all the values in the other cells need to be updated. Note that which cells depend on which cell is completely determined by the user. You have to be careful with circular dependancies. The following is just one example of a circular dependancy. These are error conditions.

Equation View

 

A

B

C

A

1

$AA $AC +

$BC 1 +

B

   

$AB 1 +

Value View

 

A

B

C

A

1

Error

Error

B

   

Error

You might find the observer and state patterns useful here.

Grading

Item

Percent of Grade

Working Code

10%

Unit Tests

10%

Proper implementation of Patterns

65%

Quality of Code

15%

Note that while assignment uses a GUI it is not about building a fancy GUI. The assignment is about using patterns. In particular is it about the patterns used in the nonGUI part of the program.