Java
Borrow flow
Write borrow and return operations.
The borrow flow
The fourth lesson defines the Loan class. A loan represents a member borrowing a book. The Loan class brings together Book and Member objects.
Example: class Loan { Book book; Member member; Loan(Book b, Member m) { book = b; member = m; } }. This class holds two object references. A toString method shows the loan relationship: member.name + " <- " + book.title. The loan flow is one of the library's core operations; it tracks who has which book. Later, returns and dates can be added.
Object references
The Loan class holds object references, not primitive types. The Book book field points to a Book object, the Member member field to a Member object. This keeps the relationship between the book and the member live.
Example: Book b = new Book("Java", "Gosling"); Member m = new Member("Alex", 101); Loan loan = new Loan(b, m);. Here the loan object holds references to b and m. loan.member.name accesses the member's name, loan.book.title the book's title. Object references provide the link between classes.
Exercise Add the Loan class
Add a Loan class to the file. Write Book book and Member member fields. Add a Loan(Book b, Member m) constructor; assign both fields. Add a public String toString() method returning member.name + " <- " + book.title. Put main inside Loan; create a Book, a Member and a Loan instance, print the Loan instance.
Show example solution
class Library {
String name;
Library(String n) {
name = n;
}
public String toString() {
return "Library: " + name;
}
}
class Book {
String title;
String author;
Book(String t, String a) {
title = t;
author = a;
}
public String toString() {
return title + " - " + author;
}
}
class Member {
String name;
int id;
Member(String n, int i) {
name = n;
id = i;
}
public String toString() {
return name + " (" + id + ")";
}
}
class Loan {
Book book;
Member member;
Loan(Book b, Member m) {
book = b;
member = m;
}
public String toString() {
return member.name + " <- " + book.title;
}
public static void main(String[] args) {
Book b = new Book("Java", "Gosling");
Member m = new Member("Alex", 101);
Loan loan = new Loan(b, m);
System.out.println(loan);
}
}
Test yourself
-
Complete the Loan constructor
class Loan {
Book book;
Member member;
____(Book b, Member m) {
book = b;
member = m;
}
}
Show answer
class Loan {
Book book;
Member member;
Loan(Book b, Member m) {
book = b;
member = m;
}
}
-
Match the Loan parts
- Book book
- Book reference
- Member member
- Member reference
- Loan(Book b, Member m)
- Constructor
- member.name
- Member name access
-
Which two objects does the Loan class combine?
- Book and Book
- Book and Member
- Member and Library
- Library and Book
Show answer
Book and Member — Book and Member — a loan links a book and a member.
Next lesson: Putting it together