Object oriented software is different than conventional software. There are potentially many benefits to object oriented development. Among these benefits are simplification of requirements, design, and implementation.
These benefits are achieved by modeling the problem domain with objects that represent the important entities, by encapsulating the functions with the data, by reusing objects within a project and between projects, and by having a solution that is much closer intellectually to the problem.
The Unified Modeling Language (UML) is the standard notation for object oriented models. The specification of the UML is available on the Web.
One of the innovative ideas in object oriented development software is inheritance. Inheritance comes from the recognition of the hierarchy of ideas and concepts, and how this hierarchy/classification involves much inherent reuse of ideas and so on from the higher level concepts to the lower-level specialization of those concepts.
When two groups of entities are related by one being a specialization of the other, there is the potential for an inheritance relationship. In an inheritance relationship, the base class (the more general class) will contain all common attributes. The derived class (the more specialized class) will inherit all the common attributes from the base class.
For example, if one group of entities consists of vehicles and the other group of cars, we can use inheritance. The cars can inherit from the vehicles. The cars can share many of the attributes and operations of the vehicle class. All the common attributes can be located in the base class. The derived class will automatically inherit those attributes. This sharing saves effort.
Polymorphism means ‘‘able to assume many forms.’’ It refers to functions that can deal with different versions or forms of the object or parameter list. In object oriented software, it often means a function that can deal with the base type or a derived type. In the car/vehicle example, the base class will have polymorphic functions for tasks that all vehicles perform but may perform differently, such as turn corners. Each derived class will either use the base class function or provide a version that is suitable for the derived class.
One approach to identifying the requirements of a proposed system is to start with identifying the objects in the problem domain. These objects are usually nouns in the problem statement.
The Noun-In-Text Approach
In the noun-in-text approach, all the nouns in the text are identified. Different nouns may be used for the same concept. These equivalent nouns and nouns associated with each concept should be sorted into groups. Some nouns will be related to the environment outside of the proposed system and may be removed.
Inheritance is the ‘‘a-kind-of’’ relationship. The base class is the common object and the derived classes are the specialized instances of the common object. A top-down approach is to identify objects that sometimes take special processing or sometimes have special attributes. This is usually an effective approach to finding inheritance.
The opposite approach is also sometimes useful. It is a bottom-up approach, which is to group all similar items and look for the commonality. The intersection of all the similar items will become the base class.
Multiplicities are restrictions on the associations between instances of objects. The multiplicity is specified by an expression at the end of the association. The expression can be a single value, a range of values, or a list of ranges or single values. In the range, the two values are separated by two periods.
The problem domain often has restrictions on how many relationships an instance of an object can have with instances of other objects.
Another approach is to use the existence dependency relationship between objects to determine the required associations. Two objects have an existence dependency relationship if the existence of the child object is dependent on exactly one instance of the parent object. This means that the parent instance exists before the child instance is created and the child instance is deleted before the parent instance is deleted.
Use Case Approach
Another approach to identifying the requirements of a proposed system is to start with identifying the scenarios. This approach views the activities as the best way to determine the necessary functionality and the object oriented development needed to support that functionality.
|Read More Topics|
|Overloading binary operators|
|What is an API?|
|Overloading Unary operators|
|Packet Switching at Network Layer|