클래스 다이어그램 정리

Glen·2023년 10월 21일
1

배운것

목록 보기
24/37

클래스 다이어그램?

객체 지향 프로그램에서 시스템의 구조를 나타내는 다이어그램.

UML의 일부로 코드로 풀어진 객체간의 관계를 그림으로서 이해하기 쉽게 표현해주는 수단이다.

따라서 개발자 사이에서 원활한 의사소통을 위해 필수적으로 알아야 한다고 생각한다.

클래스 다이어그램의 주요 요소는 두 가지이다.

클래스

사각형으로 표시되며 상단에는 클래스 이름, 중간에는 상태(필드), 하단에는 행위(메서드)를 표시한다.

관계

클래스 사이의 상호 작용을 나타낸다.

관계는 여러 요소가 있다.

Inheritance

"Is-a" 관계일 때 사용한다.

즉, 상속 관계를 표현할 때 사용한다.

표기는 실선에 빈 삼각형 화살표로 한다.

class Parent {
    ...
}

class Child extends Parent {
    ...
}

Realization

구현 관계를 표현할 때 사용한다.

표기는 점선에 빈 삼각형 화살표로 한다.

interface Animal {
    ...
}

class Cat implements Animal {
    ...
}

Dependency

의존 관계라고 하며, 클래스 내의 멤버 변수로 의존하는 것이 아닌, 행위에 의존적인 것에 대한 관계이다.

표기는 점선에 화살표로 한다.

class A {
    ...
}

class B {
    ...
    void someMethod(A a) {
        a.action();
    }
}

Association

연관 관계라고 하며, 클래스 내의 멤버 변수로 참조하고 있을 때 사용한다.

표기는 실선에 화살표로 한다.

class A {
    ...
}

class B {
    A a;
}

만약 연관된 클래스가 N개 또는 여러 클래스에 참조될 수 있다면 다음과 같이 숫자와 * 기호로 표시할 수 있다.

public void someMethod {
    A a = new A();
    
    B b1 = new B();
    b1.setA(a);
    
    B b2 = new B();
    b2.setA(a);
}

class B {
    List<A> as;
}

Aggregation, Composition

연관 관계의 하위 집합이며, 연관의 특정 관계이다.

Aggregation

집합 관계라고 하며, 참조된 클래스가 대상의 생명 주기에 포함되지 않을 때 사용한다.

생성자로 주입된 객체일 때 나타낼 수 있다.

class A {
    B b;

    public A(B b) {
        this.b = b;
    }
}

class B {
    A a;

    public B(A a) {
        this.a = a;
    }
}

Composition

합성 관계라고 하며, 참조된 클래스가 대상의 생명 주기에 종속될 때 사용한다.

생성자로 주입되지 않고, 코드 내에서 클래스가 인스턴스화 될 때 나타낼 수 있다.

class A {
    ...
}

class B {
    A a;

    public B() {
        this.a = new A();
    }
}

profile
꾸준히 성장하고 싶은 사람

0개의 댓글