Object Oriented Programming and Standards


List of Topics

  1. Introduction
  2. What are Objects and Object Programming?
  3. Object-oriented Databases

Introduction

Who we are:
Ron Jez and Kent Anderson
What we are talking about:
Objects and object oriented programming


What are Objects and Object Programming?

Where did Object Oriented Come From

    Simula was the first Object-oriented language providing objects, classes, inheritance, and dynamic typing in 1967 (in addition to its Algol-60 subset). It was intended as a conveyance of object-oriented design. From this, the next step went straight to Small talk.

OOA and OOD

    OOA and OOD stand for Object-Oriented Analysis and Object-Oriented Design, respectively. OOA strives to understand and model, in terms of object-oriented concepts (object and classes), a particular problem within a problem domain from a user oriented or domain expert's perspective and with an emphasis on modelling the real world. The product, or resultant model, of OOA specifies a complete system and a complete set of requirements and external interface of the system to be built, often obtained from a domain model, scenarios, or use-cases. The usual progression is from OOA to OOD to OOP (implementation) and this Universal Process Model roughly corresponds to the Waterfall model [Royce 70].

Definitions and Concepts

    Object:

      This was defined originally by Booch 91 as "an object has state, behaviour, and identity; the structure and behaviour of similar objects are defined in their common class; the terms instance and object are interchangeable". A more recent definition from Martin 92 is as follows "an object is anything to which a concept applies, and a concept is an idea or notion we share that applies to certain object in our awareness".

    Class:

      A class is a general term denoting classification and also has a new meaning in object-oriented methods. Within the object-oriented context, a class is a specification of structure (instance variables), behaviour (methods), and inheritance for objects.

    Meta-class:

      A Meta-class is a class' class. If a class is an object, then that object must have a class in the classical sence.

    Inheritance:

      This provides a natural classification for kinds of objects and allows for the commonality of objects to be explicitly taken advantage of in modelling and constructing object systems. Inheritance is a relationship between classes where one class is the parent class of another. Inheritance provides programming by extension, as opposed to reinvension, and can be used as an is-a-kind-of or is-a relationship or for differential programming.
      Multiple Inheritance:
        This is when the child inherits from more that one parent. This does add additional difficulties since several distinct parents can declare a member within a multiple inheritance hierarchy, which to choose becomes an issue.
      Dynamic Inheritance:
        Dynamic inheritance allows objects to change and evolve over time. Since base classes provide properties and attributes for objects, changing base classes changes the properties and attributes of a class. More specifically, dynamic inheritance refers to the ability to add, delete, of change parents from objects (or classes) at run time.
      Shared Inheritance:
        Multiple inheritance brings up the possibility for a class to appear as a parent more that once in a class graph (repeated inheritance), and there is then a potential to share that class. Only one instance of the class will then appear in the graph.

Difference between Object-based and Object-oriented

    Object-based programming usually refers to objects without inheritance and hence without polymorphism (polymorphism being the ability to evolve and self modify over time, ie. the second pass through might not be the same as the first). Ada (83) and Modula-2, these languages support abstract data types and not classes, which provide inheritance and polymorphism. A definitions of Object-oriented is as follows; "A language is Object-oriented if and only if it satisfies the following requirements:
    1. It supports objects that are data abstractions with and interface of names operations and a hidden local state.
    2. Objects have an associated type.
    3. Types may inherit attributes from supertypes.

      Objects-oriented = data abstractions + object types + type inheritance.


Object-oriented Databases

Variety of Uses

  1. All forms of corporate information
      Such as current relational database information, employee data, transaction processing, in fact almost any processing of data using electronic means.
  2. Multimedia databases
      Treatment of different media as different types or classes of object data that can be contained within a single database. A powerful use would be the ability to search picture objects for certain information.
  3. Modeling simulation
      The concept of messages between objects is very similiar to how simulations should be handled. For example, a manufacturing simulation where machines or processes would be objects with the items being put through the simulation being the messages.
  4. Parallel execution of processes for an application
      Objects are designed to run separately due to the use of messages being passed between objects, which are used by the objects to perform internal functions or actions.
  5. Customizable software
      Having a database of program objects for ready use in application building allows considerable savings in time and expense.
  6. Anywhere a database is currently used in software

