Composition
final class Company{ private Employee emp;
public Company(EmpDetails details) { emp= 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
|
Nice, clean article, perfect for begginners. However, there's a typo in the first example. I think you meant:
ReplyDeleteprivate Employee engine;
(and there's an extra } there)
I guess the constructor got deleted while formatting and variable naming was wrong. Thanks for pointing it out. I corrected the example. Thanks
ReplyDelete