반응형
아무리 아무리 아무리 봐도 정리가 안되는 UML 관계 인터넷에서 찾아봐도 전무 애매한 대답뿐.
인터넷에 있는 것을 종합하여 비교해 봐야겠다.
Composition 와 Aggregation의 차이
Dependency 와 Association의 차이
인터넷에 있는 것을 종합하여 비교해 봐야겠다.
Composition 와 Aggregation의 차이
참고 사이트 : http://blog.naver.com/0223storm?Redirect=Log&logNo=90127575178
Composition
- New 키워드를 통한 합성, 강한결합, 강한 소유, 전체 소멸시 부분 소멸
Aggregation
- new키워드를 사용하지 않는 합성, 메서드의 인자. 이미 new되어 있는 객체를 담아 전달 후 사용. 약한결합, 약한소유, 전체 소멸시 부분이 소멸되지 않음
Composition
- New 키워드를 통한 합성, 강한결합, 강한 소유, 전체 소멸시 부분 소멸
public class Car
{
private Engine engine = new Engine();
public boolean doSomething()
{
engine.start();
}
}
{
private Engine engine = new Engine();
public boolean doSomething()
{
engine.start();
}
}
Aggregation
- new키워드를 사용하지 않는 합성, 메서드의 인자. 이미 new되어 있는 객체를 담아 전달 후 사용. 약한결합, 약한소유, 전체 소멸시 부분이 소멸되지 않음
public class Person
{
public boolean doSomething(Address addr)
{
addr.fine();
}
}
{
public boolean doSomething(Address addr)
{
addr.fine();
}
}
참고 사이트 : http://www.sjava.net/
Composition
- Composition은 association의 하위 분류로, 집합적인 관계를 표시함. 연관관계를 가지는 클래스 객체와 라이프 사이클이 동일한 경우, composition 관계라고 함.
Aggregation
- Aggregation은 association의 하위 분류로, 집합적인 관계를 표시함. 연관관계를 가지는 클래스 객체와 라이프 사이클이 동일하지 않을 경우, aggregation 관계라고 함.
Composition
- Composition은 association의 하위 분류로, 집합적인 관계를 표시함. 연관관계를 가지는 클래스 객체와 라이프 사이클이 동일한 경우, composition 관계라고 함.
public class G
{
private ArrayList<H> array;
public G()
{
array = new ArrayList<H>();
}
}
{
private ArrayList<H> array;
public G()
{
array = new ArrayList<H>();
}
}
Aggregation
- Aggregation은 association의 하위 분류로, 집합적인 관계를 표시함. 연관관계를 가지는 클래스 객체와 라이프 사이클이 동일하지 않을 경우, aggregation 관계라고 함.
public class G
{
private ArrayList<H> array;
public G()
{
}
public void setArray(ArrayList<J> array)
{
this.array = array;
}
}
{
private ArrayList<H> array;
public G()
{
}
public void setArray(ArrayList<J> array)
{
this.array = array;
}
}
Dependency 와 Association의 차이
참고 사이트 : http://geniusduck.tistory.com/28
Dependency(의존관계)
- 클래스가 연관, 상속, 집합 관계로 엮어 있는 것은 아니지만, 한 곳이 변경되면 그것을 사용하는 다른 곳도 같이 변경해 주어야 하는 관계를 표현할 때 사용됨.
Association과 달리 Dependency의 경우 클래스 인스턴스의 레퍼런스를 유지하고 있지 않음. 따라서 레퍼런스를 계속적으로 유지하게 된다면 이는 Association으로 표현해야 함.
Association(연관관계)
- 한 객체가 다른 객체와 연결되어 있음을 나타낼 때 그들을 연관관계로 지칭함.
(양방향 연관 관계, 단방향 연관 관계(Directed Association))
양방향 연관 관계
- 연결된 클래스들이 서로의 존재를 알고 있다는 의미임. A와 B클래스는 서로의 존재를 알고 있으며, 반드시 한개(B) 이상이 A에 속해야 한다는 것을 뜻함.
단방향 연관 관계
- A클래스는 B클래스의 존재를 알고 있지만, B클래스는 A클래스의 존재를 모르고 있음. 이 같은 경우 A클래스만 B클래스에 대한 참조값을 가지고 있음.
Dependency(의존관계)
- 클래스가 연관, 상속, 집합 관계로 엮어 있는 것은 아니지만, 한 곳이 변경되면 그것을 사용하는 다른 곳도 같이 변경해 주어야 하는 관계를 표현할 때 사용됨.
Association과 달리 Dependency의 경우 클래스 인스턴스의 레퍼런스를 유지하고 있지 않음. 따라서 레퍼런스를 계속적으로 유지하게 된다면 이는 Association으로 표현해야 함.
다음과 같은 경우 의존관계로 표현함.
1. 한 클래스의 메소드가 다른 클래스의 객체를 인자로 받아 그 메소드를 사용할때.
2. 한 클래스의 메소드가 또 다른 클래스의 객체를 반환할때.
3. 다른 클래스의 메소드가 또 다른 클래스의 객체를 반환할때. 이때 이 메소드를 호출하여 반환되는 객체의 메소드를 사용함.
1. 한 클래스의 메소드가 다른 클래스의 객체를 인자로 받아 그 메소드를 사용할때.
2. 한 클래스의 메소드가 또 다른 클래스의 객체를 반환할때.
3. 다른 클래스의 메소드가 또 다른 클래스의 객체를 반환할때. 이때 이 메소드를 호출하여 반환되는 객체의 메소드를 사용함.
Association(연관관계)
- 한 객체가 다른 객체와 연결되어 있음을 나타낼 때 그들을 연관관계로 지칭함.
(양방향 연관 관계, 단방향 연관 관계(Directed Association))
양방향 연관 관계
- 연결된 클래스들이 서로의 존재를 알고 있다는 의미임. A와 B클래스는 서로의 존재를 알고 있으며, 반드시 한개(B) 이상이 A에 속해야 한다는 것을 뜻함.
단방향 연관 관계
- A클래스는 B클래스의 존재를 알고 있지만, B클래스는 A클래스의 존재를 모르고 있음. 이 같은 경우 A클래스만 B클래스에 대한 참조값을 가지고 있음.
2013/05/21 추가
반응형