컴포지션을 활용한 Book 클래스
Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 56개 중 51번째.
챌린지
컴포지션을 사용한 Book 클래스 생성
수행 과제:
Book.js파일 상단에서Author클래스를 가져오세요(import).- 다음 내용을 포함하는
Book클래스를 생성하고 내보내기(export) 하세요:- 프라이빗 필드:
#title,#author,#isCheckedOut title과author를 인자로 받는 생성자(Constructor)- 두 개의 게터(getter):
title과 저자의 이름을 반환하는authorInfo
- 프라이빗 필드:
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"