In the simple terms object-oriented analysis and design are understood as a technical approach for analyzing and designing an application, system or business by applying the object-oriented paradigm and visual modeling throughout the development life cycles to foster better the stakeholder communication and the product quality.
How do people understand technology?
People understand technology as an old story such as how several blind men set out to understand what an elephant was by examining a live specimen. Now we can imagine the many animated debates that these blind men had when they compared notes where each assured that the others must be wrong. Often people who study the technology are like the blind men in our story.
It is very common to focus intently on one facet of one aspect of a technology while ignoring the vast breadth of the same technology. There is nothing wrong with this unless a person studying the facet begins to think whether he or she has somehow acquired a good grasp of the entire technology. In order to acquire an in-depth understanding of a technology, it requires a great deal of research. The sheer bulk of material that must be examined is daunting.
The task is further complicated by the unfortunate errors which are contained in many of the discussions. Even if an individual can assimilate a large quantity of material and easily identify any errors there is still the process of analyzing what has been assimilated. In order to truly understand the technology, an individual must be able to recognize as well as spot the valid patterns.
We live in a world of objects. The Object-Oriented view is an abstraction that models the world in such a way that it helps us to understand and navigate it better. OO approach was first proposed in the late 1960s. As time passes the object technologies are replacing the classical software development approaches. The object technologies lead to reuse the OO software which is easier to maintain, adapt and scale.
For many years the term OO was used to denote a software development approach that used one of a number of OO programming languages. For example Ada 95, C++, Eiffel, Smalltalk. Today the OO paradigm encompasses a complete view of software engineering. Although any one of the process models could be adapted for use with OO. However, the best choice would be an evolutionary process model.
Object-oriented technology is both immense and far-reaching. The end users of computer systems have noticed easy-to-use software applications and operating systems. There are more flexible services that are being provided by such industries as banking, telecommunications, and cable television.
They are the physical and the conceptual things that we find in the universe around us. Hardware, software, documents, human beings and even concepts are all examples of objects. An automotive engineer would see tires, doors, engines, top speed and the current fuel level as objects.Atoms, molecules, volumes, and temperatures would all be objects a chemist might consider in creating an object-oriented simulation of a chemical reaction.A software engineer would consider stacks, queues, windows, and check boxes as objects.
There are two broad categories of objects and they are classes and instances. The users of object-oriented technology usually think of classes as containing the information necessary to create instances that are the structure and capabilities of an instance is determined by its corresponding class. There are three commonly used views on the definition of "class":
It should be noted that there is a possibility for an instance of a class to also be a class. A meta-class is referred to as a class whose instances themselves are classes which mean when we use the instance creation mechanism in a meta-class the instance created will itself be a class. The instance creation mechanism of this class can be used to create instances although these instances may or may not be classes themselves.
The concept of a parameterized class is quite similar to that of a metaclass. A parameterized class is a template for a class wherein the specific items have been identified as being required to create the non-parameterized classes based on the template. In terms of effect a parameterized class can be viewed as a "fill in the blanks" version of a class.
We cannot directly use the instance creation mechanism of a parameterized class. First, we must supply the required parameters which result in the creation of a non-parameterized class. Once we have a non-parameterized class now we can use its creation mechanisms to create instances.
Black Box and Interfaces
In simple terms, the objects are understood as the black boxes. Specifically, the underlying implementations of objects are hidden from those that use the object. In object-oriented systems, it is only the producer or the creator, the designer or the builder of an object who knows the details about the internal construction of that particular object.
The consumers or the users of an object are the denied knowledge of the inner workings of the object which must be able to deal with an object via one of its three distinct interfaces:
Aggregation is simply either the process of creating a new object from two or more other objects or an object that is composed of two or more other objects. Aggregation is a variant of the "has an" or association relationship while aggregation is much more specific than association. It is the association that represents a part-whole or part-of relationship. As a type of association, an aggregation can be named and have the same adornments that an association can. However, an aggregation may not involve more than two classes. In UML it is graphically represented as a hollow diamond shape on the containing class which is an end of the tree with lines that connects the contained classes to the containing class.
It is a stronger variant of the "owns an" or association relationship while the composition is more specific than aggregation. The composition usually has a strong life cycle dependency between the instances of the container class and the instances of the contained class or classes. If the container is destroyed then normally every instance that it contains is destroyed as well. The UML graphical representation of a composition relationship is a filled diamond shape on the containing class which is at the end of the tree of lines that connects the contained class or classes to the containing class.
Specialization and Inheritance
Aggregation is not the only way in which two objects can be related. One object can be a specialization of another object. Specialization is either the process of defining a new object based typically on the narrower definition of an existing object or an object that is directly related to and more narrowly defined than the another object.
Abstract classes are referred to those classes that embody coherent and cohesive but incomplete concepts which in turn make these characteristics available to their specializations via inheritance. People sometimes use the terms "partial type" and "abstract superclass" as synonyms for abstract class. While we would never create the instances of abstract classes we most certainly would make their individual characteristics available to more specialized classes via inheritance.