In: Computer Science
JAVA Programming ECLIPSE IDE
1.
Create an abstract class called Book. The class should declare
the following variables:
an instance variable that describes the title - String
an instance variable that describes the ISBN - String
an instance variable that describes the publisher - String
an instance variable that describes the price - double
an instance variable that describes the year – integer
Provide a toString() method that returns the information stored in the above variables.
Create the getter and setter methods for each instance variable except price. Provide the necessary constructors. Include an abstract method setPrice(double price) to determine the price for a book. Include an abstract method getGenre() to return the genre of the book.
Create two subclasses called ScienceBook and ChildrenBook.
These subclasses should override the abstract methods setPrice and
getGenre of class Book.
Use the following rule for setting the price for a book:
science books will have a 10% discount per each book
children books will have a fixed price (specified by user).
Write a driver program (another class with main method) that
uses the above hierarchy. In your driver program you must implement
an interaction with the user.
Use showInputDialog method to let the user input book
information.
Use showMessageDialog method to display book information including
price and type for both science and children books.
Implementation in JAVA;
Code;
import java.util.Scanner;
// Tester Class
public class Tester {
// driver function
public static void main(String[] args) {
// showInputDialog method
ScienceBook sb=
InputDialog_ScienceBook();
ChildrenBook cb=
InputDialog_ChildrenBook();
// Print details
print_ScienceBook(sb);
print_ChildrenBook(cb);
}
// showMessageDialog of Children book
public static void print_ChildrenBook(ChildrenBook cb)
{
System.out.println("\nOutput Details of Children Book: ");
System.out.println(cb.toString());
}
// showMessageDialog of science book
public static void print_ScienceBook(ScienceBook sb)
{
System.out.println("\nOutput Details of Children Book:
");
System.out.println(sb.toString());
}
// showInputDialog method of Science book
public static ScienceBook InputDialog_ScienceBook()
{
// take inputs of Science Book
Scanner s= new
Scanner(System.in);
System.out.println("Enter Details
for Science Book \n");
System.out.print("Enter Title of
Book : ");
String title = s.next();
System.out.print("Enter ISBN of
Book : ");
String isbn = s.next();
System.out.print("Enter Publisher
of Book : ");
String publisher = s.next();
System.out.print("Enter price of
Book $: ");
double price =
s.nextDouble();
System.out.print("Enter Year of
publishment of Book : ");
int year = s.nextInt();
System.out.print("Enter Genre of
Book : ");
String genre = s.next();
// create object and call
constructor
ScienceBook sb= new
ScienceBook(title, isbn, publisher, price, year, genre);
return sb;
}
// showInputDialog method of Children book
public static ChildrenBook InputDialog_ChildrenBook()
{
Scanner s= new
Scanner(System.in);
// take inputs of Children
Book
System.out.println("\n\nEnter Details for Children Book \n");
System.out.print("Enter Title of
Book : ");
String title1 = s.next();
System.out.print("Enter ISBN of
Book : ");
String isbn1 = s.next();
System.out.print("Enter Publisher
of Book : ");
String publisher1 = s.next();
System.out.print("Enter price of
Book $: ");
double price1 =
s.nextDouble();
System.out.print("Enter Year of
publishment of Book : ");
int year1 = s.nextInt();
System.out.print("Enter Genre of
Book : ");
String genre1 = s.next();
// create object and call
constructor
ChildrenBook cb= new
ChildrenBook(title1, isbn1, publisher1, price1, year1,
genre1);
return cb;
}
}
// Abstract Class book
abstract class Book{
// Instance variables
String title;
String ISBN;
String publisher;
double price;
int year;
// constructor
public Book(String title, String ISBN, String
publisher, double price,int year) {
this.title = title;
this.ISBN = ISBN;
this.publisher = publisher;
this.price=price;
this.year=year;
}
// getters and setters
public String gettitle() {
return title;
}
public void settitle(String title) {
this.title= title;
}
public String getISBN() {
return ISBN;
}
public void setISBN(String ISBN) {
this.ISBN= ISBN;
}
public String getpublisher() {
return publisher;
}
public void setpublisher(String publisher) {
this.publisher= publisher;
}
public int getyear() {
return year;
}
public void setyear(int year) {
this.year= year;
}
public double getprice() {
return price;
}
// to string method
public String toString() {
String ans="Title : "+title+"\nISBN
: "+ISBN+"\nPublisher : "+publisher+"\nYear : "+year;
return ans;
}
// abstract methods
abstract String getgenre() ;
abstract void setPrice(double price);
}
// class ScienceBook extends Book class which implements
unimplemented methods
class ScienceBook extends Book{
// instance variables
String genre;
int discount = 10;
// call constructor
public ScienceBook(String title, String ISBN, String
publisher, double price, int year, String genre) {
super(title, ISBN, publisher,
price, year);
this.genre=genre;
}
@Override
String getgenre() {
return genre;
}
@Override
void setPrice(double price) {
this .price = price - (discount*price/100);
}
@Override
public String toString() {
setPrice(price);
String ans =
super.toString()+"\nPrice $: "+price+" (After 10% discount)" +
"\nGenre : "+genre;
return ans;
}
}
class ChildrenBook extends Book{
String genre;
// super constructor
public ChildrenBook(String title, String ISBN, String
publisher, double price, int year, String genre) {
super(title, ISBN, publisher,
price, year);
this.genre=genre;
}
@Override
String getgenre() {
return genre;
}
@Override
void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
String ans = super.toString()
+"\nPrice $: "+price+" (Fixed price )"+ "\nGenre : "+genre;
return ans;
}
}
SAMPLE OUTPUTS:
// PLEASE THUMBS-UP AND RATE POSITIVELY
If you have any doubt regarding this question please ask me in
commnets
// THANK YOU:-)