JAVA/실습

27. [ JAVA ] 메소드 오버로딩 예시 1

천재단미 2024. 12. 13. 10:28
728x90
반응형

 

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 객체를 생성하고 상호작용을 테스트하세요.

 

728x90
반응형
home top bottom
}