1 / 12

Multiple Inheritance

Csci 490 / Engr 596 Special Topics / Special Projects Software Design and Scala Programming Spring Semester 2010 Lecture Notes. Multiple Inheritance. This is a set of slides to accompany chapter 13 of Timothy Budd's book An Introduction to Object-Oriented Programming, Second Edition

lcasey
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Csci 490 / Engr 596Special Topics / Special ProjectsSoftware Design and Scala ProgrammingSpring Semester 2010Lecture Notes

  2. Multiple Inheritance This is a set of slides to accompany chapter 13 of Timothy Budd's book An Introduction to Object-Oriented Programming, Second Edition (Addison-Wesley, 1997) Created: 14 August 2004, Revised: 9 March 2010

  3. Orthogonal Classifications Objects often characterized in different ways that are orthogonal to each other • For example, the instructor is • North American • Male • Professor • Computer scientist • None of these are proper subsets of each other • Cannot be placed into an inheritance hierarchy 1

  4. ExampleComplex Numbers • Two abstract classifications • Magnitude • things that can be compared to each other • Number • things that can perform arithmetic • Three specific classes • Integer • comparable and arithmetic • Char • comparable but not arithmetic • Complex • arithmetic but not comparable 2

  5. Solutions • Make Number subclass of Magnitude, but redefine comparison operators in class Complex to print error message • Subclassing for limitation • Don't use inheritance at all, redefine all operators in all classes • Flattening the inheritance tree • Use inheritance for some relationships, but simulate others • Use Number, but each number implements all relational operators • Make Number and Magnitude independent, and have Integer inherit from both • Multiple inheritance 3

  6. Char Magnitude Integer Number Complex Inheritance as a Form of Combination 4

  7. ExampleCascading Menus • AMenu is structure charged with displaying itself when selected by users • A Menu maintains collection of MenuItems • Each MenuItem knows how to respond when selected • A cascading menu is both a MenuItem and Menu 5

  8. Multiple Inheritance Name Ambiguity Problem • What happens when same name used in both parent classes? • A CardDeck knows how to draw (select) a Card • A GraphicalItem knows how to draw (display) an image on screen • A GraphicalCardDeck should be able to draw – but which? 6

  9. Multiple Inheritance Common Ancestors? • What happens when parent classes have common root ancestor? • Does new object have one or two instances of common ancestor? InStream Stream InOutStream OutStream 7

  10. Multiple Inheritance in Java Java supports multiple inheritance of interfaces (subtypes) but not of classes (subclasses) interface A { ... } interface B { ... } interface AB extends A, B { ... } interface C { ... } class X { ... } class Y extends X implements AB, C { ... } 8

  11. Multiple Inheritance in Scala Scala supports multiple “mixin” inheritance of traits but not of classes 8

  12. Acknowledgement This work was supported by a grant from Acxiom Corporation titled “The Acxiom Laboratory for Software Architecture and Component Engineering (ALSACE).” 9

More Related