본문 바로가기
프로그래밍

의존 관계 vs 연관 관계

by bantomak 2024. 4. 22.

의존 관계

의존은 클래스 간의 가장 기본적이고 약한 유형의 관계이다. 한 클래스의 정의를 일부 변경했을 때 다른 클래스가 변경되는 경우 두 클래스 사이에 의존성이 있다고 할 수 있다. 의존성은 일반적으로 코드에서 구상 클래스 이름들을 사용할 때 만들어진다. 당신의 코드를 구상 클래스가 아닌 인터페이스나 추상 클래스에 의존하게 만들면 의존성을 약하게 만들 수 있다.

 

연관 관계

연관은 한 객체가 다른 객체를 사용하거나 이 두 객체가 상호 작용하는 관계이다. 이때 객체는 언제나 상호작용하는 객체에 접근할 수 있다. 반면 단순한 의존관계에서는 객체 사이의 영구적인 연결이 만들어지지 않는다.

 

예제 코드

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 연관 관계

의존관계와 연관관계의 차이점은 관계의 유지 기간에 있다.

 

무슨 말이냐면,

의존 관계는 짧은 시간 동안만 지속되는 관계고,

연관 관계는 오랫동안 지속되는 관계라는 것이다.

 

의존관계는 위와같이 점선으로 표기한다. 관계가 양방향일 경우, 화살표를 생략한다.

 

연관관계는 위와같이 실선으로 표시힌다. 관계가 양방향일 경우 화살표를 생략한다.

정리하자면

의존 관계와 연관 관계는 한 클래스가 다른 클래스의 기능을 사용하는 관계라는 측면에서 동일하나,

그 관계의 유지기간에서 차이가 있다.

 

의존 관계는 두 클래스 간의 관계가 비교적 짧은 시간 동안만 유지되고,

연관 관계는 두 클래스 간의 관계가 오랫동안 유지된다.

댓글