-
Notifications
You must be signed in to change notification settings - Fork 0
/
pacakge.ts
81 lines (64 loc) · 1.95 KB
/
pacakge.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class Book {
private title: string;
private author: string;
private available: boolean;
constructor(title: string, author: string) {
this.title = title;
this.author = author;
this.available = true;
}
getTitle(): string {
return this.title;
}
getAuthor(): string {
return this.author;
}
isAvailable(): boolean {
return this.available;
}
borrow(): void {
if (this.available) {
this.available = false;
console.log(`Book "${this.title}" by ${this.author} has been borrowed.`);
} else {
console.log(`Book "${this.title}" by ${this.author} is not available.`);
}
}
returnBook(): void {
if (!this.available) {
this.available = true;
console.log(`Book "${this.title}" by ${this.author} has been returned.`);
} else {
console.log(`Book "${this.title}" by ${this.author} is already available.`);
}
}
}
class Library {
private books: Book[];
constructor() {
this.books = [];
}
addBook(book: Book): void {
this.books.push(book);
console.log(`Book "${book.getTitle()}" by ${book.getAuthor()} has been added to the library.`);
}
displayBooks(): void {
console.log("Books available in the library:");
this.books.forEach((book, index) => {
console.log(`${index + 1}. "${book.getTitle()}" by ${book.getAuthor()} (${book.isAvailable() ? 'Available' : 'Not Available'})`);
});
}
}
// Example usage:
const library = new Library();
const book1 = new Book("The Great Gatsby", "F. Scott Fitzgerald");
const book2 = new Book("To Kill a Mockingbird", "Harper Lee");
const book3 = new Book("1984", "George Orwell");
library.addBook(book1);
library.addBook(book2);
library.addBook(book3);
library.displayBooks();
book1.borrow();
book2.borrow();
book1.returnBook();
library.displayBooks();