multiple inheritance n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Multiple Inheritance PowerPoint Presentation
Download Presentation
Multiple Inheritance

Loading in 2 Seconds...

play fullscreen
1 / 16

Multiple Inheritance - PowerPoint PPT Presentation

64 Views
Download Presentation
Multiple Inheritance
An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Multiple Inheritance Class Structure : Directed Acyclic Graph L13MI

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

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

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

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

  6. Graphics Example classComposite_Figure extends Figure, LinkedList[Figure] { ... void display() { forEachDo { item.display(); }; } void translate() { … } ...} Illustrates: multiple inheritance, polymorphic data structure, dynamic binding, recursion, etc. L13MI

  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 L13MI

  8. Eiffel’s approach to Multiple Inheritance L13MI

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

  10. Repeated Inheritance A B C • 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 D L13MI

  11. Multiple Inheritance of Features • A class that inherits differentbut 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++, allthe fields of a repeated ancestor are either shared (virtual) or duplicated. L13MI

  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; L13MI

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

  14. (cont’d) • 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. L13MI

  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!! L13MI

  16. (Cont’d) 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; L13MI