Using natural language as a metaphoric base for OO

Our goal is to capture the simple cognitive structures people use to build and manipulate their models of the world, and allow programmers to use them to create and manipulate program models. Natural language is an existing, strong and intuitive metaphor to extend object oriented's metaphor of interacting objects. Nouns and verbs are an essential part of any language, and in the object model, but it is a poor language that contains only nouns and verbs. We use nouns and verbs, adjectives and adverbs, grammatical rules and cases, combined in relatively few ways to handle an almost unlimited number of situations. Adjectives collect subsets of classes' functions, tell how to test whether an object is a member of a class, and why one class is a subclass of another, providing simple and safe multiple and dynamic inheritance and the ability to reassign objects to classes on the fly. Adverbs are functions on properties of sets of functions, generalizing type-based polymorphism to value-based polymorphism. The genitive case traverses networks of relations. Participles indicate events and subclasses. Adjectives are a manifestation of our classifications of the world, so we must also look at classification. The closest concept to adjectives in 00 so far is the " mixin " operator of Bracha and Cook. The mixin operator combines subsets of interfaces in much the same way as do adjectives. If the defining properties of classes were stored with the classes, the mixin operator would combine them appropriately. Classifying a concept into narrower concepts is done through a membership relation, a test for membership in the class. In specialization, only components of the base concept are tested in the relation. The amount of information needed to characterize an instance of a specialized subclass is less than for its superclass, because the relation itself provides some of the required information. Facet subclassification uses a test between the base concept and an introduced concept, or " facet. " In " aquatic vehicle, " the facet is either " water " (" does it traverse water? ") or " medium " (" what medium does it traverse? "), in which case thefacet has value, " water. " A concept can have any number of facets, because it may be tested against any number of concepts. A facet is introduced as soon as the relationship in the new concept becomes relevant. Facet subclassification increases the amount of information …