Multiple Inheritance - PowerPoint PPT Presentation

About This Presentation
Title:

Multiple Inheritance

Description:

Dining car. Train car (coach) Restaurant. Watch calculator. ceg860 ... Window ... Problem: Indirectly invokes Window.display twice!! ceg860 (Prasad) ... – PowerPoint PPT presentation

Number of Views:19
Avg rating:3.0/5.0
Slides: 17
Provided by: csWr
Learn more at: http://cecs.wright.edu
Category:

less

Transcript and Presenter's Notes

Title: Multiple Inheritance


1
Multiple Inheritance
  • Class Structure Directed Acyclic Graph

2
Examples in System Modeling
  • Multiple inheritance facilitates combination
    of (orthogonal) abstractions.
  • Company plane
  • Airplane (Pilots perspective)
  • (queries) passenger_count, altitude, position,
    speed, etc.
  • (commands) take_off, land, set_speed, etc.
  • Asset (Accountants perspective)
  • (features) purchase_price, resale_value,
    depreciate, etc.
  • Dining car
  • Train car (coach)
  • Restaurant
  • Watch calculator

3
  • Multiple inheritance facilitates representation
    of various roles of an object.
  • Sofa bed, Mobile home, ...
  • Knowledge Representation
  • Clinton is a father.
  • Clinton is the ex-President of USA.
  • Nixon was a Republican.
  • Nixon was a Quaker.
  • Dolphins are aquatic creatures.
  • Dolphins are mammals.

4
Examples from Software Systems
  • Window
  • (Hierarchical Structure) Tree
  • (features) listOfSubwindows, parentWindow,
    addWindow, removeWindow, etc.
  • (Graphical Object) Rectangle
  • (features) height, width, position, display,
    hide, etc.

5
Linked list (leftmost child right sibling)
  • Tree
  • List
  • (features) countChildren, leftMostChild,
    addChild, removeChild, etc.
  • Cell
  • (features) parent, nextSibling, etc.

6
Graphics Example
  • class Composite_Figure extends
  • Figure, LinkedListFigure ...
  • void display()
  • forEachDo item.display()
  • void translate()
  • ...
  • Illustrates multiple inheritance, polymorphic
  • data structure, dynamic binding, recursion, etc.

7
Design Pattern
  • Describing composite structures using multiple
    inheritance with a container class as a parent
  • More Examples
  • Menus with Submenus
  • Compound Commands
  • Graphical Object Groups

8
Eiffels approach to Multiple Inheritance
9
Name Clashes and Feature Renaming
  • Eiffel bans intra-class overloading.
  • Name clashes resulting from multiple inheritance
    can be resolved in the child class using feature
    renaming mechanism.
  • Redeclaration/redefinition changes the feature,
    but keeps the name. Renaming changes the name,
    but keeps the feature.
  • Redeclaration is semantic renaming is syntactic.
  • Renaming also enables class designers to give
    locally appropriate names to features.

10
Repeated Inheritance
A
B
C
D
  • Class D is a descendant of class A in more than
    one way. E.g.,
  • A Driver (age, address, birthday(), etc.)
  • B French_Driver
  • C US_Driver
  • D US_French_Driver
  • Share age
  • Replicate address

11
Multiple Inheritance of Features
  • A class that inherits different but identically
    named features from different parents is invalid.
  • Feature renaming may be used to avoid name clash.
  • Note that this case excludes repeated
    inheritance.
  • An attribute coming from repeated ancestor is
    shared, by default. Feature renaming may be
    used to replicate it.
  • In C, all the fields of a repeated ancestor
    are either shared (virtual) or duplicated.

12
Transcontinental Drivers in Eiffel
  • class French_US_Driver inherit
  • French_Driver
  • rename
  • address as french_address,
  • violations as french_violations,
  • pay_fee as french_pay_fee
  • end
  • US_Driver
  • rename
  • address as us_address,
  • violations as us_violations,
  • pay_fee as us_pay_fee
  • end
  • feature . . . // shared age, name, ...
  • end

13
Conflicting Redefinitions
  • What if a feature f inherited by class D from
    repeated ancestor A has been redefined in B
    and/or C?
  • Conflicts under sharing (two impl., one name)
  • Problem Name Clash
  • Eiffel provides rename, redefine, and
    undefine to enable a programmer to disambiguate.

14
(contd)
  • Conflicts under replication (two impl., two
    names)
  • Problem Ambiguity for Dynamic binding
  • A a new D() a.f()
  • Eiffel provides select to let the programmer pick
    the appropriate impl. to run for f() on a D via
    a A-entity.

15
Windows in Eiffel
  • class Window
  • feature display is end
  • class Window_with_Border inherit Window
  • feature display is end
  • class Window_with_Menu inherit Window
  • feature display is end
  • class Window_with_Border_and_Menu inherit
  • Window_with_Border
  • Window_with_Menu
  • feature display is
  • Window_with_Border Precursor
  • Window_with_Menu Precursor
  • end
  • Problem Indirectly invokes Window.display
    twice!!

16
(Contd)
  • class Window_with_Border_and_Menu inherit
  • Window
  • rename id as window_id
  • select window_id
  • redefine display end
  • Window_with_Border
  • rename id as border_id
  • redefine display end
  • Window_with_Menu
  • rename id as menu_id
  • redefine display end
  • feature
  • display is
  • Window Precursor
  • draw_border draw_menu
  • end
  • end
Write a Comment
User Comments (0)
About PowerShow.com