본문 바로가기

JAVA

[Java] Lv_1 도서관 프로젝트

 

요구 사항

  • ⬜ 도서 1권의 정보를 출력할 수 있어야 한다.
  • ⬜ 도서 정보는 제목, 저자, 출판 연도이다.

 


 

 

문제 풀이

Main

더보기
package lv_1;

public class Main {

    public static void main(String[] args) {
        Book book = new Book("어린왕자", "앙투안 드 생텍쥐페리", 1943);
        System.out.println(book);
    }
}
  • 생성자를 통해 책의 정보를 넘겨주면서 Book 객체 생성
  • book 정보를 출력 (객체를 print로 출력해도 값이 정상 출력되는 이유는 아래에서 설명) 

 

 

Book

더보기
package lv_1;

public class Book {
    private String title;
    private String author;
    private int publishYear;

    public Book(String title, String author, int publishYear) {
        this.title = title;
        this.author = author;
        this.publishYear = publishYear;
    }

    @Override
    public String toString() {
        return "제목 : " + title +
                "  |  저자 : " + author+
                "  |  출판 연도 : " + publishYear;
    }
}
  • Object 메서드인 toString()을 오버라이딩하여, 책의 정보를 출력하도록 재정의하였다.
  • 요구사항에는 없지만, 추후에 Getter, Setter 추가를 염두하여 속성 값에 final을 붙이지 않았다.

 

 


 

 

객체의 역할과 책임

Main Book
Book 객체 생성 Book 역할

 

 

 


 

 

실행 흐름

실행 흐름

 

 

 


 

 

GPT 분석

  • 현재 toString()이 직접 출력용 포맷을 담당하는데, 출력 방식이 바뀔 경우 클래스 자체를 수정해야 합니다.
  • 나중에 콘솔 대신 웹 UI, JSON 출력 등으로 바뀔 수 있기 때문에 책의 핵심 데이터는 toString이 아닌 별도의 formatter에서 처리하는 것도 방법입니다.
  • 하지만 Lv1 단계에서는 충분히 acceptable 합니다. (단, 향후 확장을 염두에 두면 좋은 포인트)