1. 예시
도서관 대출 시스템
도서관의 도서 대출 시스템을 구현하는 간단한 프로그램을 작성하세요. 이 시스템은 Book과 Member 두 개의 엔터티 클래스로 구성됩니다.
(1) 요구사항:
Book 클래스 구현:
문제: 도서관 대출 시스템
도서관의 도서 대출 시스템을 구현하는 간단한 프로그램을 작성하세요. 이 시스템은 Book과 Member 두 개의 엔터티 클래스로 구성됩니다.
(2) 요구사항:
Book 클래스 구현:
속성: 제목(title), 저자(author), 대출 가능 여부(isAvailable)
메서드: 대출하기(borrow), 반납하기(returnBook)
(2 -1) Member 클래스 구현:
속성: 이름(name), 대출한 책 (borrowedBook)
메서드: 책 빌리기(borrowBook), 책 반납하기(returnBook)
두 클래스 간 협력:
Member가 책을 빌릴 때, Book의 상태가 변경되어야 합니다.
Member가 책을 반납할 때, Book의 상태가 다시 변경되어야 합니다.
예시 코드 구조:
java
public class Book {
private String title;
private String author;
private boolean isAvailable;
// 생성자, getter, setter 메서드 만드세요.
public void borrow() {
// 구현하세요
}
public void returnBook() {
// 구현하세요
}
}
public class Member {
private String name;
private Book borrowedBook;
// 생성자, getter, setter 메서드 만드세요
public void borrowBook(Book book) {
// 구현
}
public void returnBook(Book book) {
// 구현
}
}
(3) 과제
각 클래스에, print() 함수를 만드세요. 멤버변수를 화면에 출력하도록 만들면 됩니다.
Main 클래스를 만들어 Book과 Member 객체를 생성하고 상호작용을 테스트하세요.
-- 풀이
요구사항
프로젝트 생성
프로젝트명 : BookTest
Src에 패키지생성 : entety
entety 두 개의 클래스 생성 : Book과 Member
import entety.Book; // 호출하기 import entety.Member; // 호출하기 public class BookTest { public static void main(String[] args) { // 홍길동 생성 Member m1 = new Member("홍길동"); // 김나나 생성 Member m2 = new Member("김나나"); // 재밌는책, mike 생성 Book b1 = new Book("재밌는책", "mike", true); // 무서운책, tom 생성 Book b2 = new Book("무서운책", "tom", true); // 홍길동이 재밌는책을 빌린다. m1.print(); m1.BorroweBook(b1); m1.print(); // 김나나가 재밌는책을 빌리려고 했다. m2.borrowBook(b1); // 홍길동이 재밌는책을 반납한다. m1.returnBook(b1); // 홍길동의 상태를 화면에 출력 m1.print(); m2.borrowBook(b1); } } |
(2) 요구사항:
Book 클래스 구현:
속성: 제목(title), 저자(author), 대출 가능 여부(isAvailable)
메서드: 대출하기(borrow), 반납하기(returnBook)
package entety; public class Book { private String title; private String author; private boolean isAvailable; |
생성자 생성
package entety; public class Book { private String title; private String author; private boolean isAvailable; public Book(String title, String author, boolean isAvailable) { this.title = title; this.author = author; this.isAvailable = isAvailable; } |
Gette/ Setter생성
package entety; public class Book { private String title; private String author; private boolean isAvailable; public Book(String title, String author, boolean isAvailable) { this.title = title; this.author = author; this.isAvailable = isAvailable; } public void borrow(){ // 책 빌리는 작업 isAvailable = false; } public void returnBook(){ // 책 반납하는 작업 isAvailable = true; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this. author = author; } public boolean isAvailable() { return isAvailable; } public void setAvailable(boolean available) { isAvailable = available; } } |
(2 -1) Member 클래스 구현:
속성: 이름(name), 대출한 책 (borrowedBook)
메서드: 책 빌리기(borrowBook), 책 반납하기(returnBook)
package entety; public class Member { private String name; private Book borrowedBook; } |
생성자 생성
package entety; public class Member { private String name; private Book borrowedBook; public Member(String name, Book borrowedBook) { this.name = name; this.borrowedBook = borrowedBook; } |
Member name default처리
package entety; public class Member { private String name; private Book borrowedBook; public Member(String name, Book borrowedBook) { this.name = name; this.borrowedBook = borrowedBook; } public Member() { } public Member(String name) { this.name =name; } |
Member클래스의 아래 함수는 public void borrowBook(Book book) { if ( ! book.isAvailable() ){ System.out.println( "책 대출 불가! 다른책을 빌리세요" ); }else { borrowedBook = book; book.borrow(); System.out.println( "대출 완료 되었습니다." ); } } Book클래스의 아래함수와 연동합니다. public void borrow(){ // 책 빌리는 작업 isAvailable = false; } |
Member클래스의 아래 함수는 public void returnBook(Book book){ borrowedBook = null; book.returnBook(); System.out.println( "책 반납이 정상적으로 이루어 졌습니다." ); } public void print(){ System.out.println( name + "님이 빌린 책 : "); if ( borrowedBook == null){ System.out.println( "빌린책이 없습니다." ); }else { System.out.println(borrowedBook.getTitle() + " " + borrowedBook.getAuthor()); } Book클래스의 아래함수와 연동합니다. public void returnBook(){ // 책 반납하는 작업 isAvailable = true; } |
package entety; public class Member { private String name; private Book borrowedBook; public Member(String name, Book borrowedBook) { this.name = name; this.borrowedBook = borrowedBook; } public Member() { } public Member(String name) { this.name =name; } public void borrowBook(Book book) { if ( ! book.isAvailable() ){ System.out.println( "책 대출 불가! 다른책을 빌리세요" ); }else { borrowedBook = book; book.borrow(); System.out.println( "대출 완료 되었습니다." ); } } public void returnBook(Book book){ borrowedBook = null; book.returnBook(); System.out.println( "책 반납이 정상적으로 이루어 졌습니다." ); } public void print(){ System.out.println( name + "님이 빌린 책 : "); if ( borrowedBook == null){ System.out.println( "빌린책이 없습니다." ); }else { System.out.println(borrowedBook.getTitle() + " " + borrowedBook.getAuthor()); } } public String getName() { return name; } public void setName(String name) { this.name = name; } public Book getBorrowedBook() { return borrowedBook; } public void setBorrowedBook(Book borrowedBook) { this.borrowedBook = borrowedBook; } public void BorroweBook(Book b1) { } } |
Member클래스의 아래 함수는 public void BorroweBook(Book b1) { } BookTest클래스의 아래와 연동합니다. m1.BorroweBook(b1); |
(3) 과제
각 클래스에, print() 함수를 만드세요. 멤버변수를 화면에 출력하도록 만들면 됩니다.
Main 클래스를 만들어 Book과 Member 객체를 생성하고 상호작용을 테스트하세요.
'JAVA > 실습' 카테고리의 다른 글
32. [ JAVA ] 상속: 예시 (0) | 2024.12.16 |
---|---|
28. [ JAVA ] 메소드 오버로딩 예시 2 (1) | 2024.12.13 |
23. [ JAVA ] 클래스(Class)와 객체(Instance) : 예시 (0) | 2024.12.12 |