자바 도서 클래스 구현 챌린지

JavaBeginner
지금 연습하기

소개

프로그래밍 세계에서 가장 진보된 디지털 도서관인 자바타운 도서관에 오신 것을 환영합니다! 새로 채용된 소프트웨어 개발자로서 여러분의 첫 번째 임무는 도서관이 보유한 방대한 프로그래밍 서적들을 관리할 디지털 카탈로그 시스템 구축을 돕는 것입니다.

이번 미션은 도서관 시스템 내에서 각 도서를 나타내는 데 사용될 Book 클래스를 완성하는 것입니다. 이 클래스는 각 도서의 중요한 정보를 저장하고, 이 정보와 상호작용할 수 있는 메서드를 제공하게 됩니다.

자바타운 도서관을 디지털 시대로 이끌 준비가 되셨나요? 코딩을 시작해 봅시다!

이 콘텐츠는 챌린지입니다. 가이드가 제공되는 실습 (Guided Lab) 과 달리, 학습 단계를 따라가는 것이 아니라 스스로 과제를 해결해야 합니다. 챌린지는 다소 어려울 수 있습니다. 해결이 어렵다면 Labby 와 상의하거나 모범 답안을 확인하세요. 통계 데이터에 따르면 이 챌린지는 초급 수준이며, 통과율은 94%입니다. 학습자들로부터 99%의 긍정적인 평가를 받았습니다.

Book 클래스 완성하기

이 연습에서는 도서 관리 시스템의 핵심 구성 요소를 만들게 됩니다. 이 과제를 통해 클래스 설계, 메서드 구현, 상태 관리 등 자바의 객체 지향 프로그래밍 개념을 연습할 수 있습니다. 챌린지를 완료하면 실제 현업에서 쓰이는 애플리케이션을 구축하는 귀중한 경험을 얻게 될 것입니다. 가상 도서의 세계로 함께 들어가 볼까요?

과제

  • ~/project 디렉토리에 미리 생성된 Book.java 파일을 엽니다.
  • 코드 내의 TODO 주석을 찾습니다.
  • 요구 사항에 따라 Book 클래스를 완성하기 위해 누락된 코드를 추가합니다.

요구 사항

  • Book.java 파일은 이미 ~/project 디렉토리에 존재해야 합니다.
  • 모든 필드 (title, author, publicationYear, isAvailable) 를 초기화하도록 생성자를 완성하세요.
  • borrowBook() 메서드를 구현하세요:
    • 도서 대출이 가능한 상태라면, isAvailable 을 false 로 설정하고 true 를 반환합니다.
    • 도서 대출이 불가능한 상태라면, false 를 반환합니다.
  • returnBook() 메서드를 구현하세요:
    • isAvailable 을 true 로 설정합니다.
  • getFormattedBookDetails() 메서드를 구현하세요:
    • 도서의 제목, 저자, 출판 연도를 포함하는 문자열을 반환합니다.
    • 형식은 반드시 다음과 같아야 합니다: "Title by Author (Year)"

예시

정상적으로 구현되었다면, main 메서드의 다음 코드는:

Book book = new Book("Java Programming", "John Doe", 2023);
System.out.println(book.getFormattedBookDetails());
System.out.println("Is book available? " + book.isAvailable());
boolean borrowed = book.borrowBook();
System.out.println("Book borrowed successfully? " + borrowed);
System.out.println("Is book available now? " + book.isAvailable());
book.returnBook();
System.out.println("Is book available after return? " + book.isAvailable());

다음과 유사한 결과를 출력해야 합니다:

cd ~/project
javac Book.java
java Book

출력 예시:

Java Programming by John Doe (2023)
Is book available? true
Book borrowed successfully? true
Is book available now? false
Is book available after return? true
✨ 솔루션 확인 및 연습

요약

이 챌린지에서 여러분은 자바 객체 지향 프로그래밍의 핵심 개념을 보여주는 Book 클래스를 직접 만들어 보았습니다:

  1. 캡슐화 (Encapsulation): Book 클래스는 도서와 관련된 데이터 (title, author, publicationYear, isAvailable) 와 행동 (borrowBook, returnBook, getFormattedBookDetails) 을 하나로 묶어 관리합니다.
  2. 생성자 (Constructor): 새로운 Book 객체가 생성될 때 도서의 속성을 초기화하는 생성자를 구현했습니다.
  3. 메서드 (Methods): 도서가 겪을 수 있는 동작 (대출 및 반납) 을 정의하고, 도서 정보를 조회하는 메서드를 작성했습니다.
  4. 상태 관리 (State Management): isAvailable 속성과 borrowBook, returnBook 메서드를 통해 객체가 내부 상태를 어떻게 스스로 관리하는지 확인했습니다.

Book 클래스는 도서 관리 시스템의 기초가 됩니다. 실제 애플리케이션에서는 여러 Book 객체를 관리하는 Library 클래스를 만들거나, 더 정교한 대출 규칙을 추가하여 확장할 수 있습니다.

객체 지향 프로그래밍은 현실 세계의 개념을 코드로 모델링하는 것임을 기억하세요. 자바 프로그래밍 여정을 계속하면서, 데이터와 행동을 모두 가진 객체로 사물을 표현할 기회를 찾아보시기 바랍니다.

계속해서 코드를 연습하고 실험해 보세요. Book 클래스에 제목이나 저자를 수정하는 메서드를 추가하거나, 여러 권의 책을 저장하고 관리할 수 있는 Library 클래스를 만들어 보는 것도 좋습니다. 코드를 더 많이 작성할수록 자바와 객체 지향 프로그래밍 개념이 더욱 익숙해질 것입니다.