OO The Object Oriented Paradigm

Started by sukishan, Jul 12, 2009, 06:12 PM

Previous topic - Next topic

sukishan

OO The Object Oriented Paradigm

Is it possible to make a computer think the way people naturally think, rather than in terms of data and instructions that process data? The base machine will probably always think in terms of data and instructions that process data. However, are there high-level languages that can add another layer of abstraction on top of the machine, so that the high level languages can be written in code that mirrors the way people think? Yes, of course -- these are the OO languages! Some OO languages are better at hiding the basic premise of the machine. Smalltalk is probably the best, while C++ is probably the worst .

History of OO languages
First OO language was Simula -- 1967. Used widely in Europe, it never caught on in the U.S. Then came Smalltalk -- 1972. In 1986, Bjarne Stroustrup invented C++, and Brad Cox created Objective-C. OO languages began taking off at this time. But as of 1994, OO languages have been around for 24 years. Earlier versions, such as Smalltalk, may have been unpopular because machines weren't powerful enough to handle them.

What Makes a Language Object-Oriented?
According to Bertrand Meyer, an OO programming language should contain the following 7 qualities [7]:

The support of modules.
The modules must support data abstraction, which entails: a.) Information hiding and b.) Encapsulation.
Automatic memory management (not necessarily garbage collection).
All data are defined by abstract data type (ADT) based modules. (e.g. classes).
Ability to extend existing classes (i.e. inheritance).
Support of polymorphism and dynamic binding.
Multiple inheritance (the need for this feature in an OO language is disputed by many in the OO field.)

Objects

Basic building block of OO languages is the object. Like objects of human thought, OO objects combine both data (nouns and adjectives) and actions (verbs) into one package. Data is implemented as data, while actions are implemented as functions. The machine still sees a data-functionality split. But the outside world sees data and functionality merged into one whole.
A good beginning makes a good ending