Examples

  1. Versant (designed according to CORBA object standard)
  2. Oracle (planning to add objects to current products with object tools)
  3. Sybase (planning to add objects to current products with object tools as well)
  4. Others
      Please see references at the end of the presentation.
    1. Iris
    2. Orion
    3. Gemstone
    4. OZ+
  5. Various operating systems that use objects as a base
    1. Nextstep (released earliest and most mature)
        Based on Smalltalk. Will be releasing a Windows 95 compatible version planned for this year.
    2. Taligent (currently available only for developers)
        Uses OpenDoc technology standard. Being developed by a partnership of Apple and IBM.
    3. Cairo (or whatever flavor of the week...Windows 2000 maybe?)
    4. PC databases (using Microsoft OLE standard)
    5. Follow up for Windows 95 and Windows NT.

The Good and Bad about Object-oriented Databases

    Good

    1. Information related to actual use rather than just being in a table.
    2. Interaction of objects and classes, models an organization's flow of information. Helpful for analysis of business.
    3. Allows searches to/from an object in both directions rather than a top->down search.
    4. Maintenance and development of software SHOULD be reduced.
        If you follow structured design, reuse objects, and come up with a plan to use object-oriented programming methods consistently.

    Bad

    1. Objects have overhead that straight coding may beat in execution speed (mileage may vary).
    2. Standards are starting to work on compatibility problems.
    3. No standard searching language like SQL.
    4. Learning curve with using Object paradigm (arrgg! management lingo!)
    5. Need to follow structured design of software or benefits may not be realized.

OLE (The question of standards)

    There are several standards for objects out on the market and currently there are compatibility issues.

    OLE - Object Linking and Embedding (Current Version 2.0)

    1. Treats data as "Drag and Drop" between applications. Meant as a method for moving objects between large applications (preferably Microsoft applications).
    2. Technically inferior to other standards, which support a larger vision of object use.
    3. Proprietary, by sheer market force Microsoft has made this a viable standard.
    4. Can be made compatible with ORB/CORBA, but you need to follow a few extra steps.

    ORB - Object Request Brokering or CORBA - Common Object Request Brokering Architechture

    1. Method of treating object use as a request. The request can be from an application, system, or over a distributed computing environment.
    2. This standard has been created by the industry standards group and has the SOM/DSOM and therefore OpenDoc standard compatible with it. SOM/DSOM are IBM's implementation of the ORB/CORBA standard.

    OpenDoc (Supported by Apple, IBM, Novell)

    1. Object standard between applications or documents. Allows "Drag and Drop" between applications.
    2. Also allows the treatment of software components as pieces that can be put together to form applications.
    3. Relatively new, designed to support the SOM/DSOM standard developed by IBM. It also should support the ORB standard since SOM/DSOM was designed with ORB in mind and possible compatibility.

    SOM - System Object Model and DSOM - Distributed System Object Model

    1. Open standard developed by IBM (I think there's a joke in there somewhere) It is the ORB/CORBA implemenation done by IBM, but is emerging as a prefered implemenation due certain technical features. OpenDoc complies with this standard.
    2. SOM defines object use within a single system. For example, between applications, operating system, and other programs.
    3. DSOM defines object use within distributed computer systems i.e. the client/server area.
    4. Both standards work together to allow object use easily from PC, mainframe, network, or any combination of hardware.

Future Developments

    Multimedia

      Multimedia has many different application. Instead of inheriting data and such, they inherit perhaps animation and such. The WWW can also be considered an object oriented idea. The reason for this is that a link from one page to another can be called an object. It can also fill the other points of object oriented such as inheritance, and data abstraction. It is a natural progression to move from the frontier or data to other information.

    Queries

      Query languages will some day be object oriented but they still need to overcome some of the problems in doing the queries as objects. There is the problem of having a endless loop through the query. But to implement the queries, will they develop a completely new standard. However, will they simply implement the object oriented standard on top of the SQL standard.

    Parallel Processing

      The processing in parallel can be made easier in the land of object oriented because each object can run on an individual process. One example that we found of parallel processing is at the POET site.

    Operating Systems

      Object-oriented Operating Systems provide resources through objects, sometimes all the way down to the machine (OO architecture are found at the bottom). They are almost always distributed system (DOS or DPOS), allowing objects to be passed freely between machines. They are typically capability-based since objects, and hence system resources, can only be accessed if a capability to them is available to programs. Some of them are as follows:
        Apertos, Chorus Micro-kernel, Choices, GEOS, Mach, NachOS, Ouverture, Peace, Spring, PenPoint

    Applications

      There are a very large number of applications available for object oriented applications. Here is a small list
        Languages - Actor, Allegro CL, Bootcon, CaseVision, Classic-ada, TM, XShell, and so on

Other References Used


Back to report list