의존 관계
의존은 클래스 간의 가장 기본적이고 약한 유형의 관계이다. 한 클래스의 정의를 일부 변경했을 때 다른 클래스가 변경되는 경우 두 클래스 사이에 의존성이 있다고 할 수 있다. 의존성은 일반적으로 코드에서 구상 클래스 이름들을 사용할 때 만들어진다. 당신의 코드를 구상 클래스가 아닌 인터페이스나 추상 클래스에 의존하게 만들면 의존성을 약하게 만들 수 있다.
연관 관계
연관은 한 객체가 다른 객체를 사용하거나 이 두 객체가 상호 작용하는 관계이다. 이때 객체는 언제나 상호작용하는 객체에 접근할 수 있다. 반면 단순한 의존관계에서는 객체 사이의 영구적인 연결이 만들어지지 않는다.
예제 코드
class Professor is
field Student student
// ...
method teach(Course c) is
// ...
this.student.remember(c.getKnowledge())
field로 선언된 Student는 Professor 클래스와 연관관계이다. (Professor 클래스 어디에서나 Student로 접근이 가능)
teach 매머드의 인자로 전달되는 Course 클래스는 Professor 클래스와 의존관계이다. (teach 매써드 안에서만 Course 객체에 접근이 가능)
의존 관계 vs 연관 관계
의존관계와 연관관계의 차이점은 관계의 유지 기간에 있다.
무슨 말이냐면,
의존 관계는 짧은 시간 동안만 지속되는 관계고,
연관 관계는 오랫동안 지속되는 관계라는 것이다.
정리하자면
의존 관계와 연관 관계는 한 클래스가 다른 클래스의 기능을 사용하는 관계라는 측면에서 동일하나,
그 관계의 유지기간에서 차이가 있다.
의존 관계는 두 클래스 간의 관계가 비교적 짧은 시간 동안만 유지되고,
연관 관계는 두 클래스 간의 관계가 오랫동안 유지된다.
'프로그래밍' 카테고리의 다른 글
단일 장애 지점(SPOF)에 대해서 (1) | 2024.04.29 |
---|---|
깃허브 코파일럿(GitHub Copliot) 무료로 사용해보기 (0) | 2024.04.25 |
중위 표기법을 후위 표기법으로 변환하기 (0) | 2024.04.22 |
이진수 뺄셈을 해보자! (0) | 2024.02.07 |
이진수 덧셈을 해보자! (1) | 2024.02.06 |
댓글