Object Oriented Technology

The purpose of this page is to present an overview of Object Oriented Technology in the specific fields of:

  1. Object Oriented Programming Languages - Wei Tam Mail
  2. Object Linking and Embedding - Victor Alcazar Mail
  3. Object Oriented Databases - Dima Mnushkin Mail
  4. Object Oriented Operating and Graphics Systems - Ihab Khalil Mail

None of the information presented should be taken as the gospel truth. We have merely attempted to gather whatever data we could find on the net and present it in an organized fashion. If you notice any discrepancies in any of the topics discussed, please e-mail us with the problem.

In general each OO system will be described briefly with emphasis on key terms used when referring to the system. Definitions and examples are provided, as well as selected commercial applications currently available on the market.

This entire presentation is also available for download in PowerPoint 7.0 format. Click here to get the zipped version of it (120k).

Table of Contents

  • 1 Object Oriented Programming Languages
  • 1.1 What is an object?
  • 1.2 What Is Object Oriented Programming Language?
  • 1.3 What is Class?
  • 1.4 What is Inheritance?
  • 1.4.1 Some benefits of inheritance
  • 1.4.2 Drawbacks
  • 1.5 What is Encapsulation?
  • 1.5.1 Some benefits of Encapsulation
  • 1.6 What is Polymorphism?
  • 1.6.1 Some benefits to Polymorphism
  • 1.7 Benefits of Object Oriented Programming
  • 1.8 Drawbacks of Object Oriented Programming
  • 1.9 Object Oriented Programming Case Tool
  • 2 Object Linking and Embedding
  • 3 Object Oriented Databases
  • 3.1 What is an Object Oriented Database?
  • 3.1.1 DBMS features:
  • 3.1.2 OO features:
  • 3.2 What really sets an OODB apart from a normal RDB?
  • 3.3 An example of database differences
  • 3.4 When should an OODB be used?
  • 3.5 A speed comparison
  • 3.5.1 The Sun Benchmark
  • 3.6 OODB's on the market

  • 1 Object Oriented Programming Languages

    1.1 What is an object?

    "An object is any thing, real or abstract, about which we store data and those operations that manipulate the data." (Principles of Object Oriented Analysis and Design - James Martin)

    Objects are software entities that combine data structures and operations on the data. Together, these enable groups of objects to model real-world entities based on their characteristics (represented by data elements) and their behavior (represented by data manipulation operations). In this way, objects can model concrete things such as people, data entry forms and abstractions such as numbers or geometrical concepts.

    An object can be any one of the following:

    So Object Oriented Technology(OOT) allows developers to solve problems or create applications through a series of objects.

    1.2 What Is Object Oriented Programming Language?

    Object-oriented programming(OOP)is a programming style which incorporates three main characteristics:

    1. Inheritance
    2. Encapsulation
    3. Polymorphism.

    These characteristics differentiate object-oriented programming from the traditional structured programming model.

    Object-oriented programming builds on the concept of reusing code through the development and maintenance of object libraries. These objects are available for building and maintaining other applications.

    Some example of OOP languages are C++, SmallTalk, and Eiffel.

    1.3 What is Class?

    When programming in a object oriented language, an objects is called a class which is the software representation of an object. A class packages all the attributes and methods of an object. Attributes are the data associated with the object(Class) and the methods are the functions and code which operate on the data and express the behavior of the object. So basically a class is a over glorified version of a structure in C.

    An example of a class could be a car class. Some of the attributes of the a car could be type of transmission and number of doors. Methods could be acceleration and deceleration.

    1.4 What is Inheritance?

    Inheritance allows you to create new objects(derived class) from previously defined objects(base class).

    When a derived class inherits from the base class, it will contain all the attributes and methods of the base class plus any additional specifications of the derived class.

    Any changes which are made to base classes are propagated to all derived classes unless explicitly overridden. This domino effect has its advantages and disadvantages. Changes to a base class could fix or break your application.

    For example lets say we wanted to create a new class called sedan. We know that a sedan is a car so we would want to derive this new class from our base car class. Some of the data for this new class may be Horse Power and Top Speed and a function would be engine.

    But because this is a derived class we would also have access to the base class functions accelerations and deceleration plus the data of the base class type of transmission and number of doors.

    1.4.1 Some benefits of inheritance

    1.4.2 Drawbacks

    1.5 What is Encapsulation?

    Encapsulation is the hiding of information. It prevents users from seeing the internal workings of an object. The main reason for this is to protecting data that should not be manipulated by the user. This makes the code more reliable and reusable.

    For example in a sedan class here may be an engine function and data for the engine. You would want to protect the data for the engine to prevent the function form misbehaving. Another example would a link list class. You don't want to give the user access to the head or tail pointers because then they could break the link list.

    1.5.1 Some benefits of Encapsulation

    1.6 What is Polymorphism?

    Polymorphism means that different objects respond differently to the same message.

    There are two types:

    1. Early Binding - Which is the overloading of functions. This means that you can have two functions that have the same name (function signature) but with different number of parameters or different types of parameters passed to it.
    1. Late Binding - This allows functions to override the base class function. So again you could have two functions that have the same function signature in your base class and your derived class, but the derived class function will override the base class function.

    An example of early binding polymorphism would be to create two acceleration functions in our base car class.

    1.6.1 Some benefits to Polymorphism

    1.7 Benefits of Object Oriented Programming

    1.8 Drawbacks of Object Oriented Programming

    1.9 Object Oriented Programming Case Tool

    Rational Rose screen snapshot

    This application is called Rational Rose and was developed by Rational Corporation. The diagram you see inside is called a rose model or Class Diagram.

    On the left we have our base class called car. The attributes are NumDoors and Transmission. It has the methods Acceleration, and deceleration which is early binding polymorphic function.

    On the right we have our derived class, sedan. This class inherits from the car class, which is indicated by the black arrow. It has two methods Acceleration which is late binding polymorphic and Engine which is encapsulated. Encapsulation is denoted by two vertical bars beside the function name or data name. The data associated with the engine is also encapsulated and there are also some additional attributes HorsePower and TopSpeed.

    From this model we can generate the code, which would produce all the necessary files that contain prototypes, declarations of data and function headers(.h and .cpp files).

    If changes are made to the mode you can re-generate the code and any code you have entered into your function bodies will not be effected.

    Here are some good OOP information sites

    Object Oriented Information Sources
    Rational Software Corp. (Case Tool)

    <Back to Table of Contents>

    2 Object Linking and Embedding

    Object Linking and Embedding (OLE), is properly pronounced oh-lay, however some people pronounce it oh-el-ee. OLE is a set of extensible application protocols that enables one application to use the services of another application in a nearly seamless manner.

    Applications that follow the OLE protocols will be able to create documents that contain linked or embedded information from documents created by other applications. No longer do you need to worry about file importing and data exchange. To place a table in your page layout, simply drag a table from a spreadsheet or word processor onto the page. OLE allows you to create multi­element documents effortlessly.

    2.1 Linking and Embedding

    Before both linking and embedding can be defined, we must first define a container document. A container document holds the objects that are still connected to the original application that created them. For example, a user can link or embed a spreadsheet into a word-processing application. The word-processing application would then be the container document.

    Object linking is the case where the object in a container document resides in another, separate document. Whenever this object is modified outside the container application, the modifications will be reflected within the container application as well. Changes to OLE linked objects can be reflected in the container document either manually or automatically. The linked object is symbolized by a link to the physical location of the object.

    Object embedding is where the object actually resides in the container document. The object is only contained within that document itself and can be shared with other applications only if the container document containing the object is opened.

    2.2 OLE Objects

    There are a wide variety of objects that are used as OLE objects. However, anything that can be displayed or controlled by an application can be an OLE object. With an OLE compliant document having the ability to contain different object types, OLE facilitates multimedia documents.

    Examples of common OLE objects include:

    2.3 OLE General Facts and Trivia

    Object Linking and Embedding was jointly developed by a group of Independent Software Vendors including Microsoft, Aldus, Lotus, Micrografx, and others. However, Microsoft has updated the protocol and used OLE more than any of the other vendors listed.

    The current version being used in industry is OLE version 2.0. While OLE 2.0 can run on other platforms such as the Apple Macintosh system, OLE has been predominantly used in Microsoft's Windows X platforms (Windows 3.1, Windows NT, and Windows 95).

    2.4 Benefits of OLE

    With OLE, users can concentrate on the task they are performing, instead of the different applications required to complete the task. If a user prefers using one application, they need never leave that application. OLE brings other applications, to the user, in the context that the user prefers.

    Applications can specialize in performing one job. A drawing application that implements OLE, for example, would not necessarily need any text-editing capability. Users could put text into the drawing and edit that text using any text editor that supports OLE.

    Files can be more compact because linking objects allows a file to use an object without having to store that object's data. Only the location of the object and some other maintenance information is stored in the container document. Linked objects in a file can be updated dynamically and shared among multiple applications or users. You could do a simple cut and paste, however when the original object changes, you must perform the cut and paste again (that is if you can find the object).

    Embedded objects can be transferred easily to other users. Other users can then edit the object without needing to know where the original data resides.

    2.5 Drawbacks of OLE

    Both the application which holds the container document and the application which can modify the linked or embedded object must both be loaded into memory for OLE. A computer system with OLE, therefore requires 16Mb of RAM to get decent performance, with both applications simultaneously open. To be comfortable and accustomed to OLE, you will either have to get an upgrade on RAM or an upgrade on patience.

    In the example discussed in the last section (where a bitmap program requires a OLE text editor to modify text in the bitmap) this process would take much longer compared to a graphics application that has built in text editing capabilities. There are situations in which OLE should and should not be used. For very simple OLE object situations, the overhead of OLE may outweigh its benefits.

    A variety of problems can occur with the implementation (development) of OLE in an application, starting at a high-level and eventually infesting the entire application. Only when better developer education about OLE, and more efficient planning on how to implement OLE are in place, will these complexities be overcome.

    Currently OLE is not available on UNIX and that leaves the many CAD and CAM UNIX users and applications out in the cold when it comes to OLE. In addition, OLE has not taken off in Apple systems. However, OpenDoc (which will be discussed in the next section) will incorporate OLE into the next generation Apple operating system. In addition, even across computers with similar operating systems, applications required to launch the objects are not always present on each machine.

    2.6 OpenDoc

    The major competitor to OLE in object technology is OpenDoc. OpenDoc is supported by industry leaders (Apple, IBM, Adobe, Oracle, Lotus, Novell, and the X Consortium). OpenDoc is cross-platform and vendor neutral and is available on the Macintosh, Windows, UNIX, and OS/2 operating systems. OpenDoc enables true component software, by mixing & matching software components to create custom solutions.

    Unlike Microsoft's OLE, OpenDoc is not proprietary. The OpenDoc source code will be licensed to developers through CI Labs. However, Microsoft selectively licenses source code to only those developers it chooses to work with. OpenDoc provides seamless interoperability across various object technologies including OLE 2.0 itself, whereas Microsoft is taking a proprietary stance, currently not intending to support OpenDoc.

    2.7 Conclusions about OLE

    Although OLE technology requires a superior computer system to operate effectively, its functionality is very useful for both technical and average users. The ability to directly open an object in its appropriate application within the container document, relieves the user from searching for the appropriate application.

    Companies such as Microsoft must find a way to make OLE less resource intensive. In addition, developers must be better trained in designing and developing OLE compliant applications. When these events happen, OLE will appeal to a much wider audience.

    In relation to other OpenDoc, OLE is technically inferior. OpenDoc is considerably better at using system resources and will be available on all major operating system platforms. Although, OpenDoc's features are superior to OLE, OpenDoc is a new technology that not been proven. In addition, it is always difficult to compete against any Microsoft product, even if it is of a lower quality.

    Here are some good OLE information sites

    OLE Defenitions And Terms
    OpenDoc Defenitions And Terms
    OpenDoc And OLE 2.0
    OLE In Depth

    <Back to Table of Contents>

    3 Object Oriented Databases

    3.1 What is an Object Oriented Database?

    An Object Oriented Database (OODB) is a system combining characteristics of a database with the manipulation of objects typically available in object oriented languages. The following is a breakdown of the database and object oriented features inherent in such a database. Not all characteristics MUST be present for a system to be considered and OODB, but the more it has, the closer it gets to the ideal.

    3.1.1 DBMS features:

    3.1.2 OO features:

    3.2 What really sets an OODB apart from a normal RDB?

    3.3 An example of database differences

    A simple example of the differences between the two database styles is storing our car in the garage at the end of the day. An OODB models this with an object for the car, one for the garage, and one store operation. In an RDB, data must be flattened, normalized, and stored by type in separate tables, so the car, in our example, must be disassembled, with all the gears stored in one table, pistons in another, wheels in another, etc. In the morning, before driving to work, you must re-assemble your car. If you wish, you may just as easily re-assemble it into an airplane, which might be an advantage to some. Otherwise, there is a lot of extra overhead.

    For applications with complex objects, this disassembly/reassembly code can be expensive to write, error prone and very slow to execute. Instead, in an OODB the structure of the car as a composite containing the other objects via relationships is all modeled directly, naturally, and efficiently.

    3.4 When should an OODB be used?

    Not every application or every user needs an OODB. Any of the following three characteristics are a good indication that you may benefit from an OODB.

    1. Use of Objects. If you've designed and built your system with objects, it will be easier and possibly much faster to communicate with the database directly in objects, rather than translating to tables or records.
    2. Complex, Interconnected Information. If the information you use doesn't fit naturally into tables (e.g., nested structures, varying sized structures, images, animation, audio, video, etc.), an OODB can help by directly supporting arbitrary structure, exactly as you define it. Just as importantly, if your information contains many relationships (see previous section about joins), the OODB can represent these directly, making it easier for users and dramatically faster.
    3. Distributed Environment. Traditional DBMSs (and even some OODBs!) are built on the old mainframe model: everything happens on the central server. If you deploy your application across multiple computers, with objects on different workstations, servers, mainframes, etc., then a distributed OODB can provide transparent access to all objects, from all users, located anywhere, on any computers, networks, operating systems, and using any languages.

    3.5 A speed comparison

    Sun Benchmark Data
    small database results only
    Model TypeRelational RelationalRelational RelationalObject
    Name LookUp35 ms60 ms 9 ms11.4 ms9.8 ms
    Range LookUp393 ms358 ms 76 ms95.9 ms84.1 ms
    Group LookUp116 ms85 ms 24 ms6.0 ms5.1 ms
    Reference LookUp165 ms 50 ms6 ms30.6 ms 9.8 ms
    Record Insert56 ms230 ms 43 ms95.44 ms24.3 ms
    Sequential Scan2 ms 11 ms3 ms1.53 ms 1.6 ms
    Database Open1300 ms 580 ms580 ms1020 ms 1036 ms
    Actual Size6.3 Mb3.8 Mb 3.8 Mb12.1 Mb10.4 Mb

    This table summarizes the results of the small version of the Sun Benchmark, and allows for comparison of both Vbase models to the existing relational versions. Vbase itself is the object-oriented database platform developed by Ontos Inc

    Overall, these numbers indicate that an object system can meet and in many cases exceed the performance of a fast relational system. However, it would be desired to make the assessment of databases at a higher, more complex level. Furthermore, this application benchmark would need to take into account the kinds of complex modeling relationships object databases have been created to model.

    3.5.1 The Sun Benchmark

    The Sun Benchmark is intended for use across different kinds of database systems. It attempts to provide generic, data model independent definitions and benchmark tests that are suitable for benchmarking databases of any data model.

    The Benchmark is comprised of seven individual benchmark operations, defined as follows:

    Sequential Scan: serially fetch records from the document table, fetching the title from each, but without performing any pattern match computation on the title.

    Database Open: perform all operations necessary to open files, database schema information, etc, but not time to load the application program itself.

    Each of these operations is performed a number of times. They are measured in term of their time response, the elapsed time between the invocation and run of the operation.

    3.6 OODB's on the market

    <Back to Table of Contents>

    4 Object Oriented Operating Systems

    4.1 Definition of an Object Oriented Operating System

    An object oriented operating system is an operating system that has the following characteristics:

    4.2 Advantages of Object Oriented Operating Systems

    Here are some of the advantages of object oriented operating systems:

    4.3 Disadvantages of Object Oriented Operating Systems

    Here are some of the disadvantages of object oriented operating systems:

    4.4 Some Object Oriented Operating Systems

    It is easy to mistake Windows 95 and Windows NT for object oriented operating systems, but their subsystems are not fully constructed through the framework of classes. Here are three of the most popular distributed object oriented operating systems that are distributed:

    4.5 Object Oriented Graphics Systems

    Object oriented graphics systems are graphics systems which have an architecture organized into frameworks of objects that are hierarchically classified by function and performance. They allow the user to implement complex graphics programs with the use of objects and classes (polygon meshes, nurbs, ray shading,…). They do, however, run quite a bit slower than the implementations such as in C or assembly language. This is due to the object oriented frame work.

    4.6 Examples Of Object Oriented Graphics Systems

    Here are a few examples of object oriented graphics systems. All of them are built using C++ and Open-GL.

    4.7 Summary Of Findings for OOS

    Although great strides have been made in the speed, look, and feel of systems, little progress has been made in making systems easy to use. Typical systems today still force the user to interact with the system at a level of abstraction convenient to the machine, rather than a level convenient to the user. By capitalizing on the benefits of the object-oriented paradigm, many of the problems in traditional systems can be overcome. Here are the most common Pros and Cons about Object Oriented Systems:

    4.7.1 Disadvantages of OO Technologies

    4.7.2 Advantages of OO Technologies

    Here are some good OOOS Sites

    OOOS Defenitions And Terms
    Choices Operating System

    <Back to Table of Contents>