572 Chapter 12 Support for Object-Oriented Programming
- In what way do overriding methods in C# syntactically differ from their
counterparts in C++? - How can the parent version of an inherited method that is overridden in
a subclass be called in that subclass in C#? - Are all Ada 95 subclasses subtypes?
- How is a call to a subprogram in Ada 95 specified to be dynamically
bound to a subprogram definition? When is this decision made? - How does Ruby implement primitive types, such as those for integer and
floating-point data? - How are getter methods defined in a Ruby class?
- What access controls does Ruby support for instance variables?
- What access controls does Ruby support for methods?
- Are all Ruby subclasses subtypes?
- Does Ruby support multiple inheritance?
PROBLEM SET
- What important part of support for object-oriented programming is
missing in SIMULA 67? - In what ways can “compatible” be defined for the relationship between
an overridden method and the overriding method? - Compare the dynamic binding of C++ and Java.
- Compare the class entity access controls of C++ and Java.
- Compare the class entity access controls of C++ and Ada 95.
- Compare the multiple inheritance of C++ with that provided by inter-
faces in Java. - What is one programming situation where multiple inheritance has a
significant advantage over interfaces? - Explain the two problems with abstract data types that are ameliorated
by inheritance. - Describe the categories of changes that a subclass can make to its parent
class. - Explain one disadvantage of inheritance.
- Explain the advantages and disadvantages of having all values in a
language be objects. - What exactly does it mean for a subclass to have an is-a relationship with
its parent class? - Describe the issue of how closely the parameters of an overriding
method must match those of the method it overrides.