67 lines
2.0 KiB
Java
67 lines
2.0 KiB
Java
// Package: users
|
|
package users;
|
|
public class User {
|
|
String name;
|
|
int userID;
|
|
public User(String name, int userID) { this.name = name; this.userID = userID; }
|
|
}
|
|
|
|
// Package: books
|
|
package books;
|
|
public class Book {
|
|
String title;
|
|
boolean isAvailable;
|
|
public Book(String title) { this.title = title; this.isAvailable = true; }
|
|
}
|
|
|
|
// Package: exceptions
|
|
package exceptions;
|
|
public class BookNotAvailableException extends Exception {}
|
|
public class BookNotBorrowedException extends Exception {}
|
|
public class BookCannotBeIssued extends Exception {}
|
|
|
|
// Interface LibraryOperations
|
|
package users;
|
|
import books.Book;
|
|
import exceptions.*;
|
|
interface LibraryOperations {
|
|
void borrowBook(Book book) throws BookNotAvailableException, BookCannotBeIssued;
|
|
void returnBook(Book book) throws BookNotBorrowedException;
|
|
int calculatePenalty(int daysLate);
|
|
}
|
|
|
|
// Class LibraryUser
|
|
package users;
|
|
import books.Book;
|
|
import exceptions.*;
|
|
public class LibraryUser extends User implements LibraryOperations {
|
|
public LibraryUser(String name, int userID) { super(name, userID); }
|
|
public void borrowBook(Book book) throws BookNotAvailableException, BookCannotBeIssued {
|
|
if (!book.isAvailable) throw new BookNotAvailableException();
|
|
book.isAvailable = false;
|
|
}
|
|
public void returnBook(Book book) throws BookNotBorrowedException {
|
|
if (book.isAvailable) throw new BookNotBorrowedException();
|
|
book.isAvailable = true;
|
|
}
|
|
public int calculatePenalty(int daysLate) { return daysLate * 2; }
|
|
}
|
|
|
|
// Main class for testing
|
|
package main;
|
|
import users.LibraryUser;
|
|
import books.Book;
|
|
import exceptions.*;
|
|
public class Main {
|
|
public static void main(String[] args) {
|
|
LibraryUser user = new LibraryUser("Alice", 1);
|
|
Book book = new Book("Java Programming");
|
|
try {
|
|
user.borrowBook(book);
|
|
user.returnBook(book);
|
|
} catch (Exception e) {
|
|
System.out.println(e);
|
|
}
|
|
}
|
|
}
|