Dependence ("uses-a")
: 하나의 클래스(A)가 다른 클래스(B)의 메서드를 (A 클래스의 상태 변화를 위해) 필요로 할 때, A class depend on B class.
많은 클래스들이 서로 의존적일 수 있는 상황을 최소화하라. 예를 들어, A 클래스가 B 클래스의 존재를 모른다면 B 클래스 변화에 대해 걱정할 필요가 없는 것이다. ( 오류 발생시 전파되어 다른 오류의 원인이 되는 파급 효과를 최소화해야 한다. )
=> 소프트웨어 공학 용어의 관점으로, 결합도를 최소화해야 하기 때문이다.
Aggregation("has-a")
: has-a 관계는 상속을 사용하지 않습니다. has-a 관계는 일반적인 포함 개념의 관계입니다.
보통 기능, 즉 인터페이스 형태로 사용합니다.
Inheritance("is-a")
: is-a 관계(상속)는 일반적인 개념과 구체적인 개념의 관계입니다. 상속 관계에서 하위 클래스가 상위 클래스에 종속되기 때문에 이질적인 클래스 간에는 상속을 사용하지 않습니다.
harry is an Employee object
public static final int nextId = 1;
public static int getNextId() {
return nextId;
}
static 으로 만들어진 상수 (ex. public static final int nextId = 1;)에 대해 harry라는 Employee 객체를 사용한 값(harry.getNextId())과 Employee.getNextId() 와 동일하므로 static method 사용할 때는 객체가 아닌 클래스 이름을 통해 사용하는 것을 추천합니다.