Top Banner
ATOT - Lecture 9, 30 April 2003 1 Chair of Software Engineering Advanced Topics in Object Technology Bertrand Meyer
35

Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

1

Chair of Software Engineering

Advanced Topics in Object Technology

Bertrand Meyer

Page 2: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

2

Chair of Software Engineering

Lecture 9: Inheritance

Page 3: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 4: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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+

Page 5: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 6: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 7: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

????

????

Page 8: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 9: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

9

Chair of Software Engineering

Multiple inheritance: Combining abstractions

COMPARABLE NUMERIC

STRING COMPLEX

INTEGER

REAL

DOUBLE

* *

Page 10: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 11: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

11

Chair of Software Engineering

Multiple inheritance: Composite figures

A composite figure

Simple figures

Page 12: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

12

Chair of Software Engineering

Defining the notion of composite figure

FIGURELIST

[FIGURE]

COMPOSITE_FIGURE

*displayhiderotatemove…

countputremove…

Page 13: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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 …

Page 14: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

14

Chair of Software Engineering

A composite figure as a list

start

item

forth after

Page 15: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 16: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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.

Page 17: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

17

Chair of Software Engineering

Name clashes under multiple inheritance

A

C

foofoo

B

Page 18: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 19: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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...

Page 20: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 21: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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).

Page 22: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 23: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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?

Page 24: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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 ...

Page 25: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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++

Page 26: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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).

Page 27: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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).

Page 28: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

28

Chair of Software Engineering

Table variants

TABLE*

SEQUENTIAL_TABLE

*

LINKED_TABLE

+ARRAY_TABLE

+FILE_ TABLE

+

Page 29: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 30: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 31: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 32: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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*

Page 33: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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*

Page 34: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

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

Page 35: Chair of Software Engineering ATOT - Lecture 9, 30 April 2003 1 Advanced Topics in Object Technology Bertrand Meyer.

ATOT - Lecture 9, 30 April 2003

35

Chair of Software Engineering

End of lecture 9