Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.

Paste

Pasted as Java by mss ( 14 years ago )
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));
  
  
  
 }
}

 

Revise this Paste

Your Name: Code Language: