도서관 대출 시스템
📋 문제 설명
도서관의 도서 대출 시스템을 구현하는 프로그램을 작성하세요.
이 시스템은 Book과 Member 두 개의 클래스로 구성되며, 두 클래스 간의 협력을 통해 대출과 반납 기능을 구현합니다.
🎯 요구사항
1. Book 클래스 구현
속성 (필드)
String title- 책 제목String author- 저자boolean isAvailable- 대출 가능 여부
메서드
borrow()- 책을 대출하는 메서드 (대출 가능 여부를 false로 변경)returnBook()- 책을 반납하는 메서드 (대출 가능 여부를 true로 변경)
2. Member 클래스 구현
속성 (필드)
String name- 회원 이름Book borrowedBook- 대출한 책 (Book 객체 참조)
메서드
borrowBook(Book book)- 책을 빌리는 메서드returnBook(Book book)- 책을 반납하는 메서드
3. 두 클래스 간 협력
⚠️ 중요: Member가 책을 빌리거나 반납할 때, Book의 상태도 함께 변경되어야 합니다.
💻 코드 구조
Book 클래스
Java
public class Book {
private String title;
private String author;
private boolean isAvailable;
// 생성자, getter, setter 메서드를 만드세요.
public void borrow() {
// 책을 대출 처리
// isAvailable을 false로 변경
// "책이 대출되었습니다" 메시지 출력
}
public void returnBook() {
// 책을 반납 처리
// isAvailable을 true로 변경
// "책이 반납되었습니다" 메시지 출력
}
public void print() {
// 책 정보 출력 (제목, 저자, 대출 가능 여부)
}
}
Member 클래스
Java
public class Member {
private String name;
private Book borrowedBook;
// 생성자, getter, setter 메서드를 만드세요
public void borrowBook(Book book) {
// 1. book이 대출 가능한지 확인 (isAvailable)
// 2. 대출 가능하면 book.borrow() 호출
// 3. borrowedBook에 book을 저장
// 4. "[name]님이 [책 제목]을 대출했습니다" 메시지 출력
}
public void returnBook(Book book) {
// 1. borrowedBook이 null이 아닌지 확인
// 2. book.returnBook() 호출
// 3. borrowedBook을 null로 설정
// 4. "[name]님이 [책 제목]을 반납했습니다" 메시지 출력
}
public void print() {
// 회원 정보 출력 (이름, 대출한 책)
}
}
📝 과제
-
각 클래스에
print()함수를 만드세요. 멤버변수를 화면에 출력하도록 만들면 됩니다. -
Main 클래스를 만들어 Book과 Member 객체를 생성하고 상호작용을 테스트하세요.
Java
public class Main {
public static void main(String[] args) {
// Book 객체 생성
// Member 객체 생성
// 대출 테스트
// 반납 테스트
}
}
💡 학습 포인트
- 객체 간 협력: 한 객체의 메서드가 다른 객체의 메서드를 호출
- 상태 관리: 책의 대출 가능 여부를 적절히 관리
- 참조 변수: Member가 Book 객체를 참조하여 저장