CS2514

Introduction to Java

Dr Derek Bridge

School of Computer Science & Information Technology

University College Cork

Client code for LibraryBook class

LibraryBook b1 = new LibraryBook("Sir Hugh Jeegoh", "Java through dance");
LibraryBook b2 = new LibraryBook("Ms Helen Back", "Java: who gives a #*$%?");
b2.acquire();
b2.acquire();
b2.takeOut();
b2.takeOut();
b2.bringBack();
b1.acquire();
System.out.println(b1);
System.out.println(b2);

LibraryBook class definition

class LibraryBook {
            
    private String author;
    private String title;
    private int numCopiesPossessed;
    private int numCopiesOnLoan;
    
    public LibraryBook(String author, String title) {
        this.author = author;
        this.title = title;
    }
    
    public int getNumCopiesPossessed() {
        return numCopiesPossessed;
    }
    
    public int getNumCopiesOnLoan() {
        return numCopiesOnLoan;
    }
    
    public int getNumCopiesOnShelves() {
        return numCopiesPossessed - numCopiesOnLoan;
    }
    
    public void acquire() {
        numCopiesPossessed = numCopiesPossessed + 1;
    }
    
    public void takeOut() {
        numCopiesOnLoan = numCopiesOnLoan + 1;
    }
    
    public void bringBack() {
        numCopiesOnLoan = numCopiesOnLoan - 1;
    }
    
}

Improving the LibraryBook interface

Exercise: What do we add to the class definition?

public LibraryBook(String author, String title, int numCopies) {
            
            
            
}

public void acquire(int numNewCopies) {
    
}

Explicitly calling a constructor using this

Overloading

Class exercise

When to use overloading

Advanced point: varargs

Advanced point: overloading of operators

Advanced point: Overloading in Python