//---------------------------------------------------------------------------------------------
// CS100 P2: Q1
//
// Class Book is a general class describing properties of all books. It has
// fields author, title, year, and notes; a constructor; and methods toString and
// showReview. Method toString returns a basic description of of the book;
// Method showReview prints an error as books at this level are unreviewed.
// Class Book is the superclass for classes Trashy and Literary.
//
// Classes Trashy and Literary introduce the new variables synopsis and review.
// They also override Class Book's showReview method, invoking the new variables.
//
// Class TestBook demonstrates that the classes work appropriately by instantiating
// one example each of class Book, Trashy, and Literary and using method describe to
// print a description and review for each of the books in turn.
//
// Author : Alan Renaud (ajr5@cornell.edu)
// Date : 15 July 1999
//---------------------------------------------------------------------------------------------
class Book {
protected String author; // author's name
protected String title; // book title
protected String notes; // category, eg., book, trashy, literary
protected int year; // year published
// constructor for class Book
Book (String a, String t, int y, String n)
{
author = a;
title = t;
year = y;
notes = n;
}
//---------------------------------------------------------------------------------------------
// toString
//
// input : none
// return : the author, title, date, and notes for the book
//
// Returns a basic description of the book
//---------------------------------------------------------------------------------------------
public String toString()
{
return author + ", " + title + "\nPublished: " + year + ", " + notes;
}
//---------------------------------------------------------------------------------------------
// showReview
//
// input : none
// return : none
//
// Prints an error message since objects of class Book are not reviewed.
//---------------------------------------------------------------------------------------------
public void showReview()
{
System.err.println("Sorry, but objects of class Book are not reviewed.");
}
}
// -------End class Book
// -------Start class Literary
class Literary extends Book {
private String litSumry; // indicates whether book is good or bad
private String litRev; // reviewer's notes
// constructor for subclass Literary
Literary (String a, String t, int y, String n, String s, String r)
{
super(a, t, y, n);
litSumry = s;
litRev = r;
}
//---------------------------------------------------------------------------------------------
// showReview
//
// input : none
// return : none
//
// Outputs to screen the summary, and the reviewer's notes.
//---------------------------------------------------------------------------------------------
public void showReview()
{
System.out.println(litSumry);
System.out.println(litRev);
}
}
// -------End class Literary
// -------Start class Trashy
class Trashy extends Book {
private String trashSumry; // indicates whether book is good or bad
private String trashRev; // reviewer's notes
// constructor for subclass Trashy
Trashy (String a, String t, int y, String n, String s, String r)
{
super(a, t, y, n);
trashSumry = s;
trashRev = r;
}
//---------------------------------------------------------------------------------------------
// showReview
//
// input : none
// return : none
//
// Outputs to screen the summary, and the reviewer's notes.
//---------------------------------------------------------------------------------------------
public void showReview()
{
System.out.println(trashSumry);
System.out.println(trashRev);
}
}
// -------End class Trashy
// -------Start class TestBook
class TestBook {
//---------------------------------------------------------------------------------------------
// describe
//
// input : object of type Book
// return : none
//
// Prints a description and review of its parameter by calling its toString() and
// showReview() methods.
//---------------------------------------------------------------------------------------------
static void describe (Book item)
{
System.out.println("\n\n" + item.toString());
item.showReview();
}
public static void main (String[] args)
{
TokenReader in = new TokenReader(System.in);
// Create one object each of type Book, Trashy, and Literary
Book loftus = new Book("John Lewis, William Loftus ", "Java Software Solutions", 1997, "Book");
Trashy fabio = new Trashy("Fabio", "Mysterious", 1998, "Trashy", "A sizzling story of suspense and desire.", "\"The dialog is silly, the romance, contrived, and the plot, unrealistic: \nNo one is going to make love in the snow and fall asleep in it. \"");
Literary follett = new Literary("Ken Follett", "The Pillars Of The Earth", 1989, "Literary", "The epic story of the building of a cathedral in 12th century England.", "\"A novel of majesty and power...Will hold you, fascinate you, surround you.\"");
// Describe the objects
describe(loftus);
describe(fabio);
describe(follett);
in.waitUntilEnter();
}
}