본문 바로가기

Java/본격 Java 퀴즈 기초

[Java] 책 정보 출력하기 (클래스 배열 이용)

책 정보를 출력하기 위해 저자 정보과 책의 상세정보가 필요하다.

그래서 저자 정보 클래스를 만들어서 상세정보 클래스에서 포함(Composition)해서 사용해 볼 예정이다.

.

.

package book;

public class Author {
	private String name, email;
	private char gender;
	
	public Author() {}
	public Author(String name, String email, char gender) {
		this.name = name;
		this.email = email;
		this.gender = gender;
	}
	
	public String getEmail() { return email; }
	public void setEmail(String email) { this.email = email;}	
	public String getName() { return name; }
	public char getGender() { return gender; }
	
	@Override
	public String toString() {
		return "Author [name=" + name + ", email=" + email + ", gender=" + gender + "]";
	}
}

.

.

먼저 저자 정보 클래스를 만든다.

.

.

package book;

public class TestAuthor {

	public static void main(String[] args) {
		Author author = new Author("Bret Spell", "Bspell@nowhere.com", 'm');
		System.out.println(author);
		author.setEmail("jungbo@nowhere.com");
		System.out.println("name is : " + author.getName());
		System.out.println("email is : " + author.getEmail());
		System.out.println("gender is : " + author.getGender());
	}

}

.

.

그리고 클래스가 잘 만들어졌는지 테스트 해본다.

.

.

.

.

그리고 책 정보 클래스를 만든다

.

.

package book;

import java.util.Arrays;

public class Book {
	private String name;
	private Author[] author;
	private int price, qty = 0;
	public Book(String name, Author[] author, int price) {
		super();
		this.name = name;
		this.author = author;
		this.price = price;
	}
	public Book(String name, Author[] author, int price, int qty) {
		super();
		this.name = name;
		this.author = author;
		this.price = price;
		this.qty = qty;
	}
	public String getName() { return name; }
	public Author[] getAuthors() { return author; }
	public int getPrice() { return price; }
	public void setPrice(int price) { this.price = price; }
	public int getQty() { return qty; }
	public void setQty(int qty) { this.qty = qty; }
	// public String[] getAuthorName() {return author.getName();}
	// public String[] getAuthorEmail() {return author.getEmail();}
	// public char[] getAuthorGender() {return author.getGender();}
	
	@Override
	public String toString() {
		return "Book [name=" + name + ", author=" + Arrays.toString(author) + ", price=" + price + ", qty=" + qty + "]";
	}
}

.

.

저자가 여러명일수 있기 때문에 작가 클래스를 배열 형태로 만든다.

그리고 생성자를 2개 만들어서 수량이 초기화 되어있기때문에 수량이 없는 생성자까지 생성한다.

.

.

package book;

public class TestBook {

	public static void main(String[] args) {
		Author[] authors = new Author[2];
		authors[0] = new Author("Bret Spell", "Bspell@nowhere.com", 'm');
		authors[1] = new Author("Paul Ahn", "pual@somewhere.com", 'm');
		// System.out.println(author);
		
		Book dummyBook = new Book("Pro JAVA 8 Programming", authors, 30000, 99);
		System.out.println(dummyBook);
		
		dummyBook.setPrice(35000);
		dummyBook.setQty(28);
		
		Book javaDummy = new Book("Java for Dummy", authors, 30000, 99);
		
		System.out.println(javaDummy);
	}

}

.

.

저자 2명을 입력받아 출력하는 코드를 작성한다.

.

.

.

.

길지만 이런 출력이 나오게 된다.

728x90
반응형