2011년 2월 11일 금요일

객체지향 이야기(전병선) - 4장 혼자서는 살수 없어요! - 클래스 사이의 관계 종속과 연관

1. 종속관계
- 대학교때 이해못했던 UML 화살표하나를 이해했다. ------>(종속)
- 정비공과 자동차의 관계
- 정비공은 자동차의 세부내역이 바뀔때마다 영향을 받지만 자동차는 정비공에 상관없이 수리만 제대로 되면된다.
- 정비공 ----->(종속) 자동차 관계가 형성된다.
!! 일반적으로 메소드의 인수로서 다른 클래스를 사용하는 경우 대부분 종속관계를 이루게 된다.
class Repairman{
//생략..
public void Repair(Car repairCar){
// Car클래스를 사용하기에 Car에 dependent.
}
}
!! 메서드 내부에서만 살아있는 객체를 사용할 경우에도 종속관계가 성립된다.
class OwnerDriver{
private Car myCar
public void Repair(){
//스스로 수리할수 없는 경우 정비사를 고용한다
RepairMan aRepairMan = new RepairMan();
aRepairMan.repair(myCar);
}
}

2. 연관관계
- 연관관계도 명확하게 설명해준다. :)
- 자가 운전자와 자동차의 관계이다.
- 자가 운전자를 알면 그 운전자가 어떤 차를 소유하고 있는지 알수 있다. 역도 성립한다.
!! 자바경우 참조변수를 멤버로 포함할 경우
class Driver{
// 1 대 1관계
private Car myCar;
// 혹은 1대 다 관계
private Vector myCars = new Vector();
}
!! 연관 관계에서 집합(aggregation)과 복합(composition)의 차이
- 복합 경우 좀더 단단한 관계를 가진다. 보통 객체와 주기를 같이 한다고 한다.
- 이말은 생성자에서 객체의 레퍼런스를 만들고 소멸자에서 Free를 시켜준다는 의미일것이다.
- Java경우 소멸자 정의는 필요없다.

댓글 없음:

댓글 쓰기