One object knows about the existence of another object and may use its functionality at some point. In a diagram the association would alert you that there is a dependency and that changing one object may impact the other.
It is not a technique to apply when you have some problem to solve, it is more like a fact of life you should be aware of when it is there. It is a relationship.
OOAD - Object Model
Like an invoice having an Orders property. Both Order and Invoice have their own life cycle. One is about goods and the other is about payment, which essentially makes them independent but it is important to know what goods are being payed for. Containment I am adding this because it belongs in the series and will make aggregation more meaningful. I do not hear the term being used in a SE context a lot anymore but I think it is still useful.
Containment implies encapsulation but is strictly about object instances private to the containing class.
The functionality of the contained objects is selectively exposed through public interfaces. The containing class controls the life cycle of the controlled objects.
You use this when you need some features of an existing class to make the containing class functional. As a metaphor, think of the contained object as a back office worker. Clients never meet these people yet they are needed to provide the service. Aggregation This is a lot like containment except for the life cycle control and visibility of the aggregated objects. The aggregated objects are already available in a different context and are managed by a different entity. Class A class represents a collection of objects having same characteristic properties that exhibit common behavior.
It gives the blueprint or description of the objects that can be created from it. Creation of an object as a member of a class is called instantiation.
Thus, object is an instance of a class. Generally, different objects of a class have some difference in the values of the attributes.
Association (object-oriented programming)
Attributes are often referred as class data. A set of operations that portray the behavior of the objects of the class. Operations are also referred as functions or methods. Example Let us consider a simple class, Circle, that represents the geometrical figure circle in a two—dimensional space.
Encapsulation and Data Hiding Encapsulation Encapsulation is the process of binding both attributes and methods together within a class. Through encapsulation, the internal details of a class can be hidden from outside. It permits the elements of the class to be accessed from outside only through the interface provided by the class.
Association (object-oriented programming) - Wikipedia
Data Hiding Typically, a class is designed such that its data attributes can be accessed only by its class methods and insulated from direct outside access.
It should instead be accessed through the methods setValues and getValues. Message Passing Any application requires a number of objects interacting in a harmonious manner. Objects in a system may communicate with each other using message passing. Suppose a system has two objects: The object obj1 sends a message to object obj2, if obj1 wants obj2 to execute one of its methods.
OOAD Object Model
Message passing enables all interactions between objects. Message passing essentially involves invoking class methods. Objects in different processes can be involved in message passing. Inheritance Inheritance is the mechanism that permits new classes to be created out of existing classes by extending and refining its capabilities. The subclass can inherit or derive the attributes and methods of the super-class es provided that the super-class allows so.
Besides, the subclass may add its own attributes and methods and may modify any of the super-class methods. Humans, cats, dogs, and cows all have the distinct characteristics of mammals. In addition, each has its own particular characteristics.
The following figure depicts the examples of different types of inheritance. Polymorphism Polymorphism is originally a Greek word that means the ability to take multiple forms. In object-oriented paradigm, polymorphism implies using operations in different ways, depending upon the instance they are operating upon.
Polymorphism allows objects with different internal structures to have a common external interface.
- Lecture Notes on Object-Oriented Programming
Polymorphism is particularly effective while implementing inheritance. Example Let us consider two classes, Circle and Square, each with a method findArea. Though the name and purpose of the methods in the classes are same, the internal implementation, i.
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.