객체 조합
작은 객체를 결합해 더 큰 객체를 만듭니다. 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.