(Unit - 1) - 1.2 ObjectModel
(Unit - 1) - 1.2 ObjectModel
By the late 1960s, especially with the advent of transistors and then
integrated cir- cuit technology, the cost of computer hardware had
dropped dramatically, yet pro- cessing capacity had grown almost
exponentially. Larger problems could now be solved, but these
demanded the manipulation of more kinds of data. Thus, third-
generation languages such as ALGOL 60 and, later, Pascal evolved
with support for data abstraction. Now a programmer could describe
the meaning of related kinds of data (their type) and let the
programming language enforce these design decisions. This generation
of high-order programming languages again moved our software a step
closer to the problem domain and further away from the underlying
machine.
Subprograms
Subprograms
Data
Subprograms
Because the object model derives from so many disparate sources, it has
unfortu- nately been accompanied by a muddle of terminology. A
Smalltalk programmer uses methods, a C++ programmer uses virtual
member functions, and a CLOS programmer uses generic functions. An
Object Pascal programmer talks of a type coercion; an Ada programmer
calls the same thing a type conversion; a C# or Java programmer would
use a cast. To minimize the confusion, let’s define what is object-
oriented and what is not.
Object-Oriented Programming
Object-Oriented Design
Object-Oriented Analysis
The object model has influenced even earlier phases of the software
development lifecycle.
How are OOA, OOD, and OOP related? Basically, the products of
object-oriented analysis serve as the models from which we may start
an object-oriented design; the products of object-oriented design can
then be used as blueprints for com- pletely implementing a system
using object-oriented programming methods.
3. Procedure-oriented Algorithms
4. Object-oriented Classes and objects
5. Logic-oriented Goals, often expressed in a predicate
calculus
6. Rule-oriented If–then rules
7. Constraint-oriented Invariant relationships
There is no single programming style that is best for all kinds of
applications. For example, rule-oriented programming would be best
suited for the design of a knowledge base, and procedure-oriented
programming would be best 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.
1. Abstraction
2. Encapsulation
3. Modularity
4. Hierarchy
1. Typing
2. Concurrency
3. Persistence