The Object model
Object-oriented technology is built upon a sound engineering foundation, whose elements we collectively call the object model. The object model encompasses the principles of abstraction, encapsulation, modularity, hierarchy, typing, concurrency, and persistence.
How you differentiate the object oriented model and traditional structured?
OOM requires a different way of thinking about decomposition, and it produces software architectures that are largely outside the realm of the structured design culture. These differences arise from the fact that structured design methods build upon structured programming, whereas object-oriented design builds upon object-oriented programming. Unfortunately, object-oriented programming means different things to different people.
Foundations of the Object Model
Object-oriented design methods have evolved to help developers exploit the expressive power of object-based and object-oriented programming languages, using the class and object as basic building blocks. 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"
We would add to this list three more contributions to the foundation of the object model:
• Advances in database models
• Research in artificial intelligence
• Advances in philosophy and cognitive science
Elements of the Object Model
They further suggest that there are five main kinds of programming styles, here listed with the kinds of abstractions they employ:
• Procedure-oriented Algorithms
• Object-oriented Classes and objects
• Logic-oriented Goals, often expressed in a predicate calculus
• Rule-oriented If-then rules
• Constraint-oriented Invariant relationships
Rule-oriented programming would be best for the design of a knowledge base, and procedure-oriented programming would be best suited for the design of computation-intense operations. From our experience, the object-oriented style is best suited to the broadest set of applications; indeed, this programming paradigm often serves as the architectural framework in which we employ other paradigms. Each of these styles of programming is based upon its own conceptual framework. Each requires a different mindset, a different way of thinking about the problem. For all things object-oriented, the conceptual framework is the object model.
There are four major elements of this model:
By major, we mean that a model without any one of these elements is not object-oriented.
There are three minor elements of the object model
By minor, we mean that each of these elements is a useful, but not essential, part of the object Model.
An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of objects and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer.List the different types of abstraction
An object that represents a useful model of a problem domain or solution-domain entity
An object that provides a generalized set of operations, all of which perform the same kind of function
Virtual machine abstraction
An object that groups together operations that are all used by some superior level of control, or operations that all use some junior-level set of operations.
An object that: packages a set of operations that have no relation to each other
Encapsulation is the process of compartmentalizing the elements of an abstraction that constitute its structure and behavior; encapsulation serves to separate the contractual interface of an abstraction and its implementation.
Modularity is the property of a system that has been decomposed into a set of cohesive and loosely coupled modules.
Hierarchy is a ranking or ordering of abstractions.
Typing is the enforcement Of the class of an object, such, that objects of different types may not be interchanged, or at the most, they may be interchanged only in very restricted ways.
Concurrency is the properly that distinguishes an active object from one that is not active.
Persistence is the property of an object through which its existence transcends time (i.e. the object continues to exist after its creator ceases to exist) and/or space (i. e. the objects location moves from the address space in which it was created).