GnuDeveloper.com

Basic concept and Principles

UML Notation:
Class Diagram notations, relations like Generalization, association, aggregation, composition.

Basic principles SOLID
SOLID is Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion.

Aggregation= Residing address is loosely coupled hence child is independent from parent can vary at any time. In spring framework the dependency injection is same as aggregation only.

Composition= tightly coupled with parent, lifetime is same for both parent like student class and child permanent address member

 class Address {
	 private final String place;    
 
	 Address(String str){
	  place = str;	 
	 }
	public String getPlace() {
		return place;
	}	     
 } 
class Student {
	private final Address permanentAdr; 
	private Address residingAdr; 
 
	Student(String str){
		this.permanentAdr = new Address(str); 
	}
	public void setResidingAdr(Address residingAdr) {
		this.residingAdr = residingAdr;
	}
 
	public String getPermanentAdr() {
		return permanentAdr.getPlace();
	}	
	public String getResidingAdr() {
		return residingAdr.getPlace();  
	} 	
 
}
 
public class AggComposition {	  
 
	public static void main(String[] args) {
 
		  Student   student = new Student("India");
 
		  Address  residingAdr1 = new Address("India");
		  student.setResidingAdr(residingAdr1);
		  System.out.println(student.getPermanentAdr()+" "+student.getResidingAdr());
 
		  Address  residingAdr2 = new Address("USA");
		  student.setResidingAdr(residingAdr2);
		  System.out.println(student.getPermanentAdr()+ " "+student.getResidingAdr());
	} 
}