abstract class LibraryItem{
String name,subject;
int maximumLoanPeriod ;
public LibraryItem(String name, String subject, int maximumLoanPeriod){
this.name = name;
this.subject = subject;
this.maximumLoanPeriod = maximumLoanPeriod;
}
public String getName(){
return name;
}
public String getSubject(){
return subject;
}
public int maximumLoanPeriod(){
return maximumLoanPeriod;
}
public void setName(){
this.name = name;
}
public void setSubject(){
this.subject=subject;
}
public void setMaximumLoanPeriod(){
this.maximumLoanPeriod=maximumLoanPeriod;
}
//abstract
public abstract double computeFine(int loanPeriod);
public String toString(){
return "The name " + name + " the Subject is " + subject + " The Maximum Loan Period " + maximumLoanPeriod;
}
}
//Subclass Book
class Book extends LibraryItem{
int year;
public Book(String name, String subject, int maximumLoanPeriod, int year){
super(name, subject, maximumLoanPeriod);
this.year=year;
}
public int getYear(){
return year;
}
public void setYear(){
this.year=year;
}
//overridin abstract
public double computeFine( int loanPeriod){
double loanPeriodFine= 0.0;
if (loanPeriod <= maximumLoanPeriod)
{
loanPeriodFine= 0.0;
}else if (loanPeriod > maximumLoanPeriod){
if (getSubject()=="cs")
{
loanPeriodFine= loanPeriod-maximumLoanPeriod*10.0;
}else{
loanPeriodFine = loanPeriod-maximumLoanPeriod*5.0;
}
}
if(getYear() <2000){
loanPeriodFine= loanPeriodFine*(20/100);
} else if (getYear()>2000){
loanPeriodFine=loanPeriodFine*(20/100);
}
return loanPeriodFine; }
//end of overidding the method
public String toString(){
return super.toString() + " The book year " + year;
}
}
//subclass Magazine
class Magazine extends LibraryItem {
int month ;
public Magazine(String name, String subject, int maximumLoanPeriod, int month){
super(name, subject , maximumLoanPeriod);
this.month=month;
}
public int getMonth(){
return month;
}
public void setMonth(){
this.month=month;
}
//starting overriding the abstract method
public double computeFine(int loanPeriod){
double loanPeriodFine = 0;
if (loanPeriod > maximumLoanPeriod){
if(getMonth()==01|| getMonth()==06){
loanPeriodFine = (loanPeriod-maximumLoanPeriod)*5.0;
}
}
return loanPeriodFine;
}
//end of overridn
//toString was not mentioned but it is needed to show the month
public String toString(){
return super.toString() + " the Magazine month " + month;
}
}
class LibraryItemsTest{
public static void main(String[] args){
//creating the array
LibraryItem [] itemsObj = new LibraryItem[6];
//creating polymorphic objects
itemsObj[0]= new Book("Java Programming 1v " , "CS" , 10, 2010);
itemsObj[1]= new Book("Java Programming 2v " , "CS" , 20, 1999);
itemsObj[2]= new Book("Java Programming 3v " , "CS" , 6, 2001);
itemsObj[3]= new Magazine("Wired Magazine " , "Technology" , 10, 04);
itemsObj[4]= new Magazine("Java for dummies Magazine " , "Programming" , 10, 03);
itemsObj[5]= new Magazine("Hacking Magazine" , "Security" , 10, 10);
//toString job now!
System.out.println(itemsObj[0].toString() + " " +" and the fine is " + itemsObj[0].computeFine(7));
System.out.println(itemsObj[1].toString() + " " + " and the fine is " + itemsObj[0].computeFine(7));
System.out.println(itemsObj[2].toString() + " " + " and the fine is " + itemsObj[0].computeFine(7));
System.out.println(itemsObj[3].toString() + " " +" and the fine is " + itemsObj[0].computeFine(7));
System.out.println(itemsObj[4].toString() + " " + " and the fine is " + itemsObj[0].computeFine(7));
System.out.println(itemsObj[5].toString() + " " +" and the fine is " + itemsObj[0].computeFine(7));
}
}Add a code snippet to your website: www.paste.org