DATA ABSTRACTION
 | "Ask not first what the system does: ask what it does it to!"
(Object-Oriented Software Construction by Bertrand Meyer, Prentice Hall) |
 | Examples
 | Complex Numbers |
 | Stack |
|
 | Formal Specifications
 | Abstract comments |
 | Concrete comments |
 | Representation invariant |
|

INFORMAL DEFINITIONS
 | ABSTRACT REPRESENTATION: ABSTRACT STRUCTURE, OPERATIONS ON THAT STRUCTURE
EXAMPLES: COMPLEX NUMBER, STACK |
 | CONCRETE REPRESENTATION: CONCRETE STRUCTURE (STRUCTURE AS DEFINED IN PROGRAMMING
LANGUAGE), OPERATIONS ON THAT STRUCTURE (EXAMPLES: COMPLEX NUMBER'S REAL AND IMAG STACK
RECORD WITH DATA ARRAY AND TOP) |
 | REPRESENTATION INVARIANT: CONCRETE REPRESENTATION OF DATA FOR MODULE |

NOTATION
- LIST
 | ABSTRACT DATA OBJECT |
 | ORDER IMPLIED |
 | FORMAT
<...>
- EXAMPLES
<> (EMPTY LIST)
<e1, e2, e3,...,en>
<ei, 1<=i<=n>
<f(j), 1<=j<=n such that f(i)<f(i+1) for 1<=i<j>
NOTE: THIS LAST EXAMPLE DEFINES A LIST ORDERED IN ASCENDING ORDER OF DATA AND SPECIFIES
THAT THERE ARE NO DUPLICATE VALUES.
- ~ DENOTES CONCATENATION. FOR EXAMPLE, CONSIDER LISTS A AND B SUCH THAT A = <a,c,e>
and B = <b,d>. THEN
A ~ B = <a,c,e,b,d>
B ~ A = <b,d,a,c,e> |
SET
 | ABSTRACT DATA OBJECT |
 | ORDER NOT IMPLIED, NO DUPLICATES |
 | FORMAT
[...] |
 | EXAMPLES
[] (EMPTY SET)
[E,F,A,V,C] |
TEXT FILE
 | ORDERED TRIPLE |
 | FORMAT
(A,B,C) FOR
A CHARACTER STRING ALREADY PROCESSED
B CHARACTER STRING TO BE PROCESSED
C FILE STATE (in READ; out WRITE, app APPEND, closed CLOSED) |
 | EXAMPLES
(CONCATENATE/,in)
(THE CAT IS BL/,,out)
(THE CAT IS BL/,,app)
(THE CAT IS BL/,closed)
NOTE: When a file is closed, there is simply one string, not one which has been
processed and one to be processed.
NOTE: / REPRESENTS END OF LINE. |
COMMENTS
 | FORMAT
 | DATA OBJECT(S) := OUTPUT STATE OF DATA OBJECT |
 | INPUT STATE OF OBJECT(S) --> ASSIGNMENT (i.e., PRECONDITION -->POSTCONDITION) |
 | APOSTROPHE (') DENOTES ORIGINAL OR INPUT VALUE OF OBJECT |
 | | DENOTES ALTERNATIVE (ELSE); IF THERE IS NO STATEMENT AFTER |, THEN THE COMMENT IS
SAYING THAT NOTHING HAPPENS |
|
WE WILL PROVIDE SEVERAL CLASSES FOR YOU TO TAKE A LOOK AT AND WE WANT YOU TO
THINK WHAT'S GOING ON IN THOSE CLASSES AS FAR AS SYSTEM IS CONCERNED. THEN WE WOULD LIKE
YOU TO TRY TO COMMENT THOSE CLASSES YOURSELF AND COMPARE IT TO OUR COMMENTS. SOMETIMES ITS
MORE IMOPRTANT TO KNOW WHATS GOING ON IN THE SYSTEM, SINCE THAT WILL MAKE YOU UNDERSTAND
THE PROGRAM BETTER.

ABSTRACT COMMENTS
 | DEAL WITH ABSTRACT DATA OBJECT |
 | FOR USER OF MODULE |
CONCRETE COMMENTS
 | DEAL WITH DATA STRUCTURE AS DEFINED IN PROGRAMMING LANGUAGE |
 | FOR PROGRAMMER OF MODULE |
 | MAY BE VERY CLOSE TO CODE |
REPRESENTATION INVARIANT
 | "PREDICATE ON IMPLEMENTATION" |
 | STATEMENT ABOUT CONCRETE DATA OBJECT WHICH IS TRUE FOR ALL OPERATIONS ON OBJECT |
 | FOR STACK: 0 <= Top <= Max |
 | PROCESS FOR DERIVING:
USING CONCRETE COMMENTS:
 | START WITH OPERATION WITH OUTPUT ONLY, IF POSSIBLE |
 | WRITE CONCRETE REP OF OBJECT FOR THAT OPERATION |
 | CONSIDER EACH OF OTHER OPERATIONS ONE AT A TIME; ALTER REPRESENTATION SO THAT IT REMAINS
TRUE FOR ALL OPERATIONS. |
|
EXAMPLES
|