What are "objects" in Elepub terms?

"Object" is a frequently used buzzword and as always with buzzwords, although everybody uses them, few really know what it actually meant in the first place - before it was used by many different people for even more different things. To make our point clear, we would like to define what we mean by using "object" in conjunction with our software products. But first we must have a little look into history to show where it all came from.

The word "object", or rather "object-oriented", in software terms really comes from a theory about software development, which was invented in Oslo in 1962 (!!!), when the great-grandmother of today's popular Java was developed, called Simula. This theory and Simula were adopted by the famous Xerox PARC (Palo Alto Research Center) where some ingenious people developed windows, the computer mouse, the Smalltalk computer language and a few other goodies, which were later marketed very successfully - by other companies!

Since then object-oriented software design has become generally accepted, and today is an unquestioned and widely used "paradigm". It first became a commercially available product through Smalltalk, this first and still most mature pure object-oriented software development environment, where everything is an object and where the developer cannot do else but program in an object-oriented style.

We are using Smalltalk, this most mature and stable object-oriented software environment, which is also the true mother of Java. And therefore we use the term "object" fully in the sense of Smalltalk and in a more radical way than does Java (which has, with respect to the many C++ people, slightly diluted this concept). By the way, the spiritual father of Elepub has been using o-o technology for commercial software since 1987, first Objective-C, later C++, which was quickly given up in favor of Smalltalk.

An "object" in any of our products encapsulates in one self-contained entity:

  • all the data owned by an object
  • and also all the programming code operating on this data.

This together forms the typically quite small unit called "object.

The second great specialty of real objects is in their unique ability to compose complex multi-dimensional structures of multiple object types where one object is the holder of any number of other objects of many different types (classes). This is visually somewhat similar to this famous Russian babushka doll with the difference that with objects there are typically many different other objects on every level, which again are themselves the holder of many other objects. This results in a modularity degree extended to the extreme!

Objects with classes

Another unique specialty of such object trees is their ability to inherit data and code from ancestors or to overwrite it where needed. This greatly reduces the amount of needed code by constructing highly abstract and generically re-usable object hierarchies where only the objects on the lowest level become really explicit and concrete.

Inheritance in objects

To enforce encapsulation and to avoid all side effects objects can only communicate with one another through strictly defined protocols called messages, which substantially differ from conventional calls to function or subroutines.

This extreme modularization coupled with inheritance and the total encapsulation of data and code in small units, which can only talk to one another through messages, this are the basic principles for building object-oriented software systems.

All of our products are uncompromising build in this object-oriented spirit.

In short terms, in Smalltalk objects are:

  • data and code encapsulated in small and self-contained units,
  • many of which create multi-dimensional and multi-level hierarchies,
  • where children can inherit or overwrite data and code from their ancestors
  • and objects communicate solely through strictly defined message protocols.

This is why object-oriented systems differ substantially in concept and in implementation from what is done everywhere else. This is especially true when compared with "structured programming", the concept which was used to develop more than 90% of today's software applications.

None of this is new! Object-oriented systems have been around for decades although they have gained broad recognition of the general public only recently when Java became the widely accepted hype and buzzword, despite the fact that Java's concepts have already been around for two decades in Smalltalk and in some other less well known languages!

Really new is that finally all of these proven rules and concepts are also applied to your application data, to publications, pages, frames, page components and to all objects administrating content and format. Elepub and Elestore are the first purely object-oriented publishing and contents systems applying these concepts to user data!

Therefore, in conjunction with our products we always use and mean "object" in strictly and purely object-oriented terms as implemented in Smalltalk and, mostly, in Java.