Menu
Coddy logo textTech

컴포지션을 활용한 Book 클래스

Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 56개 중 51번째.

challenge icon

챌린지

컴포지션을 사용한 Book 클래스 생성

수행 과제:

  1. Book.js 파일 상단에서 Author 클래스를 가져오세요(import).
  2. 다음 내용을 포함하는 Book 클래스를 생성하고 내보내기(export) 하세요:
    • 프라이빗 필드: #title, #author, #isCheckedOut
    • titleauthor를 인자로 받는 생성자(Constructor)
    • 두 개의 게터(getter): title과 저자의 이름을 반환하는 authorInfo
  3. main.js에서 Book 클래스를 가져오는 import 구문을 추가하세요.

여기에서 컴포지션이 적용되는 방식:

컴포지션은 "has-a" 관계를 의미합니다. Book 클래스에서:

  • Book은 Author를 가지고 있습니다 (HAS-AN) ("is-an" 관계가 아님)
  • Book은 구성 요소 중 하나로 Author 인스턴스를 포함합니다.
  • Author는 독립적으로 존재하며 여러 Book에서 사용될 수 있습니다.
  • 이것이 컴포지션입니다: 더 단순한 객체(Author)로부터 복잡한 객체(Book)를 구축하는 것입니다.

직접 해보기

import { Author } from './Author.js';

// TODO: Book 클래스를 가져오세요

// 테스트
const author = new Author('J.K. Rowling');
const book = new Book('Harry Potter', author);

console.log('Book title:', book.title); // 예상 출력: "Book title: Harry Potter"
console.log('Author:', book.authorInfo); // 예상 출력: "Author: J.K. Rowling"

객체 지향 프로그래밍의 모든 레슨