티스토리 뷰

반응형

클래스 다이어그램

 

클래스 다이어그램은 시스템의 정적인 상태인 '논리적인 구조'를 표현합니다.

클래스 다이어그램의 주목적은 클래스간의 관계를 한눈에 파악하는데 있습니다.

 

클래스의 표현

 

  Class Name

Attribute1

Attribute2

operation1(인자타입):반환타입

operation2(인자 타입):반환타입

 

일반적인 클래스는 사각형으로 표시되고 맨 상단은 class의 이름에 해당됩니다.

중단은 클래스가 포함하고 있는 멤버 변수들이오고 접근 제한자 public,private,protection에 대해서 각각 +,-,# 으로 표현이 됩니다. 하단에는 클래스가 포함하고 있는 메서드들이 표현이 됩니다.

 

 

원본 소스입니다. 

Person 클래스를 클래스 다이어그램으로 표현합니다. 

 

인터페이스나 추상 클래스 경우에는 클래스 이름 위에 <<Interface>>로 표시하고 추상 클래스의 경우네는 클레스 이름 아래 {Abstract}를 적거나 클래스 이름에 효과를 주어 표시를 합니다.

 

 

연관관계

한 객체가 다른 객체와 연결되어 있음을 나타낼 때 그 두 객체를 연관관계라고 부르며 클래스들 사이에 선을 그어서 표현합니다. 두 클래스간의 연관관계가 있다는 것은 한 클래스의 객체가 다른 클래스의 객체를 사용하는 것을 의미합니다.

 

1
2
3
4
5
6
public class A {
    
    B b = new B();
}
 
 
1
2
3
4
5
6
7
8
public class B
{    
    public void show()
    {
        System.out.println("B입니다");
    }
}
 

 클래스 B를 사용하는 클래스

클래스 A에 의해 사용되어지는 클래스 


 

클래스 A는 클래스 B의 객체를 생성합니다. 즉 클래스 A와 B는 연관관계가 있으며, 클래스 A의 입장에서는 클래스 B의 존재를 알고 있고 반면에 클래스 B의 입장에서는 클래스 A의 입장을 알지 못합니다. 이를 단방향 연관관계라고 부르며, 두 개의 클래스가 서로에 대해서 알고 있는 연관관계를 양방향 연관관계라고 부릅니다. 이때는 화살표없이 선으로만 표현이 됩니다.

 

의존관계

 

한 클래스의 변화가 다른 클래스에 영향을 미치는 관계를 의미합니다. 한 클래스가 변경이 되면 이것을 사용하는 다른 클래스에도 영향을 미치는 관계를 의미하는데 그 역도 반드시 성립하는 것은 아닙니다.

 

일반적으로 한 클래스의 메소드가 다른 클래스의 객체를 인자로 받아 그 메서드를 사용하는 경우, 한 클래스의 메소드 내부에서 다른 클래스의 객체를 생성하여 그 메소드를 사용하는 경우, 한 클래스의 메소드가 다른 클래스의 객체를 반환하는 경우가 있습니다.

 

 


상속관계

 

클래스 간의 상속관계를 나타냅니다. 하위 클래스에서 상위 클래스 방향으로 선으로 이루어진 화살표로 관계를 표시합니다.

 

1
2
3
4
5
6
7
public class B extends A
{    
    public void show()
    {
        System.out.println("B 오버라이딩");
    }
}
1
2
3
4
5
6
7
8
public class C extends A
{
    public void show()
    {
        System.out.println("C 오버라이딩");
    }
}
 

클래스 A를 상속받는 B클래스 

클래스 A를 상속받는 클래스 B 


 

 

 

 

인터페이스

 

인터페이스를 구현하는 클래스들을 표현합니다. 화살표를 이용하여 표시하는데 상속과는 구분되는 점은 실선이 아니라 점선으로 표현이 된다는 것입니다.

 

1
2
3
4
5
6
7
public class B implements A
{    
    public void show()
    {
        System.out.println("B 오버라이딩");
    }
}
1
2
3
4
5
6
7
8
public class C implements A
{
    public void show()
    {
        System.out.println("C 오버라이딩");
    }
}
 

 

 


 

 

집약관계

 

한 클래스가 다른 클래스를 포함하는 관계를 말하고 '전체'에 해당하는 클래스를 빈 마음로 화살표로 가리켜서 표시합니다. 집약관계에서는 '전체'가 메모리에서 사라진다고 해도 부분 객체는 사라지지 않습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
public class A {
    
    private B b;
    private C c;
    
    public A(B b,C c)
    {
        this.b = b;
        this.c = c;
    }
}
 

 

 

 

합성관계

 

한 클래스가 다른 클래스를 포함하는 관계이며, '전체'와 '부분'의 관계입니다. 전체에 해당하는 클래스를 마름모 화살표로 가르키며 집약관게와의 차이는 전체 객체가 메모리에서 사라지면 부분 객체도 함께 사라집니다.

 

1
2
3
4
5
6
7
8
9
10
11
public class A {
    
    private B b;
    private C c;
    
    public A()
    {
        this.b = new B();
        this.c = new C();
    }
}


 

집약관계와의 차이는 생성자에서 새롭게 new를 통해서 객체를 생성한다는 것입니다.클래스 다이어그램 표현 방식의 차이는 빈 마름모가 아니라 검은색으로 채워진 마름모로 표현이 됩니다.

 

 

 

 

 

 

 

 

 

반응형