Download presentation
Presentation is loading. Please wait.
Published byAldous Holland Modified over 8 years ago
1
Engr 691 Special Topics in Engineering Science Software Architecture Spring Semester 2004 Lecture Notes
2
Multiple Inheritance This Web document was based on a set of slides created by the instructor for use in the Fall 1997 and Spring 1999 offerings of the object-oriented design and programming course. That set was, in turn, based on a set of slides created by Timothy Budd to supplement chapter 13 of his textbook An Introduction to Object-Oriented Programming, Second Edition (Addison-Wesley, 1997)
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
4
CS Example: Complex Numbers Two abstract classifications: Magnitude : things that can be compared to each other things that can be compared to each other Number : things that can perform arithmetic things that can perform arithmetic Three specific classes: Integer : comparable and arithmetic comparable and arithmetic Char : comparable but not arithmetic comparable but not arithmetic Complex : arithmetic but not comparable arithmetic but not comparable
5
Solutions 1. Make Number subclass of Magnitude, but redefine comparison operators in class Complex to print error message – subclassing for limitation 2. Don't use inheritance at all, redefine all operators in all classes – flattening the inheritance tree 3. Use inheritance for some relationships, but simulate others – use Number, but each number implements all relational operators 4. Make Number and Magnitude independent, and have Integer inherit from both – multiple inheritance
6
Inheritance as a Form of Combination ____ Char ____ Char ____| ____| | Magnitude <--| Magnitude <--| | |____ |____ ____ Integer ____ Integer ____| ____| | Number <--| Number <--| | |____ |____ |____ Complex |____ Complex
7
Another Example: Cascading Menus A Menu is structure charged with displaying itself when selected by users A Menu maintains collection of MenuItem s Each MenuItem knows how to respond when selected A cascading menu is both a MenuItem and Menu
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?
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 ____ ____ InStream ____ ____| |____ ____| |____ | | | | Stream <--| |<-- InOutStream Stream <--| |<-- InOutStream |____ ____| |____ ____| |____ OutStream ____| |____ OutStream ____|
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 {... }
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.