Object-oriented development follows system development approach that uses the object as the basic unit of systems analysis and design. An object is the combination of data and the actions or processes that can be performed on the data into a single object. In this approach, the system is modeled as a collection of objects and the relationships between them.
Object-oriented modeling is based on the concepts of class and inheritance. Objects belonging to a certain class have the features of that class. Classes of objects in turn can inherit all the structure and behaviors of a more general class and then add variables and behaviors unique to each object. New classes of objects are created by choosing an existing class and specifying how the new class differs from the existing class, instead of starting from scratch each time.
The phases of object-oriented development are similar to those of conventional systems development, consisting of analysis, design, and implementation. However, object-oriented development is more iterative and incremental than traditional structured development.
During analysis, systems builders document the functional requirements of the system, specifying its most important properties and what the proposed system must do; Interactions between the system and its users are analyzed to identify objects, which include both data and processes.
The object-oriented design phase describes how the objects will behave and how they will interact with one other; Similar objects are grouped together to form a class, and classes are grouped into hierarchies in which a subclass inherits the attributes and methods from its superclass.
The information system is implemented by translating the design into program code, reusing classes that are already available in a library and adding new ones; Implementation may also involve the creation of an object-oriented database. The resulting system must be thoroughly tested and evaluated.
Because objects are reusable, object-oriented development could potentially reduce the time and cost of writing software because organizations can reuse software objects that have already been created as building blocks for other applications.