[완료]UML 에서 association과 dependency에 대해서

thslrtoo의 이미지

최근 UML을 공부하고 있습니다.
그런게 객체간의 관계에 대해서 궁금한게 생겼는요.

연관(association)과 의존(dependency) 관계에 대해서 이해는 했습니다.
참조하는 클래스의 레퍼런스를 계속 유지하고 있을 경우에는 연관 관계이고, 아니면 의존 관계라고 알고있습니다.
예를 들어 A, B 라는 클래스가 있고 A가 B에 대해 관계를 맺고 있을때 (A -> B)

--- 연관 ---

class A
{
    private B b;
    public A()
    {
        this.b = new B();
        b.print();
    }
}

--- 의존 ---

class A
{
    public void func(B b)
    {
         b.print();
    }
}

소스로 나타내면 이렇게 됩니다.
그런데 제가 궁금한것은 의존 관계일때 B 클래스가 변경되면 A 클래스도 영향을 받는다고 하는데요.
그러면 연관 관계일때도 그렇지 않나요??

예를들어 위 소스와 같이 B 클래스에는 print() 라는 함수가 있는데
이 함수가 리턴하는 타입이 변경된다던지 이름이 변경될 경우에는 의존 관계나 연관 관계 모두 영향을 받을 수 있지 않나요??

익명 사용자의 이미지

말씀하신것에서 .. Interface 형태에 대한 고민도 좀 포함이 되어야 설명이 될 것 같습니다..

oosap의 이미지

연관관계와 의존관계를 구분짓는 손쉬운 방법을 잘 설명하신 것 같습니다.
제가 찾아본 자료에도 같은 설명이 있네요.

>>그런데 제가 궁금한것은 의존 관계일때 B 클래스가 변경되면 A 클래스도 영향을 받는다고 하는데요.
>>그러면 연관 관계일때도 그렇지 않나요??
>>예를들어 위 소스와 같이 B 클래스에는 print() 라는 함수가 있는데
>>이 함수가 리턴하는 타입이 변경된다던지 이름이 변경될 경우에는 의존 관계나 연관 관계 모두 영향을 받을 수 있지 않나요??

제 주관적인 의견은 아래와 같습니다.

연관관계 --> 의존관계 (Y)
의존관계 --> 연관관계 (N)

연관관계는 의존관계라고 볼 수 있고 그 역은 성립한다고 할 수 없다는 것입니다. 왜냐하면 연관관계는 지속적이고 강한 관계임에 비해 의존관계는 일시적이고 약한 관계라고 하기 때문입니다.
즉 이 둘은 전체와 부분의 관계라고 생각합니다. 의존하지 않으면서 연관을 맺을 수는 없기 때문이기도 하구요..
즉 모든 연관 관계는 의존 관계가 되는 것입니다.

---> 어디까지나 제 개인적인 의견입니다. 틀리다면 누가 반박해주세요.. 저도 배우고 싶습니다.

Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.

익명 사용자의 이미지

의존관계 > 연관관계 로 생각하시면 됩니다.

OMG UML 스펙상 dependency 는 class 다이어그램에서 일반화, 구현, 연관, 등의 선으로 보이는 거의 모든것의 의미상 상위 셋입니다.

예를 들자면 Class 다이어그램에서 모든 연관성(일반적 단어의미)을 dependency 로 표시하고 스테레오타입으로 각 연관성을 표시하셔도
독자(개발자?)가 스테레오타입의 의미만 이해한다면 문제가 없는것 처럼요. 물로 UML 구조 및 정의 상도 그렇습니다.

thslrtoo의 이미지

답변 감사합니다

결론적으로 연관 이라는 관계는 의존 관계도 포함된 의미였네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.