📘 문제 35. 클래스 A와 B 사이의 스테레오타입 표현 적절성 판단
📌 보기 및 코드 분석
가. <<create>>
public class A {
public B makeB() {
return new B();
}
}
- ✅ A가 B 객체를 생성하므로
<<create>>
스테레오타입에 적절하다.
나. <<local>>
public class A {
B b = new B();
public void f() {
// use b
}
}
- ❌
<<local>>
은 메서드 안에서 지역 변수로 선언되어야 하지만,
- 여기서는 클래스 필드로 선언되어 있으므로 부적절하다.
- 따라서 문제의 정답은 ② 나이다.
다. <<parameter>>
public class A {
public void f(B b) {
// use b
}
}
- ✅ B 객체를 메서드의 매개변수로 받아서 사용하므로
<<parameter>>
에 적절하다.
라. <<delegate>>
public class A {
private B itsB;
public void f() {
itsB.f();
}
}
- ✅ A가 B에게 작업을 위임(delegate)하고 있으므로
<<delegate>>
에 적절하다.
✅ 최종 정답: ② 나
📘 UML Association Stereotype 종류 정리
📌 주요 스테레오타입 목록
<<create>>
- 객체를 생성하는 책임을 가진 관계
- 예시: A 클래스가 B 객체를
new B()
로 생성
<<use>>
- 기능을 수행하기 위해 다른 객체를 사용하는 관계
- 예시: A가 B의 메서드를 호출하여 기능을 사용 (
b.f()
)
<<local>>
- 메서드 내부에서만 객체를 지역변수로 사용하는 관계
- 예시: 메서드 안에
B b = new B();
로 선언
<<parameter>>
- 객체를 메서드의 매개변수로 전달받아 사용하는 관계
- 예시:
void f(B b)
형태로 B 객체를 전달받아 사용
<<delegate>>
- 다른 객체에게 작업을 위임하는 관계
- 예시: A 클래스가 B의 메서드를 호출하여 기능을 위임 (
itsB.f()
)
<<instantiate>>
- 객체를 인스턴스화하는 관계
<<create>>
와 유사하지만 더 일반적인 의미
<<derive>>
- 한 객체의 값이 다른 객체로부터 계산되거나 유도되는 관계
- 예시: A의 속성 값이 B의 데이터를 기반으로 계산됨
<<friend>>
- 비공식적으로 접근을 허용하는 관계 (주로 C++의
friend
개념)
- Java에서는 거의 사용되지 않음
<<include>>
- 유스케이스 다이어그램에서 하나의 유스케이스가 다른 유스케이스를 포함할 때 사용
- 예시: "도서대출" 유스케이스가 "도서검색" 유스케이스를 포함 (
<<include>>
)
<<extend>>
- 유스케이스 다이어그램에서 기본 유스케이스에 조건부로 확장되는 경우 사용
- 예시: "회원가입" 유스케이스가 "추가 정보 입력" 유스케이스로 확장 (
<<extend>>
)
📌 요약
스테레오타입 |
의미 |
예시 |
<<create>> |
객체 생성 |
new B() 생성 |
<<use>> |
기능 사용 |
b.f() 호출 |
<<local>> |
지역 변수로 사용 |
메서드 내 B b = new B(); |
<<parameter>> |
파라미터로 사용 |
void f(B b) |
<<delegate>> |
작업 위임 |
itsB.f() 호출 |
<<instantiate>> |
객체 인스턴스화 |
일반적인 생성 행위 |
<<derive>> |
값 계산/유도 |
다른 객체 값 기반 계산 |
<<friend>> |
비공식 접근 허용 |
C++의 friend 개념 |
<<include>> |
유스케이스 포함 |
"도서대출" → "도서검색" |
<<extend>> |
유스케이스 확장 |
"회원가입" → "추가 정보 입력" |