0Pricing
Java Academy · 강의

객체 조합

작은 객체를 결합해 더 큰 객체를 만듭니다. Engine을 가진 Car처럼 has-a 관계를 조합으로 모델링합니다.

객체 조합은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

정의

구성은 자신이 소유한 작은 객체들로 더 큰 객체를 만드는 것을 의미합니다. 이는 포함 관계입니다. 예를 들어 Car는 Engine을 가집니다. 이렇게 하면 클래스를 작고 집중적으로 유지할 수 있고, 큰 객체가 각 부분에 작업을 위임할 수 있습니다.

장점

구성을 사용하면 재사용성이 높아집니다. 전체를 바꾸지 않고도 한 부분을 교체할 수 있습니다. 각 부분을 따로 테스트할 수 있으므로 테스트 가능성도 향상됩니다. 먼저 한 클래스가 fields를 통해 다른 클래스에 의존하도록 간단하게 시작하세요.

구성과 상속 비교

상속은 ~이다 관계입니다. 예를 들어 정사각형은 도형입니다. 구성은 포함 관계입니다. 예를 들어 Car는 Engine을 가집니다. 먼저 구성을 고려하고, 진정한 ~이다 관계가 자연스럽게 성립할 때만 상속하세요.

소유권 및 생명 주기

객체가 자신의 부분을 소유하면 그 부분을 만들고 사용하는 책임도 집니다. 부분 객체는 대개 혼자 존재하지 않고 전체 객체가 존재하기 때문에 존재합니다. 이 개념은 책임을 명확하게 유지하는 데 도움이 됩니다.

설계 단계

전체 객체(Car)와 부분 객체(Engine)를 선택합니다. 각 부분이 무엇을 알고 무엇을 하는지 나열합니다. 그런 다음 부분 객체를 전체 객체 내부의 fields로 배치하고, 그 부분을 사용해 작업을 수행하는 작은 메서드를 작성합니다.

코드: 포함 관계 예시

코드에서 Car는 Engine을 소유하고 Engine의 메서드를 호출합니다. 부분 객체를 먼저 만든 뒤 전달하면 코드가 간단하고 유연해집니다.

public class Main {
  // Very small classes to show composition (has-a)
  static class Engine {
    int horsepower;
    Engine(int hp) { horsepower = hp; }
    String info() { return horsepower + " HP engine"; }
  }

  static class Car {
    String model;
    Engine engine; // Car has an Engine (composition)
    Car(String m, Engine e) {
      model = m;
      engine = e; // store the part
    }
    void printSpecs() {
      // Use the part to build a message
      System.out.println(model + " with " + engine.info());
    }
  }

  public static void main(String[] args) {
    // Create part first
    Engine e = new Engine(90);
    // Assemble whole with the part
    Car c = new Car("CityCar", e);
    // Use the whole, which delegates to its part
    c.printSpecs();
  }
}

구성 확인

빠른 확인: 다음 중 구성을 가장 잘 설명하는 문장은 무엇인가요?

복습

복습: 구성은 포함 관계를 모델링합니다. 작은 부분에서 시작해 명확한 역할을 부여하고, 전체 객체가 간단한 메서드 호출로 그 부분을 사용하게 하세요.

자주 묻는 질문

“객체 조합” 강의는 무료인가요?

네 — “객체 조합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“객체 조합”에서 뭘 배우나요?

작은 객체를 결합해 더 큰 객체를 만듭니다. Engine을 가진 Car처럼 has-a 관계를 조합으로 모델링합니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.

“객체 조합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. this 및 toString/equals/hashCode
  2. 객체 조합
  3. 도메인 모델링(UML→코드)
← Java Academy(으)로 돌아가기