|
It
has been suggested that function-oriented design is obsolete and
should be superseded by an object-oriented approach.
Unlike
function-oriented design, in OOD the basic abstraction is not
functions such as “sort”, “display”, “track”, etc.,
but real-world entities such as “employee”, “picture”,
“machine”, “radar system”, etc.
In
OOD: software is not developed by designing functions such as:
update-employee-record, get-employee-address, etc. but by
designing objects such as: employees, departments, etc.
Grady
Booch sums up this fundamental difference saying: “Identify
verbs if you are after procedural design and nouns if you are
after object-oriented design.”
In
OOD: state information is not shared in a centralized data. but
is distributed among the objects of the system.
Function-oriented
techniques group functions together if: as a group, they
constitute a higher level function. On the other hand,
object-oriented techniques group functions together: on the
basis of the data they operate on.
Though
outwardly a system may appear to have been developed in an
object oriented fashion, but inside each class there is a small
hierarchy of functions designed in a top-down manner.
|