Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DeFacto-Standard IT

의존관계 본문

Design Pattern/References

의존관계

defacto standard 2017. 10. 28. 17:45

의존 관계

일반적으로 한 클래스가 다른 클래스를 사용하는 경우는 다음과 같다.

- 클래스의 속성에서 참조할 때

- 연산의 인자로 사용될 때

- 메서드 내부의 지역 객체로 참조될 때 (결합도가 높다. 사용 빈도가 낮을때만 사용함)

 

한 클래스의 객체를 다른 클래스 객체의 속성에서 참조하는 경우에는 참조하는 객체가 변경되지 않는 한 두 클래스의 객체들이 오랜 기간 동안 협력 관계를 통해 기능을 수행한다.

 

예를 들면 자동차(Car 클래스)를 소유한 사람(Person 클래스)이 자동차를 이용해 출근한다고 할 경우 한 번 출근한 후 다음날 출근할 때도 어제 사용한 자동차를 타고 출근할 것이다. 매번 출근할 때마다 다른 자동차를 사용하는 경우는 거의 없을 것이다.

 

이런 경우 사람과 자동차의 관계는 연관 관계며 Person 클래스의 속성으로 Car 객체를 참조한다.

public class Person {
private Car owns; // 이 속성으로 연관 관계가 설정된다

public void setCar(Car car) {
this.owns = car;
}

public Car getCar() {
return this.owns;
}
}
public class Car {
// private Person person; // 단방향 연관 관계이므로 필요 없다.
...
}


그리고 자동차와 주유기(GasPump 클래스)의 관계는 또 다르다.

자동차에 주유할 때 특정 주유소에 있는 특정 주유기만 고집해 매번 주유할 수는 없을 것이다.

이런 경우라면 주유 서비스를 받을 때마다 이용하는 주유기가 매번 달라지는 것을 의미하며 프로그래밍 시에는 사용되는 주유기를 인자나 지역 객체로 생성해 구현할 것이다.

public class Car {
...

public void fillGas(GasPump p) {
p.getGas(amount);
...
}
}

UML에서는 의존 관계를 점선으로 나타낸다.

 


* 연관 관계 : 오랜 시간 동안 같이할 객체와의 관계 (Person - Car)

  의존 관계 : 짧은 시간 동안 이용하는 관계 (Car - GasPump)

 

 

'Design Pattern > References' 카테고리의 다른 글

추상화, 캡슐화  (0) 2017.10.28
인터페이스, 실체화 관계  (0) 2017.10.28
집합관계  (0) 2017.10.28
일반화관계  (0) 2017.10.28
연관관계  (2) 2017.10.28
Comments