IT/솔루션) Power Java

Power JAVA 10장 ) 인터페이스와 다형성 - Programming_6

돔찌 2019. 5. 12. 18:00

<2016. 10. 11. 12:33>

 

Power JAVA 10장 ) 인터페이스와 다형성 - Programming_6

 

==================Book.java=====================
/*
 * 책을 대여해주는 업체를 위한 Book이라는 클래스를 작성한다.
 * Book은 관리번호(number), 제목(title), 저자(author)를 필드로 가진다.
 * Book 클래스는 각 필드에 대한 접근자와 설정자를 가진다.
 * Object 클래스의 equals() 메소드를 재정의하여서 만약 관리번호가 동일하면 동일한 책으로 간주한다.
 * 다음으로 Book으로부터 상속을 받는 Novel, Poet, ScienceFiction 클래스를 작성한다.
 * 이들 클래스들은 연체된 날짜에 따라서 연체료를 계산하는 getLateFees() 메소드를 재정의한다.
 * getLateFees() 메소드는 연체 일수를 매개변수로 받는다.
 * Novel의 경우에는 300원/일이고, Poet는 200원/일, ScienceFiction는 600원/일이다.
 * main 메소드에서 작성된 클래스를 테스트하라.
 */
package Programming_6;
//책을 대여해주는 업체를 위한 Book이라는 클래스를 작성한다.
public class Book {
	//Book은 관리번호(number), 제목(title), 저자(author)를 필드로 가진다.
	private int number;
	private String title;
	private String author;
	//Book 클래스는 각 필드에 대한 접근자와 설정자를 가진다.
	public int getNumber() {
		return number;
	}
	public void setNumber(int number) {
		this.number = number;
	}
	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;
	}
	//Object 클래스의 equals() 메소드를 재정의하여서 만약 관리번호가 동일하면 동일한 책으로 간주한다.
	public void equals(Book somebook ) {
		if(this.number == somebook.number)
		   System.out.println("같은 책입니다."); else
		   System.out.println("다른 책입니다.");
	}
}
//다음으로 Book으로부터 상속을 받는 Novel, Poet, ScienceFiction 클래스를 작성한다.
//이들 클래스들은 연체된 날짜에 따라서 연체료를 계산하는 getLateFees() 메소드를 재정의한다.
//getLateFees() 메소드는 연체 일수를 매개변수로 받는다.
//Novel의 경우에는 300원/일이고, Poet는 200원/일, ScienceFiction는 600원/일이다.
class Novel extends Book {
	public int getLateFees(int lateday) {
		return 300*lateday;
	}
	public String toString() {
		return getNumber()+"  /  "+getTitle()+"  /  "+getAuthor();
	}
}
class Poet extends Book {
	public int getLateFees(int lateday) {
		return 200*lateday;
	}
	public String toString() {
		return getNumber()+"  /  "+getTitle()+"  /  "+getAuthor();
	}
}
class ScienceFiction extends Book {
	public int getLateFees(int lateday) {
		return 600*lateday;
	}
	public String toString() {
		return getNumber()+"  /  "+getTitle()+"  /  "+getAuthor();
	}
}
==============BookTest.java======================
package Programming_6;
public class BookTest {
	public static void main(String[] args) {
		Novel mybook1 = new Novel();
		Poet mybook2 = new Poet();
		ScienceFiction mybook3 = new ScienceFiction();
		mybook1.setNumber(1000);
		mybook1.setTitle("어린왕자");
		mybook1.setAuthor("작가1");
		mybook2.setNumber(1000);
		;
		mybook2.setTitle("PowerJava");
		mybook2.setAuthor("원순철");
		System.out.println(mybook1+"\n"+mybook2);
		System.out.print("위 두책은 ");
		mybook1.equals(mybook2);
		System.out.println("==============================================");
		System.out.println("5일이 늦은 소설책의 연체료는 "+mybook1.getLateFees(5)+"원 입니다.");
		System.out.println("5일이 늦은 시집의 연체료는 "+mybook2.getLateFees(5)+"원 입니다.");
		System.out.println("5일이 늦은 공상과학소설의 연체료는 "+mybook3.getLateFees(5)+"원 입니다.");
	}
}