Homework1 Solution

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

• create-new-member

• delete-member
• update-member-record

Object-oriented design
In the object-oriented design approach, the system is viewed as collection of
objects (i.e. entities). The state is decentralized among the objects and each
object manages its own state information. For example, in a Library Automation
Software, each library member may be a separate object with its own data and
functions to operate on these data. In fact, the functions defined for one object
cannot refer or change data of other objects. Objects have their own internal data
which define their state. Similar objects constitute a class. In other words, each
object is a member of some class. Classes may inherit features from super class.
Conceptually, objects communicate by message passing.

Function-oriented vs. object-oriented design approach


The following are some of the important differences between function-oriented
and object-oriented design.

• Unlike function-oriented design methods, in OOD, the basic abstraction


are not real-world functions such as sort, display, track, etc, but real-
world entities such as employee, picture, machine, radar system, etc.
For example in OOD, an employee pay-roll 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 difference as “identify
verbs if you are after procedural design and nouns if you are after
object-oriented design”

• In OOD, state information is not represented in a centralized shared


memory but is distributed among the objects of the system. For
example, while developing an employee pay-roll system, the employee
data such as the names of the employees, their code numbers, basic
salaries, etc. are usually implemented as global data in a traditional
programming system; whereas in an object-oriented system these data
are distributed among different employee objects of the system.
Objects communicate by message passing. Therefore, one object may
discover the state information of another object by interrogating it. Of
course, somewhere or other the real-world functions must be
implemented. In OOD, the functions are usually associated with
specific real-world entities (objects); they directly access only part of
the system state information.

Version 2 CSE IIT, Kharagpur


• Function-oriented techniques such as SA/SD 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.

To illustrate the differences between the object-oriented and the function-oriented


design approaches, an example can be considered.

Example: Fire-Alarm System

The owner of a large multi-stored building wants to have a computerized fire


alarm system for his building. Smoke detectors and fire alarms would be placed
in each room of the building. The fire alarm system would monitor the status of
these smoke detectors. Whenever a fire condition is reported by any of the
smoke detectors, the fire alarm system should determine the location at which
the fire condition is reported by any of the smoke detectors, the fire alarm system
should determine the location at which the fire condition has occurred and then
sound the alarms only in the neighboring locations. The fire alarm system should
also flash an alarm message on the computer console. Fire fighting personnel
man the console round the clock. After a fire condition has been successfully
handled, the fire alarm system should support resetting the alarms by the fire
fighting personnel.
Function-Oriented Approach:

/* Global data (system state) accessible by various


functions */
BOOL detector_status[MAX_ROOMS];
int detector_locs[MAX_ROOMS];
BOOL alarm_status[MAX_ROOMS];
/* alarm activated when status is set */
int alarm_locs[MAX_ROOMS];
/* room number where alarm is located */
int neighbor-alarm[MAX_ROOMS][10];
/* each detector has at most 10 neighboring locations
*/

The functions which operate on the system state are:


interrogate_detectors();
get_detector_location();
determine_neighbor();
ring_alarm();
reset_alarm();
report_fire_location();

Version 2 CSE IIT, Kharagpur


Object-Oriented Approach:

class detector
attributes:
status, location, neighbors

operations:
create, sense_status, get_location,
find_neighbors

class alarm
attributes:
location, status

operations:
create, ring_alarm, get_location,
reset_alarm

In the object oriented program, an appropriate number of instances of the class


detector and alarm should be created. If the function-oriented and the object-
oriented programs are examined, it can be seen that in the function-oriented
program, the system state is centralized and several functions accessing this
central data are defined. In case of the object-oriented program, the state
information is distributed among various sensor and alarm objects.
It is not necessary an object-oriented design be implemented by using an
object-oriented language only. However, an object-oriented language such as
C++ supports the definition of all the basic mechanisms of class, inheritance,
objects, methods, etc. and also support all key object-oriented concepts that we
have just discussed. Thus, an object-oriented language facilitates the
implementation of an OOD. However, an OOD can as well be implemented using
a conventional procedural language – though it may require more effort to
implement an OOD using a procedural language as compared to the effort
required for implementing the same design using an object-oriented language.
Even though object-oriented and function-oriented approaches are
remarkably different approaches to software design, yet they do not replace each
other but complement each other in some sense. For example, usually one
applies the top-down function-oriented techniques to design the internal methods
of a class, once the classes are identified. In this case, though outwardly the
system appears to have been developed in an object-oriented fashion, but inside
each class there may be a small hierarchy of functions designed in a top-down
manner.

Version 2 CSE IIT, Kharagpur

You might also like