Software Development
Quick Summary : Object Associations
Composition
final class Company{ private final Employee Employee; { Company(EmpDetails details) { engine = new Employee(details); } void assign() { emp.work(); } }
Aggregation
final class Company{ private Employee engine; void addEmployee(Employee emp) { this.emp = emp; } void assign() { if (emp != null) emp.work(); } }
Dependency
final class Company{ void assign(Employee emp) { if (emp != null) emp.work(); } }
Abstraction
public interface Employee{ public void work(); public void off(); public void quit(); }
Realisation
public abstract class Engineer implements Employee { public void work(); public void off(); public void quit(); }
Generalization
public class SWEngineer extends Engineer { public void work() { System.out.println('SW Engineer working'); } public void off() { System.out.println('SW Engineer is off today'); } public void quit() { System.out.println('SW Engineer is quitting'); } }
Relationships
Association | Defines a relationship between classes. Compositon and Aggregation are types of associations |
Composition | the Employee is encapsulated within the Company . There is no way for the outside world to get a reference to the Employee. The Employee is created and destroyed with the company |
Aggregation | The Company also performs its functions through an Employee, but the Employee is not always an internal part of the Company . Employees can be exchanged, or even completely removed. As the employee is injected, the Employee reference can live outside the Company. |
Dependency | The company does not hold the employee reference. It receives an employee reference only to the scope an operation. Company is dependent on the Employee object to perform an operation |
Abstraction | Defines the basic operations the implementer should adher to. Employee interface lists the general behavior of an employee |
Realization | A class implements the behavior defined by the other other class or interface |
Generalization | A class which is a special form of a parent class |
UML Relationship Pointers
Resources
- http://leninkumarkoppoju.blogspot.in/2012/10/uml-relations-association-aggregation.html
- http://en.wikipedia.org/wiki/Class_diagram
Reference: Quick Summary : Object Associations from our JCG partner Srividhya Umashanker at the Thoughts of a Techie blog.
WTF?