noun phrase approach in ooad


Abstraction means to focus on the essential features of an element or object in OOP, ignoring its extraneous or accidental properties. Weak Typing Here, messages may be sent to any class. There may be more than one algorithm corresponding to a given operation.

In the 1990s, Coad incorporated behavioral ideas to object-oriented methods. The process of object modelling can be visualized in the following steps . Generalization and specialization represent a hierarchy of relationships between classes, where subclasses inherit from super-classes. The operations in the objects are defined using algorithms. Example The following figure shows a portion of DFD for computing the salary of employees of a company that has decided to give incentives to all employees of the sales department and increment the salary of all employees of the HR department. The dynamic model represents the timedependent aspects of a system. Once the code is in shape, it is tested using specialized techniques to identify and remove the errors in the code. We know that the Object-Oriented Modelling (OOM) technique visualizes things in an application by using models organized around objects. Here the private data of the object my_circle cannot be accessed directly by any method that is not encapsulated within the class Circle.

It can be said that a petal is a partof flower. Guard Condition A Boolean expression which if True, causes a transition on receiving the event trigger. The product metrics suitable for object-oriented systems are .

If one concurrent sub-state reaches its final state before the other, control waits at its final state. Each object has . The analysis model captures the logical information about the system, while the design model adds details to support efficient information access. Attributes are often referred as class data. Here, the output arrows are unlabelled as they denote the same value. After the analysis phase, the conceptual model is developed further into an object-oriented model using object-oriented design (OOD). Each branch can have multiple accounts and loans.

Though the name and purpose of the methods in the classes are same, the internal implementation, i.e., the procedure of calculating area is different for each class. The different aspects that are documented are as follows . Also, it is difficult for a non-technical person to understand.

Identifying and refining the classes in each subsystem or package, Defining the links and associations between the classes, Designing the hierarchical associations among the classes, i.e., the generalization/specialization and inheritances.

Whenever the value is changed at runtime, it is checked whether the value is valid or not. It enables reuse of objects, designs, and functions. To implement bi-directional association, links in both directions require to be maintained. Implementation using C++ STL list container . See the following figures. The former is the independent thing, while the latter is the dependent thing. It is easy to maintain. The following figure depicts the examples of different types of inheritance. Behavior that represents externally visible activities performed by an object in terms of changes in its state. A class diagram models the static view of a system. The nodes are represented using icons that clearly depict the real-world equivalent. In addition, each has its own particular characteristics. In a system, two types of concurrency may exist. The graphical representation serves as a blueprint for the programmers to develop a system. Let us consider a simple class, Circle, that represents the geometrical figure circle in a twodimensional space. Multiple Inheritance A subclass derives from more than one super-classes. In the system analysis or object-oriented analysis phase of software development, the system requirements are determined, the classes are identified and the relationships among classes are identified. The following figure shows an example of generalization and specialization. Grady Booch has defined abstraction as follows , An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of objects and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer..

Conceptual containment Example, shareholder hasa share.

These are the patterns of design. In this approach, the states are arranged in a generalization hierarchy in a manner that they can be referred by a common pointer variable. Constraints can appear in all the three models of object-oriented analysis. A state machine is graphically represented through a state transition diagram. The emphasis shifts from application domain concepts toward computer concepts. Reusability Reusability determines whether the modules and classes can be reused for developing other software products. Dynamic Modelling can be defined as a way of describing how an individual object responds to events, either internal events triggered by other objects, or external events triggered by the outside world. This process of insulating an objects data is called data hiding or information hiding.

Scenarios that illustrate the behavior of the main aspects Behavioural diagrams, The features of a good documentation are , Concise and at the same time, unambiguous, consistent, and complete, Traceable to the systems requirement specifications. Events that trigger transitions are written alongside the arc of transition in state diagrams. Represent State as a Location within a Program This is the traditional procedure-driven approach whereby the location of control defines the program state. The object designer may incorporate refinements in the strategy of the statechart model.

However, a customer must not have more than one savings account or current account. A customer may open both a savings account and a current account. Agree State, which is the situation at a particular condition during the lifetime of an object. The other significant innovations were Object Modelling Techniques (OMT) by James Rumbaugh and Object-Oriented Software Engineering (OOSE) by Ivar Jacobson. So, the time and cost of development is inherently high. A package may contain structural things like classes, components, and other packages in it. It allows objects to be placed directly within the body of other classes. Adjust the classes and their associations. Unconnected or weakly connected classes should be placed in separate modules. Polymorphism is originally a Greek word that means the ability to take multiple forms. Here, the designer details out the strategy chosen during the system design.

There are two primary diagrams that are used for dynamic modelling , Interaction diagrams describe the dynamic behavior among different objects.

Though a secondary product, a good documentation is indispensable, particularly in the following areas , A beneficial documentation should essentially include the following contents , Highlevel system architecture Process diagrams and module diagrams.

With each update of the base attribute value, the derived attribute is also re-computed. the control flow by time ordering using sequence diagrams. The subsystem model is represented by UML packages.

In concurrent sub-states, the sub-states execute in parallel, or in other words, each state has concurrently executing state machines within it.

