chair of software engineering atot - lecture 9, 30 april 2003 1 advanced topics in object technology...
Post on 21-Dec-2015
214 Views
Preview:
TRANSCRIPT
ATOT - Lecture 9, 30 April 2003
1
Chair of Software Engineering
Advanced Topics in Object Technology
Bertrand Meyer
ATOT - Lecture 9, 30 April 2003
2
Chair of Software Engineering
Lecture 9: Inheritance
ATOT - Lecture 9, 30 April 2003
3
Chair of Software Engineering
Typing vs. binding
What do we know about the feature to be called?
Static typing:
At least one
Dynamic binding:
The right one
Example:
my_aircraft.lower_landing_gear
ATOT - Lecture 9, 30 April 2003
4
Chair of Software Engineering
Example hierarchy
AIRCRAFT*
PLANE*
COPTER*
BOEING AIRBUS
A_320B_747B_737
B_747_400
* deferred+ effected++ redefined
lower_landing_gear*
lower_landing_gear++
lower_landing_gear+
ATOT - Lecture 9, 30 April 2003
5
Chair of Software Engineering
(After Barry W. Boehm)
Requirements Design Code Development Acceptance Operationtest test
SMALL PROJECTS
LARGE PROJECTS
ATOT - Lecture 9, 30 April 2003
6
Chair of Software Engineering
Multiple inheritance
A class may have two or more parents.
What not to use as an elementary example: TEACHING_ASSISTANT inherits from TEACHER and STUDENT.
TEACHER STUDENT
TEACHING_ASSISTANT
ATOT - Lecture 9, 30 April 2003
7
Chair of Software Engineering
The teaching assistant example
This is in fact a case of repeated inheritance:
TEACHER STUDENT
TEACHING_ASSISTANT
UNIVERSITY_PERSON
id
????
????
ATOT - Lecture 9, 30 April 2003
8
Chair of Software Engineering
Common examples of multiple inheritance
Combining separate abstractions: Restaurant, train car Calculator, watch Plane, asset
ATOT - Lecture 9, 30 April 2003
9
Chair of Software Engineering
Multiple inheritance: Combining abstractions
COMPARABLE NUMERIC
STRING COMPLEX
INTEGER
REAL
DOUBLE
* *
ATOT - Lecture 9, 30 April 2003
10
Chair of Software Engineering
Multiple inheritance: Nested windows
‘‘Graphical’’ features: height, width, change_height, change_width, xpos, ypos, move...
‘‘Hierarchical’’ features: superwindow, subwindows, change_subwindow, add_subwindow...
class WINDOW
inherit
RECTANGLE
TREE [WINDOW]
feature...
end
ATOT - Lecture 9, 30 April 2003
11
Chair of Software Engineering
Multiple inheritance: Composite figures
A composite figure
Simple figures
ATOT - Lecture 9, 30 April 2003
12
Chair of Software Engineering
Defining the notion of composite figure
FIGURELIST
[FIGURE]
COMPOSITE_FIGURE
*displayhiderotatemove…
countputremove…
ATOT - Lecture 9, 30 April 2003
13
Chair of Software Engineering
Defining the notion of composite figure through multiple inheritance
FIGURELIST
[FIGURE]
COMPOSITE_FIGURE
*
OPEN_ FIGURE
CLOSED_ FIGURE
SEGMENT POLYLINE
POLYGON ELLIPSE
RECTANGLE
SQUARE
CIRCLE TRIANGLE
…
perimeter+
perimeter*
perimeter++
perimeter++
perimeter++
perimeter+
diagonal …
ATOT - Lecture 9, 30 April 2003
14
Chair of Software Engineering
A composite figure as a list
start
item
forth after
ATOT - Lecture 9, 30 April 2003
15
Chair of Software Engineering
Composite figures
class COMPOSITE_FIGURE
inherit
FIGUREredefine display, move, rotate, ... end
LIST [FIGURE]
feature
display is-- Display each constituent figure in turn.
dofrom
start
untilafter
loopitem.displayforth
endend
... Similarly for move, rotate etc. ...
end
ATOT - Lecture 9, 30 April 2003
16
Chair of Software Engineering
Complex figures
Note: a simpler form of procedures display, move etc. can be obtained through the use of iterators.
Exercise: Use agents for that purpose.
ATOT - Lecture 9, 30 April 2003
17
Chair of Software Engineering
Name clashes under multiple inheritance
A
C
foofoo
B
ATOT - Lecture 9, 30 April 2003
18
Chair of Software Engineering
Resolving name clashes
A
C
foofoo
B
rename foo as fog rename foo as zoo
ATOT - Lecture 9, 30 April 2003
19
Chair of Software Engineering
Resolving name clashes (cont’d)
class C
inherit
Arename
foo as fogend
Brename
foo as zooend
feature...
ATOT - Lecture 9, 30 April 2003
20
Chair of Software Engineering
Results of renaming
a1: Ab1: Bc1: C...c1.fogc1.zooa1.foob1.foo
Invalid:a1.fog, a1.zoo, b1.zoo, b1.fog, c1.foo
ATOT - Lecture 9, 30 April 2003
21
Chair of Software Engineering
Another application of renaming
Provide locally better adapted terminology.
Example: child (TREE); subwindow (WINDOW).
ATOT - Lecture 9, 30 April 2003
22
Chair of Software Engineering
The marriage of convenience
class ARRAYED_STACK [G]
inherit
STACK [G]
ARRAY [G]
feature...end
class LINKED_STACK [G]
inherit
STACK [G]
LINKED_LIST [G]
feature...end
ATOT - Lecture 9, 30 April 2003
23
Chair of Software Engineering
The need for deferred classes
In the scheme seen earlier:
f: FIGURE; c: CIRCLE; p: POLYGON...create c.make (...); create p.make (...)... if ... then
f := c else
f := p end...f.move (...); f.rotate (...); f.display (...); ...
How do we ensure that a call such as f.move (...) is valid even though there is no way to implement a general-ee-purpose feature move for class FIGURE?
ATOT - Lecture 9, 30 April 2003
24
Chair of Software Engineering
Deferred classes
deferred class FIGURE
feature
move (v: VECTOR) isdeferredend
rotate (a: ANGLE; p: POINT) isdeferredend
... display, hide, ...
end
Not permitted:
create f ...
ATOT - Lecture 9, 30 April 2003
25
Chair of Software Engineering
Example hierarchy
FIGURE*
OPEN_ FIGURE
*CLOSED_ FIGURE
*
SEGMENT POLYLINE POLYGON ELLIPSE
CIRCLE
RECTANGLETRIANGLE
SQUARE
extent*barycenter*…
display*rotate…
perimeter*
perimeter+perimeter+
perimeter++diagonal
......
perimeter++perimeter++
ATOT - Lecture 9, 30 April 2003
26
Chair of Software Engineering
Deferred classes and features
A feature is either deferred or effective.
To effect a inherited feature (deferred in the parent) is to make it effective. No need for redefine clause.
Like a feature, a class is either deferred or effective.
A class is deferred if it has at least one deferred feature (possibly coming from an ancestor) that it does not effect. It is effective otherwise.
A deferred class may not be instantiated.
BUT: A deferred class may have assertions (in particular, a deferred routine may have a precondition and a postcondition, and the class may have a class invariant).
ATOT - Lecture 9, 30 April 2003
27
Chair of Software Engineering
Deferred classes
Compare with Ada-Modula 2-Java interface/body separation:
May contain both deferred and non-deferred elements.
More than one implementation is possible.
Formal semantic specification (assertions).
ATOT - Lecture 9, 30 April 2003
28
Chair of Software Engineering
Table variants
TABLE*
SEQUENTIAL_TABLE
*
LINKED_TABLE
+ARRAY_TABLE
+FILE_ TABLE
+
ATOT - Lecture 9, 30 April 2003
29
Chair of Software Engineering
Don’t call us, we’ll call you
deferred class SEQUENTIAL_TABLE [G]
inherit
TABLE [G]
feature
has (x: G): BOOLEAN is-- Does x appear in table?
dofrom
start until
after or else equal (item, x) loop
forthendResult := not after
end
ATOT - Lecture 9, 30 April 2003
30
Chair of Software Engineering
SEQUENTIAL_TABLE (cont’d)
forth isrequire
not afterdeferredensure
position = old position + 1end
start isdeferredensure
empty or else position = 1end
ATOT - Lecture 9, 30 April 2003
31
Chair of Software Engineering
SEQUENTIAL_TABLE (end)
position: INTEGER is deferred end
... empty, found, after, ...
invariant
0 <= positionposition <= size + 1empty implies (after or before)
end
ATOT - Lecture 9, 30 April 2003
32
Chair of Software Engineering
Descendant implementations
TABLE*
SEQUENTIAL_TABLE
*
LINKED_TABLE
+ARRAY_TABLE
+FILE_ TABLE
+
has+forth*item*start*
forth+item+start+
after+forth+item+start+
after+forth+item+start+
after+
after*
has*
ATOT - Lecture 9, 30 April 2003
33
Chair of Software Engineering
Descendant implementations (cont’d)
SEQUENTIAL_TABLE
*
LINKED_TABLE
+ARRAY_TABLE
+FILE_ TABLE
+
has+
forth*item*start*
forth+item+start+
after+forth+item+start+
after+forth+item+start+
after+
after*
ATOT - Lecture 9, 30 April 2003
34
Chair of Software Engineering
Implementation variants
Array
Linked list
File
start forth after found (x)
c := first_cell
rewind
i := 1
c := c.right
i := i + 1
read end_of_file
c := Void
f = x
c.item = x
i > count t [i] = x
ATOT - Lecture 9, 30 April 2003
35
Chair of Software Engineering
End of lecture 9
top related