Interfaces are classes that document methods and attributes that should be available on an object if it supports the interface. Generally interfaces are a cast into which other objects should fit. The objects can be just about anything. Normally for an object to support an Interface this would require it to be a class but there is a way around this -- Adapters. More on these later.
Interfaces:
CoreInterfaces? : Interfaces that deal with the core of PUB like IParser? or IVerb?
A list of the interfaces and their use follows.
- ILangMod? -- Interface that tells us what a language module should look like.
- INoun? -- Interface that works as a marker, it tells us that the object can be handled as a Noun.
- IParser? -- Documents how a parser should do it's job.
- ISymbol? -- A Object mother interface of sorts, used both for Nouns and Components. ISymbol? defines component handling.
- IVerb? -- Tells us what a verb needs to supply.
ObjectInterfaces? : Interfaces related to nouns and components.
ObjectInterfaces? fall into a few main categories.
- VerbListeners? -- Interfaces that supply specific behaviour when an object get's handled by a verb.
- NounInterfaces? -- Interfaces that interact directly with the noun. There can only be one component for each interface. Usually NounInterfaces? are supplied by an adapter. Which adapter is used depends on what is loaded inte PUB. For example when you speak english an english adapter is used for IDescribable? while a swedish one is used for swedish.
InterfacePackages? : Interfaces that group several interfaces who need to work together with other stuff. For example ILockable? or IExit?.