[uml] 연관성과 종속성의 차이점은 무엇입니까?

UML 클래스 다이어그램에서 연관 관계와 종속성 관계의 차이점은 무엇입니까?

내가 아는 바에 따르면 연관성은 의존성보다 더 강한 관계이지만, 그것이 얼마나 더 강한 지 잘 모르겠습니다.

모든 예는 환영 이상입니다. 🙂



답변

의존성과 연관성의 차이점은 무엇입니까? :

일반적으로 연결을 사용하여 클래스의 필드와 같은 것을 나타냅니다. 링크는 항상 고객에게 주문을 요청할 수 있다는 점에서 항상 있습니다. 실제로 필드 일 필요는 없습니다. 더 많은 인터페이스 관점에서 모델링하는 경우 주문의 고객을 반환 할 메서드의 존재를 나타낼 수 있습니다.

UML Distilled의 3 판 (지금은 방금 나왔습니다)에서 인용하자면 “한 요소 (공급자)의 정의를 변경하면 다른 요소 (클라이언트)도 변경 될 수있는 경우 두 요소간에 종속성이 존재합니다”). 이것은 매우 모호하고 일반적인 관계이기 때문에 UML이 다양한 형태의 종속성에 대해 많은 고정 관념을 가지고있는 이유입니다. 코드 용어에서 매개 변수 유형의 이름을 지정하고 임시 변수에 개체를 만드는 것과 같은 것은 종속성을 의미합니다.


답변

협회는 거의 항상 하나의 객체가 필드 / 특성 / 속성 (용어 다릅니다)와 같은 다른 목적을 가지고 있음을 의미한다.

의존성은 일반적으로 (항상은 아니지만)은 객체 메소드 파라미터 인스턴스화 같은 다른 목적을 받아, 또는 다른 객체를 사용하는 것을 의미한다. 종속성은 매우 의해 암시 연관 .


답변

OOP 용어 :

협회 -> A는 갖고-A C의 (a 멤버 변수로) 오브젝트

종속성-> A 참조 B (메서드 매개 변수 또는 반환 유형)

public class A {
    private C c;
    public void myMethod(B b) {
        b.callMethod();
    }
}

도 있습니다 더 자세한 대답은 .


답변

종속성은 String (Java에서 C #은 문자열이 객체이므로)을 매개 변수로 사용하는 메서드를 정의 할 때 클래스가 String 클래스에 종속되는 것과 같습니다.

연결은 클래스에서 문자열을 속성으로 선언 할 때와 같습니다. 그러면 코드가 문자열 클래스와 연결됩니다.

String name = null //: is a association.


답변

종속성 -클래스의 변경은 종속 클래스의 변경에 영향을줍니다. 예-원은 모양 (인터페이스)에 따라 다릅니다. Shape를 변경하면 Circle에도 영향을줍니다. 따라서 Circle은 Shape에 의존합니다.

연관성 -두 개체간에 특정 관계가 있음을 의미합니다.

(일대일, 일대 다, 다다)

협회는 2 가지 유형이 있습니다.

  1. 구성
  2. 집합

    1) 구성 – 두 개체 간의 더 강한 연관성 또는 관계. 다른 클래스 A 내부에 클래스 B 의 개체를 만들고 있습니다.

 public class A {
       B b;
       public void setB(){
         this.b= new B();
        }
     }

A 클래스를 삭제하면 B는 존재하지 않습니다 (B 객체는 A 내부에서만 생성됩니다).

또 다른 예 -Body & Liver .Liver는 Body 외부에 존재할 수 없습니다.

2) 집계 – 두 개체 간의 연결 유형이 약 합니다.

public class A {
             B b;
             public void setB(B b_ref){
                 this.b= b_ref;
                /* object B is passed as an argument of a method */
              }
   }

A 등급을 삭제해도 B는 외부에 존재 (B는 외부에 생성되어 A 등급에 전달됨)

이것의 또 다른 예-Man & Car. 사람은 차를 가지고 있지만 사람과 차는 독립적으로 존재합니다.


답변

여기 : “Association vs. Dependency vs. Aggregation vs. Composition” , uml 클래스 다이어그램 및 코드 스 니펫이있는 훌륭한 vade mecum이 있습니다. 저자는 연관성, 종속성, 집계, 구성 등의 관계 목록을 한곳에서 제공합니다.


답변

종속성은 매우 일반적이며 복잡성을 낮추는 것은 가능한 한 종속성을 줄이는 것입니다.

연관은 강력한 (정적) 종속성입니다. 집계 및 구성은 더욱 강력합니다.