13.3 Base

This chapter documents the changes that have taken place in the Base Environment (formerly Standard Modules) and base language.

13.3.1 Classes with Multiple Inheritance

Multiple inheritance does not provide for automatic conflict resolution. If a conflicting method definition arises in multiple inheritance, the conflict must be resolved by overriding the method. Otherwise, an exception is raised.

A conflicting method definition arises if a method is defined by more than one class. For example,

class A meth m skip end end 
class B meth m skip end end 
class C from A B end

raises an exception (the old model would silently pick the method from B), since both A and B define the method m. The only way to fix this is by overriding m when creating class C:

class C from A B meth m skip end end

Features and attributes are handled identically. For a more thorough discussion see Chapter 10 of ``Tutorial of Oz''.

13.3.2 The Modules Class and Object

The modules Class and Object underwent a major redesign and re-implementation. The redesign became necessary because the old modules compromised both system and application security. Programming abstractions that support common patterns of object oriented programming are described in the module ObjectSupport (see Chapter 30 of ``System Modules'').

13.3.3 Chunks

The procedures Chunk.hasFeature and Chunk.getFeature are gone. Just use HasFeature and Value.'.' (see Chapter 3 of ``The Oz Base Environment'').


Version 1.4.0 (20080702)