keith@cecil.UUCP (keith gorlen) (03/24/86)
Several people requested additional information on the Object-Oriented
Program Support (OOPS) class library I am developing for C++. Here are
the first few paragraphs of the (incomplete) OOPS Reference Manual:
I. INTRODUCTION
The Object-Oriented Program Support (OOPS) class library is a collection
of C++ classes, loosely modeled after those of SMALLTALK-80, that can be
used by programs written in C++ and run under the UNIX operating system.
The purpose of OOPS is to provide high-level, general-purpose,
extensible, portable, and convenient run-time facilities to make writing
application programs faster and easier. OOPS may also serve as an
example of how to use the advanced features of the C++ programming
language.
Version 1 of OOPS features a few generally useful data types such as
String, Date, and Time, and classic data structures such as hash tables
(class Set), associative arrays (class Dictionary), and linked lists
(class LinkedList). Arbitrarily complex data structures comprised of
OOPS- and user-defined objects can be transmitted across computing
boundaries or saved on disk files by means of the OOPS Object I/O
facility. An exception handling mechansim is available which can
improve a program's readability and efficiency. Multi-programming with
co-routines is provided by classes Process, Scheduler, and Semaphore.
Also, dependent objects can be established such that when an object
changes in some way, its dependent objects are notified.
It is planned to extend OOPS to support interactive graphics,
communications, and data acquisition.
---
Here's the hierarchy of the OOPS classes implemented in Version 1:
Object -- Root of the OOPS Class Inheritance Tree
Bitset -- Set of Small Integers (something like Pascal's type SET)
Class -- Class Descriptor
Collection -- Abstract Class for Collection Functions
Arraychar -- Byte Array
String -- Character String
Arrayobid -- Array of Object Pointers
Bag -- Unordered Collection of Objects
Set -- Unordered Collection of Non-Duplicate Objects
Dictionary -- Set of Associations
IdentDict -- Dictionary Keyed by Object ID
SeqCltn -- Abstract Class for Ordered, Indexed Collections
LinkedList -- Singly-Linked List
OrderedCltn -- Ordered Collection of Object Pointers
SortedCltn -- Sorted Collection of Objects
Stack -- Stack of Object Pointers
Date -- Calendar Date
Float -- Floating Point Number Object
Fraction -- (Toy) Rational Arithmetic
Link -- Abstract Class for LinkedList Links
Linkobid -- Link Containing Object Pointer
Process -- Co-routine Process Object
LookupKey -- Abstract Class for Dictionary Associations
Assoc -- Association of Object Pointers
AssocInt -- Association of Object Pointer with Integer
Integer -- Integer Number Object
Nil -- The Nil Object
Point -- X-Y Coordinate Pair
Random -- Uniform Random Number Generator
Rectangle -- Rectangle
Scheduler -- Co-routine Process Scheduler
Semaphore -- Process Synchronization Class
SharedQueue -- Shared Queue of Objects
Time -- Time of Day
Vector -- Abstract Class for Math Vector Functions
ByteVec
DoubleVec
FloatVec
IntVec
LongVec
ShortVec
UnsignedVec
Current Status:
OOPS consists of over 8K lines of C++ source code running under
Masscomp's Real-Time UNIX, a System III derivative. I've tried to make
it portable, however. There is one small module written in 68000
assembler to do coroutine calls.
There is a suite of test programs that exercises most of the functions
of the classes, and I have 1 user who is implementing a forms management
system with OOPS.
The class Vector is a minimal implementation -- doing everything
everyone could ever want with vectors is simply too big a job to get
into at this time.
OOPS is in the public domain, and I plan to make the source code
available when I have the documentation written. I estimate that there's
another 2 man-months of work left on the documentation, and I won't be
able to devote full time to it. I'm willing to send out a "guru-only"
distribution to those who are interested enough to try working with it
sans documentation. Release 1.0 of the C++ Translator is required.
--
---
Keith Gorlen
Computer Systems Laboratory
Division of Computer Research and Technology
National Institutes of Health
Bethesda, MD 20892
phone: (301) 496-5363
uucp: {decvax!}seismo!elsie!cecil!keith