정보시스템감리사/기출문제_19년_20회

35_클래스다이어그램_스테레오타입

론리나잇 2025. 4. 26. 22:17

📘 문제 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>> 유스케이스 확장 "회원가입" → "추가 정보 입력"