Spreadsheet subclass: #LinkedSpreadsheet
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'Spreadsheets'!

!LinkedSpreadsheet methodsFor: 'illegal'!

cell: whatever
        " this operation is illegal with linked spreadsheets, so block it"

cell: whatever put: whateverElse
        " this operation isn't allowed for linked spreadsheets, so block it"

cells: whatever
        "this operation isn't legal for linked spreadsheets, so block it."

informIllegal
        "inform the user that an illegal operation has been attempted"

!LinkedSpreadsheet methodsFor: 'update'!

update: aspectSymbol
        "when we receive a broadcast informing us that #value has changed, update our own value"

LinkedSpreadsheet subclass: #LinkedSumSpreadsheet
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'Spreadsheets'!


!LinkedSumSpreadsheet methodsFor: 'operations'!

updateValue
        "calculate the sum of the linked spreadsheets' values"

LinkedSpreadsheet subclass: #LinkedAverageSpreadsheet
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'Spreadsheets'!


!LinkedAverageSpreadsheet methodsFor: 'operations'!

updateValue
        "calculate the average of the linked spreadsheets' values"

LinkedAverageSpreadsheet subclass: #LinkedCellSumSpreadsheet
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'Spreadsheets'!

!LinkedCellSumSpreadsheet methodsFor: 'operations'!

updateValue
        "calculate the sum of the linked spreadsheets' cells' values"


LinkedAverageSpreadsheet subclass: #LinkedCellAverageSpreadsheet
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'Spreadsheets'!

!LinkedCellAverageSpreadsheet methodsFor: 'operations'!

updateValue
        "calculate the average of the linked spreadsheets' cells' values"