class LoanBook extends Book
{
public LoanBook (String t, String a, int c1, int c2, float p)
{
super(t,a,c1,c2,p);
}
public boolean canLoan()
{
return true;
}
public String details ()
{
return "Loan: "+super.details();
}
public String toString()
{
return "loan: "+super.toString();
}
}
class ReferenceBook extends Book
{
public ReferenceBook (String t, String a, int c1, int c2, float p)
{
super(t,a,c1,c2,p);
}
public boolean canLoan()
{
return false;
}
public String details ()
{
return "Reference: "+super.details();
}
public String toString()
{
return "Ref: "+super.toString();
}
}
class Loan
{
Book book;
Person person;
Date date = new Date();
public Loan (Book b, Person p)
{
book = b;
person = p;
}
public String details ()
{
return book.details()+" loaned on "+date+" to "+person.details();
}
public String toString()
{
return "book "+book+" -> person"+person+" @date "+date;
}
}
public class Library
{
public static void main(String[] args)
{
Book b1 = new LoanBook ("Java I/O Programming","E.R.Harrold",123,45,18.99F);
Book b2 = new LoanBook ("Java in a Nutshell","D.Flanagan",123,25,12.99F);
Book b3 = new ReferenceBook ("The Java CLass Libraries","P.Chan & R.Lee",2123,10,35.00F);
System.out.println("Books");
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println("");
System.out.println("People:");
Person james = new Person ("James Gosling");
System.out.println(james);
System.out.println("");
Loan l1 = makeLoan(james, b1);
Loan l2 = makeLoan(james, b2);
Loan l3 = makeLoan(james, b3);
}
private static Loan makeLoan(Person p, Book b)
{
Loan l=null;
if (b.canLoan())
{
l = new Loan(b,p);
System.out.println(l.details());
}
else
System.out.println("Cannot loan "+b.details()+" to "+p.details());
System.out.println("");
return l;
}
}
A java blog with a collection of examples and tutorials on Java and related technologies. (Under maintenance with continuous updates) Be in touch with java jazzle or k2java.blogspot.com.
Sunday, February 27, 2011
Extending books to loanable and reference books
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment