Lighthouse Design’s Foundation Classes

The Foundation Classes represent the result of more than four years of commercial object-oriented (OO) development at Lighthouse Designî. As NEXTSTEP developers since 1989, we have successfully completed the development and on-going maintenance of several large-scale commercial applications (>100,000 lines of code): Diagram!î, Concurrenceî, and TaskMasterî. Over time, we have observed that our engineers rely heavily on a body of code collectively referred to as the Foundation Classes. These basic components, which lie at the base of all Lighthouse Design products, have allowed our engineers to leverage their own development, and maximize reuse of an already well-tested (and well-documented) library of previously written code.

We've watched our customers and other NEXTSTEP developers struggle through a similar evolution, devoting precious development time to constructing baseline object repositories. To shorten that cycle, and deliver to our customers the benefit of our experience (and the security of our rigorous quality assurance), we've elected to make the Foundation Classes commercially available. It is our hope that in so doing, we offer NEXTSTEP developers a significant ``head start,'' and an even bigger leap on their competition.

The classes were written with two goals in mind: first, to free developers from the tedium of re-implementing basic data types required by almost all programs, whether productivity applications, or in-house ``mission critical'' custom applications. Secondly, the classes were designed to offer developers the opportunity to think in an object-oriented manner at almost every level of NEXTSTEP--rather than C programmers in some places, and Objective-C programmers in others.

The classes complement NEXTSTEP. Much of a NEXTSTEP programmer's work is done with the Application Kit, the most comprehensive object-oriented software framework currently available for building deployable applications. Written in Objective-C, the Application Kit takes great advantage of the object-oriented programming paradigm.
However, NEXTSTEP's Application Kit does not provide some lower-level functionality that is often taken for granted--Windows and Buttons are classic OO entities, but their titles are set with null-terminated character arrays rather than string objects. List and HashTable classes are available in NEXTSTEP's Common Classes, but other traditional collections like sets and stacks are left as exercises for the interested software developer. By implementing the basic character string and collection data types in the Foundation Classes, we give you these basic software building blocks.

Finally, some critical components in NEXTSTEP are written as C libraries, rather than Objective-C classes. For example, NEXTSTEP provides good exception handling facilities, but with a function based interface. The function library for C strings is rich, but hard to use. The Foundation Classes provide Objective-C class wrappers for these data-types, simultaneously making them easier to use while raising the likelihood that you and your developers will stay focused within the OO paradigm.

The classes and functions described herein are appropriate for a wide variety of custom application types, and are in use by firms doing OO development in a variety of industries, including telecommunications, financial services, retail, defense and health care. They are referred to as the Foundation Classes because they appear at the lowest levels of application development: data storage, string manipulation, and error handling. Most of these classes don't require you to link against the AppKit, although all of them work with the NEXTSTEP software kits. (Exceptions include FCError's -  announceBySound and -  announceByPanel methods, which by necessity require the AppKit.) The next section offers an overview of the classes.”

Foundation Classes Overview

FOUNDATION Inheritance

The three main classes in the Foundation library include: FCCollection, FCString and FCError:

FCCollection is an abstract superclass for a family of collection classes, including sets, bag, lists stacks and queues. Listed below are the instantiable FCCollection subclasses, their features, and a representative sample of such a collection.

FCString takes the drudgery out of dealing with character strings in C by providing a convenient way to create and manipulate them, similar to standard C, but without the usual concern over memory allocation.

FCError offers an object-oriented wrapper for exception handling—offering a simple and efficient way to announce errors to the user, while providing developers with the flexibility to easily change how a given error condition should be handled.


Lighthouse Design Ltd.