GEOS Programming: 3.1 The GEOS Object System: GEOS Terminology

Up: GEOS SDK TechDocs | Up | Prev: 3 The GEOS Object System | Next: 3.2 Object Structures

Though you should be familiar with general object-oriented programming terms, there are quite a few for which the meaning is slightly different in GEOS, and there are others which are entirely new to GEOS. This section is divided into four categories: General Terms, Class Terms, Object Terms, and Messaging Terms.

General Terms

chunk
A chunk is a small section of memory located in a Local Memory Heap. Object instance data is stored in a chunk, one chunk per object. Local Memory and chunks are described fully in the Local Memory chapter.

fptr An fptr is a "far pointer"--a 32-bit pointer to a specific location of memory. It is a standard C pointer.

handle A handle is a 16-bit index into a Handle Table and is used to reference memory blocks. For more information, see the Handles chapter.

object block
An object block is a specific type of Local Memory block that contains object chunks.

optr An optr is a unique identifier for an object and is therefore also referred to as an "Object Pointer." An optr is used to locate and access any object in the system, and because it is made up of handles and chunk handles, it will always stay the same even when the object moves in memory.
thread
A thread is a single executable entity that runs either procedural code or one or more objects. If a thread is "event-driven," it executes code for a given set of objects, receiving messages and dispatching them to the proper objects.

Class Terms

class
A class is the definition of a set of instance data structures and the methods that work on those structures. An object is called an "instance" of its class.
class tree
A class tree represents the hierarchy of inheritance from superclass to subclass. If a message is not handled by a given class, it will be automatically passed up the class tree until it is handled or the root of the tree is reached, after which the message is discarded.
inheritance
Inheritance is the term given to the way an object of a particular class has all the same instance variables and methods as an instance of the object's superclasses.
initialize
Initialization of an object is when a master part (or master group) of the object's instance data is filled out. This occurs whenever a class in the master group not yet initialized in the object receives its first message.
master
The term "master" is used in several cases, all related. A master class is generally considered the top class in a single class tree. Although the master class may have superclasses, it provides a conceptual break and creation of a new subtree.
master group
The section of an object's instance data belonging to a particular master class and all its subclasses is called a master group. A master group is initialized when the master class (or one of its subclasses) receives its first message.
resolve
Resolution of a variant class occurs when the variant's superclass is determined. Each instance of a variant class must be resolved individually.
subclass
The term "subclass" is used to show relationships between classes. A subclass is defined on another class, from which it inherits instance data and methods. This other class is known as a "superclass," below.
superclass
The term "superclass" is used to show relationships between classes. A superclass passes on its instance data and methods to all classes defined as subclasses of it.
variant
A variant class may have different superclasses. However, an instance of a variant class may have only one superclass at any given moment. The use of variant classes can provide much the same functionality as the multiple inheritance found in some other object systems.

Object Terms

child
A child object is one that sits below another object in an object tree. The terms child, parent, and sibling are used only to show relationships between objects.
composite
A composite object is one that can have children. The composite has a "composite link" (an optr) to its first child and a "sibling link" to its next sibling. If it has no next sibling, the sibling link instead points to the object's parent object.
instance
An instance is a particular manifestation of a class. This term is almost always interchangeable with "object," though sometimes it specifically refers to the chunk containing the object's instance data rather than to the object as a whole.
link
A link is typically an optr pointing to an object's next sibling in an object tree. It is also used more generally to refer to any optr linking two objects in an object tree (parent and child, or last sibling and parent).
object
An object is a specific manifestation of a class. Typically, this term is interchangeable with "instance"; however, sometimes the term "object" refers to the combination of an object's methods and instance data whereas the term "instance" refers to just the object's instance data chunk.
object tree
An object tree is a means of organizing objects into a hierarchy for display or organizational purposes. Do not confuse it with the "class tree," the structure which represents class relationships. An object tree is made up of composite objects, each of which may have children or be the child of another object. The topmost object in the tree is called the "root," and the bottommost objects are called the "leaves" or "nodes." Non-composite objects may be placed in the tree as leaves but may not have children.
parent
A parent object is one that has children in an object tree. The parent contains a composite link (an optr) to its first child and is pointed to by its last child.
state file
A state file is a Virtual Memory file used to store the state of objects. Typically, object blocks will be written to or extracted from the state file. Generic UI objects have this functionality built in automatically; other objects may manage their own state saving by managing the state file.

Messaging Terms

blocking
A thread "blocks" when it must wait for resources or return values from messages sent to objects in another thread. Specifically, a thread blocks when one of its objects sends a message to another thread with the "call" command; if the "send" command is used, the thread will continue executing normally.
call
A message sent with the call command causes the calling thread to block until the message is handled by the recipient. If the recipient is in the calling thread, the code will be executed immediately.
dispatcher
The GEOS dispatcher is internal to the kernel and passes messages on to their proper recipients. The dispatcher will dynamically locate the proper object and method and will invoke the method.
message
A message is a directive, query, or other instruction sent from one object to another. Messages may take parameters and may return information.
method
A method, also called a "message handler," is the code invoked by a message. A method may do anything a normal function or procedure may do, including alter instance data. It is poor style and highly discouraged for one object's method to alter another object's instance data directly.
send
A message sent with the send command will be placed in the recipient's event queue and will not cause the sender to block. Messages that return information or pass pointers should never be dispatched with the send command; use the call command in those cases.

Up: GEOS SDK TechDocs | Up | Prev: 3 The GEOS Object System | Next: 3.2 Object Structures