Chapter-1 OOAD
Chapter-1 OOAD
Structured design methods evolved to guide developers who were trying to build
complex systems using algorithms as their fundamental building blocks.
Stefik and Bobrow define objects as “entities that combine the properties of
procedures and data since they perform computations and save local state”.
Jones further clarifies this term by noting that “in the object model, emphasis is placed on crisply
characterizing the components of the physical or abstract system to be modeled by a programmed
system”.
An object can only change state, behave, be manipulated, or stand in relation to other objects in
ways appropriate to that object.
Foundations—The Object Model
As Yonezawa and Tokoro point out, “The term ‘object’ emerged almost independently
in various fields in computer science, almost simultaneously in the early 1970s, to refer
to notions that were different in their appearance, yet mutually related. All of these
notions were invented to manage the complexity of software systems in such a way that
objects represented components of a modularly decomposed system or modular units of
knowledge representation”
Levy adds that the following events have contributed to the evolution of object-
oriented concepts:
Advances in computer architecture, including capability systems and hardware support for
operating systems concepts
Advances in programming languages, as demonstrated in Simula, Smalltalk, CLU, and Ada
Advances in programming methodology, including modularization and information hiding
Three more contributions to the foundation of the object model:
Advances in database models
Research in artificial intelligence
Advances in philosophy and cognitive science
The concept of object begins in hardware with invention of descriptor-based
architecture to capability-based architectures
Computers can also have an object-oriented architecture with advantages: better
error detection, improved execution efficiency, fewer instruction types, simpler
compilation, and reduced storage requirements.
Object-oriented architectures are used object-oriented operating systems.
Dijkstra’s work with the THE multiprogramming system first introduced the
concept of building systems as layered state machines
Other object-oriented operating systems include the Plessey/System 250 (for the
Plessey 250 multiprocessor), Hydra (for CMU’s C.mmp), CALTSS (for the CDC
6400), CAP (for the Cambridge CAP computer), UCLA Secure UNIX (for the
PDP 11/45 and 11/70), StarOS (for CMU’s Cm*), Medusa (also for CMU’s Cm*),
and iMAX (for the Intel 432).
The fundamental ideas of classes and objects first appeared in the language Simula
67.
Smalltalk-80, took Simula’s object-oriented paradigm, an instance of class.
In the 1970s languages such as Alphard, CLU, Euclid, Gypsy, Mesa, and Modula
were developed, which supported the then-emerging ideas of data abstraction.
The unification of object-oriented concepts with C has lead to the languages C++
and Objective C.
Java avoid common programming errors when using C++.
Adding object-oriented programming mechanisms to Pascal has led to the
languages Object Pascal, Eiffel, and Ada.
Lisp incorporate the object-oriented features of Simula and Smalltalk
Dijkstra first identified the importance of composing systems in layers of abstraction
Parnas later introduced the idea of information hiding
In the 1970s a number of researchers, most notably Liskov and Zilles , Guttag, and Shaw,
pioneered the development of abstract data type mechanisms.
Hoare contributed to these developments with his proposal for a theory of types and subclasses.
Database technology contribute ideas of the entity-relationship (ER) approach to data modeling.
The ER model, first proposed by Chen.
In the field of artificial intelligence, developments in knowledge representation have contributed
to an understanding of object-oriented abstractions. In 1975, Minsky first proposed a theory of
frames to represent real-world objects by image and natural language recognition systems.
Lastly, philosophy and cognitive science have contributed to the advancement of the object
model. In the twentieth century, Rand expanded on these themes in her philosophy of objectivist
epistemology. , Minsky has proposed a model of human intelligence in which he considers the
mind to be organized as a society of otherwise mindless agents.
Object-Oriented Programming
Defined it as follows:
Object-oriented programming is a method of implementation in which programs are
organized as cooperative collections of objects, each of which represents an instance of
some class, and whose classes are all members of a hierarchy of classes united via
inheritance relationships.
Three important parts to this definition:
1. Object-oriented programming uses objects, not algorithms, as its fundamental logical
building
2. Each object is an instance of some class
3. Classes may be related to one another via inheritance relationships
Programming with abstract data types- No inheritance
A language is object-oriented if and only if it satisfies the following requirements:
It supports objects that are data abstractions with an interface of named operations and
a hidden local state.
Objects have an associated type [class].
Types [classes] may inherit attributes from supertypes [superclasses].
If a language does not provide direct support for inheritance, then it is not object-
oriented. Cardelli and Wegner distinguish such languages by calling them object-
based rather than object-oriented.
Under this definition, Smalltalk, Object Pascal, C++, Eiffel, CLOS, C#, and Java
are all object-oriented, and Ada83 is object-based (support for object orientation
was later added to Ada95).
Object-Oriented Design