Each major component of the system is called a subsystem. Regarding inheritances, the designer should do the following . workstation), or another system (e.g. In object-oriented paradigm, polymorphism implies using operations in different ways, depending upon the instance they are operating upon. The implementation details generally include .

Scenario is a description of a specified sequence of actions. In an object-oriented environment, there are active and inactive objects. As actors are active objects, the dynamic model has to specify when it acts. The extensibility mechanisms are . Representation in DFD A data flow is represented by a directed arc or an arrow, labelled with the name of the data item that it carries. Coupling and Cohesion Modules having low coupling and high cohesion are considered to be better designed, as they permit greater reusability and maintainability. Thus it shows the doers of a system. To map inheritance, the primary key of the base table(s) is assigned as the primary key as well as the foreign key in the derived table(s). In order to implement constraints, a valid default value is assigned to the attribute when an object is instantiated from the class. They are used as a part of the system documentation. Besides, each association may be either onetoone, onetomany, or manytomany. Each data store is connected to at least one process. It defines the function of the internal processes in the system with the aid of Data Flow Diagrams (DFDs). Besides, the developer designs the internal details of the classes and their associations, i.e., the data structure for each attribute and the algorithms for the operations. For example, car is a kind of land vehicle, or ship is a kind of water vehicle.

The team often uses system tests as regression tests when assembling new releases. Some examples of object-oriented programming languages are C++, Java, Smalltalk, Delphi, C#, Perl, Python, Ruby, and PHP. Concurrency is associated with the problems of data integrity, deadlock, and starvation.

In files or databases, the object lifespan is longer than the duration of the process creating the object. An object may have states that are composed of sub-states, and concurrent events may occur in each of the sub-states.

Event classes may have attributes associated with them, time being an implicit attribute. While designing applications, some commonly accepted solutions are adopted for some categories of problems. In class diagram, it is prefixed by the symbol +. Source State The state affected by the transition. Cases in which one event triggers other events in same or different objects are identified. There are two alternative implementation strategies to implement states in state chart diagrams.

It permits the elements of the class to be accessed from outside only through the interface provided by the class. It identifies the objects, the classes into which the objects can be grouped into and the relationships between the objects. In OOP, a class is visualized as a type having properties distinct from any other types.

The figure illustrates a node stereotyped as server that comprises of processors. An action may operate upon an object on which an event has been triggered or on other objects that are visible to this object. Internal Transitions The changes within a state that do not cause a change in the state. ; or an intangible conceptual existence, like a project, a process, etc. Dependency This is a semantic relationship between two things such that a change in one thing brings a change in the other. An event is a specification of a significant occurrence that has a location in time and space. In the next level DFD, as shown in the following figure, the major processes of the system are identified, the data stores are defined and the interaction of the processes with the actors, and the data stores are established. Let us consider a simplified Banking System. Once the customer places an order, it is processed by the sales department and the customer is given the bill. Implementation using C++ .

Presence of too many associations may render a system indecipherable and hence reduce the overall efficiency of the system.

The object modelvisualizes the elements in a software application in terms of objects. Protected A protected member is visible from within the class and from the subclasses inherited from this class, but not from outside. There are three processes in it, Verify Details, Generate C_Code, and Update Customer Details. Sequence diagrams are interaction diagrams that illustrate the ordering of messages according to time. The overall system is modelled as the aggregation of state machines, where each state machine executes concurrently with others.

While decomposing a process, the data flow into or out of the process should match the data flow at the next level of DFD.

Example The following figure shows an object diagram of a portion of the class diagram of the Banking System. During object design, this strategy is aptly embellished for appropriate implementation. A state that has simpler states nested inside it is called a composite state. For example, the Circle class can be converted to table as shown in the figure below. For example, if we derive a class Rose from a class Flower, we can say that a rose isa flower. Example Let us consider a software system, Wholesaler Software, that automates the transactions of a wholesale shop. Class diagram based testing Each class, derived class, associations, and aggregations are tested.

An account may be either a savings account or a current account. However it may have additional details about the contents of the package.

The trading house has transactions with two types of customers, individual customers and corporate customers. Time Event An event representing passage of time.

Operations are defined for the events received by the objects. and H.C.F. A set of attributes for the objects that are to be instantiated from the class. Object-oriented design includes two main stages, namely, system design and object design. Constraints in classes restrict the range and type of values that the attributes may take. Onetomany Associations Consider the relationship between Department and Employee having onetomany association as shown in the figure below.

Encapsulation is the process of binding both attributes and methods together within a class. The objects that initiate the interaction are placed on the xaxis. Annotational Things These are the explanations in the UML models representing the comments applied to describe elements. During design optimization, it is checked if deriving new associations can reduce access costs. The associations between the identified classes are established and the hierarchies of classes are identified. In traditional analysis methodologies, the two aspects - functions and data - are considered separately. The figure below shows the top-level DFD.

In UML, behind each graphical notation, there is a textual statement denoting the syntax and semantics. Documentation is an essential part of any software development process that records the procedure of making the software. Composite states may have either sequential sub-states or concurrent sub-states.

Implement the associations as a distinct object, in case of manyto-many relationships; or as a link to other object in case of oneto-one or oneto-many relationships. It helps in faster development of software. Inheritance is the mechanism that permits new classes to be created out of existing classes by extending and refining its capabilities. Hierarchical Inheritance A class has a number of subclasses each of which may have subsequent subclasses, continuing for a number of levels, so as to form a tree structure. Event, an occurrence that triggers transitions, Action, an uninterrupted and atomic computation that occurs due to some event, and. This is implemented by including a list of Dependents in class Employee. It allows subsystems to be replaced or modified without affecting other subsystems. Persistent data is saved on secondary storage medium from where it can be reloaded when required.

In traditional programming, the lifespan of an object was typically the lifespan of the execution of the program that created it.

For example, mouse click or keypress by the user are external events. Behavioral Things These are the verbs of the UML models representing the dynamic behavior over time and space. UML has semantic rules for the following .

They are . ObjectOriented Analysis (OOA) is the procedure of identifying software engineering requirements and developing software specifications in terms of a software systems object model, which comprises of interacting objects. Implementation using C++ . It reduces development risks, particularly in integration of complex systems.

Message passing enables all interactions between objects.

Testing is a continuous activity during software development. Interface is a collection of methods of a class or component.

Typically, a class is designed such that its data (attributes) can be accessed only by its class methods and insulated from direct outside access. Coherence of Elements An element, such as a class, an operation, or a module, is coherent if it is organized on a consistent plan and all its parts are intrinsically related so that they serve a common goal. The object-oriented paradigm took its shape from the initial concept of a new programming approach, while the interest in design and analysis methods came much later. Associations may be either unidirectional or bidirectional. Metrics can be broadly classified into three categories: project metrics, product metrics, and process metrics. This operation brings a change in the state of my_circle, i.e., the object has exhibited certain behavior. Now, if the operation scale() is performed on my_circle with a scaling factor of 2, the value of the variable a will become 8. When an object of class Circle invokes its findArea() method, the operation finds the area of the circle without any conflict with the findArea() method of the Square class. The startup of the system, i.e., the transition of the system from non-initialized state to steady state. The lowest-level process may be a simple function.

They may also define the relationship between the different values that an object may take at different times.

The existing classes are called the base classes/parent classes/super-classes, and the new classes are called the derived classes/child classes/subclasses. Concurrency in operating systems allows performing multiple tasks or processes simultaneously. Single Inheritance A subclass derives from a single super-class. Understandability This determines whether the chosen algorithm is easy to understand and implement.

The conceptual framework of objectoriented systems is based upon the object model. The 1 alongside Department and * alongside Employee depict that the cardinality ratio is onetomany. The process of dynamic modelling can be visualized in the following steps . DFDs take a long time to create, which may not be feasible for practical purposes.

PARTOF hierarchy It defines the hierarchical relationship in aggregation by which a class may be composed of other classes.

The subclass can inherit or derive the attributes and methods of the super-class(es) provided that the super-class allows so. The following figure shows the details of the process Register Customer. A link represents a connection through which an object collaborates with other objects. The state is an abstraction given by the values of the attributes that the object has at a particular time period. The objects identified in the objectoriented analysis phases are grouped into classes and refined so that they are suitable for actual implementation. The primary scenarios depict the essential sequences and the secondary scenarios depict the alternative sequences. For implementing unidirectional associations, care should be taken so that unidirectionality is maintained. Maintainability Maintainability determines the ease at which errors can be corrected and modules can be updated.

For example, we can consider the events of departure of a flight of an airline, which we can group into the following class , Flight_Departs (Flight_No, From_City, To_City, Route). When all the nested state machines reach their final states, the sub-states join back to a single flow. The file priority.cpp has compilation dependency on other.cpp.

This is the purpose of dynamic modelling. In Object Modelling, the constraints define the relationship between objects. Modularity is the process of decomposing a problem (program) into a set of modules so as to reduce the overall complexity of the problem. It involves testing the associations within the subsystem as well as the interaction of the subsystem with the outside. It comprises of a set of objects, their relationships, and the message that the objects send and receive. The functional model corresponds to the data flow diagram of traditional structured analysis. The important features of objectoriented programming are . Each element in UML has a unique graphical notation. Sub-states can be nested to any number of levels. Restructuring the class data (if necessary). For example, stack overflow, a divide error, etc. In this chapter, we will look into the basic concepts and terminologies of objectoriented systems. A set of operations that portray the behavior of the objects of the class.

Static Models To describe the static structure of a system using class diagrams and object diagrams. The state of the object as a result of the changes is shown in the object model. A module should have low coupling with other modules, i.e., interaction or interdependence between modules should be minimum.

The designer decides whether . In the Automated Trading House System, let us model Order as an object and trace its sequence. It could be between an actor and a process, or between a data store and a process.

It is often seen that a perfectly optimized design is more efficient but less readable and reusable. The system is conceived as a set of interacting subsystems that in turn is composed of a hierarchy of interacting objects, grouped into classes.

The functional model for the Wholesale Software is given below. It cannot identify which objects would generate an optimal system design.