```java
// Publication -> Research Paper, Book, Magazine
import java.util.ArrayList;
public class Main {
public static void main(String[] main) {
Book howToThink =
new Book(
"How to think like a computer scientist",
new String[] {"Peter Wentworth", "Jeffrey Elkner"},
"computer",
"12345");
System.out.println(howToThink.getTitle());
System.out.println(howToThink instanceof Publication);
System.out.println(howToThink instanceof Book);
Student juan = new Student("Juan", "BSCS", "25-0001");
juan.borrow(howToThink);
for (Publication pub : juan.getItems()) {
System.out.println(pub.getTitle());
}
System.out.println(howToThink.getTitle());
}
}
class Publication {
private String title;
private String[] authors;
private String genre;
Publication(String title, String[] authors, String genre) {
this.title = title;
this.authors = authors;
this.genre = genre;
}
String getTitle() {
return title;
}
void setTitle(String newTitle) {
this.title = newTitle;
}
String[] getAuthors() {
return authors;
}
String getGenre() {
return genre;
}
}
class Book extends Publication {
private String ISBN;
Book(String title, String[] authors, String genre, String ISBN) {
super(title, authors, genre);
this.ISBN = ISBN;
}
public String getISBN() {
return ISBN;
}
}
class Borrower {
String name;
ArrayList<Publication> items = new ArrayList<>();
Borrower(String name) {
this.name = name;
}
void borrow(Publication pub) {
pub.setTitle("Computer scientist");
items.add(pub);
}
ArrayList<Publication> getItems() {
return items;
}
}
class Student extends Borrower {
String course;
String studentId;
Student(String name, String course, String studentId) {
super(name);
this.course = course;
this.studentId = studentId;
}
}
```