//-------------------------------------------------------------------
// Program P2 Q1
// 
// This program simulates a small database of book reviews. I assume
// that there only two types of review possible.  
//
// Author : Wei Tsang Ooi
// Date   : 11 July 1999
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// class Book
// 
// This class represents a book in our book review database.  It 
// contains the title of the bok, the year of publication, and 
// reviewer notes.
//-------------------------------------------------------------------

class Book {

	private String title;           // title of the book
	private int year;               // year of publication
	private String notes;           // reviewer notes about this book.
	private String summary;         // summary of this book.

	//---------------------------------------------------------------
	// constructor
	// 
	// input : bookTitle - title of this book.
	//         pubYear - the year this book is published.
	//         summaryLine - the summary of this book.
	//---------------------------------------------------------------

	public Book(String bookTitle, int pubYear, String summaryLine)
	{
		title = bookTitle;
		year = pubYear;
		notes = "No review available";
		summary = summaryLine;
	}

	//---------------------------------------------------------------
	// showReview
	// 
	// print out an error message since reviews are available for
	// specific type of books only.
	//---------------------------------------------------------------

	public void showReview()
	{
		System.out.println("ERROR : No review for this book.");
	}


	//---------------------------------------------------------------
	// toString
	// 
	// print the title, year and summary of this book.
	//---------------------------------------------------------------
		
	public String toString()
	{
		return "TITLE : " + title + "\nYEAR : " + year + "\n" +
			"SUMMARY : " + summary;
	}


	//---------------------------------------------------------------
	// static describe
	// 
	// input  : a Book object
	// print the title, year, summary and review of this book.
	//---------------------------------------------------------------
		
	public static void describe(Book book)
	{
		System.out.println(book.toString());
		book.showReview();
		System.out.println("");
	}

	//---------------------------------------------------------------
	// describe
	// 
	// alternate implementation of describe
	//---------------------------------------------------------------

	public void describe()
	{
		System.out.println(toString());
		showReview();
		System.out.println("");
	}
}


//------------------------------------------------------------------- // class Literary // // This class represents a book in with good review. //------------------------------------------------------------------- class Literary extends Book { //------------------------------------------------------------------- // constructor // // Simply call the Book's constructor //------------------------------------------------------------------- public Literary(String name, int year, String summary) { super(name, year, summary); } //------------------------------------------------------------------- // showReview // // Print out a good review. //------------------------------------------------------------------- public void showReview () { System.out.println("REVIEW : Fascinating. Two thumbs up !"); } };
//------------------------------------------------------------------- // class Trashy // // This class represents a book in with bad review. //------------------------------------------------------------------- class Trashy extends Book { //------------------------------------------------------------------- // constructor // // Simply call the Book's constructor //------------------------------------------------------------------- public Trashy(String name, int year, String summary) { super(name, year, summary); } //------------------------------------------------------------------- // showReview // // Print out a bad review. //------------------------------------------------------------------- public void showReview () { System.out.println("REVIEW : This is a bad bad book."); } };
//------------------------------------------------------------------- // class BookReviews // // This simple class demostrates the use of the class Literary and // Trashy. //------------------------------------------------------------------- class BookReviews { //------------------------------------------------------------------- // main // // This method creates three books, and print out their descriptions. //------------------------------------------------------------------- public static void main(String argv[]) { // Create an object of class Book. This will create // a book that does not have any review associated with it. Book behave = new Book( "Oh ! Behave.", 1991, "How to make your children behave at dinner table."); // Create a lietrary book and a trashy book. Literary hannibal = new Literary( "Hannibal", 1999, "Tells the story about the man who destroy Rome."); Trashy java = new Trashy( "Java : I Love It", 1939, "A traveller's diary about the exotic Java island in " + "South East Asia."); // Now print out their descriptions: title, year, summary // and reviews if available. Book.describe(behave); Book.describe(hannibal); Book.describe(java); } }