Sistem Peminjaman
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 79 dari 87.
Tantangan
MudahMari lanjutkan membangun Sistem Manajemen Perpustakaan dengan membuat sistem peminjaman yang tepat menggunakan class Library untuk mengelola koleksi buku dan pengguna. Di sinilah sistemmu mulai terasa seperti perpustakaan sungguhan: melacak siapa yang meminjam apa dan menerapkan aturan peminjaman!
Kamu akan mengatur kodemu ke dalam empat file:
Book.java: Pertahankan class Book-mu dari tantangan sebelumnya beserta semua fungsinya: isbn, title, author, isAvailable, borrowedBy, getDetails(), serta getter dan setter yang sesuai.User.java: Pertahankan class User-mu dengan id, name, borrowedBooks ArrayList, borrowBook(), returnBook(), getBorrowedCount(), dan toString().Library.java: Buat classLibraryutama yang mengelola semuanya. Library-mu harus memiliki dua ArrayList: satu untuk objectBookdan satu untuk objectUser. Sertakan method berikut:addBook(Book book)- menambahkan buku ke koleksi library.registerUser(User user)- menambahkan pengguna ke daftar pengguna terdaftar di library.findBookByIsbn(String isbn)- menelusuri daftar buku dan mengembalikan Book dengan ISBN yang cocok, ataunulljika tidak ditemukan.findUserById(String id)- menelusuri daftar pengguna dan mengembalikan User dengan ID yang cocok, ataunulljika tidak ditemukan.borrowBook(String userId, String isbn)- mencari pengguna dan buku, lalu jika keduanya ada dan buku tersedia, membuat pengguna meminjam buku tersebut dan mencetak[userName] borrowed [bookTitle]. Jika buku tidak tersedia, cetakBook not available. Jika pengguna atau buku tidak ditemukan, cetakInvalid user or book.returnBook(String userId, String isbn)- mencari pengguna dan buku, lalu meminta pengguna mengembalikan buku tersebut dan mencetak[userName] returned [bookTitle]. Jika pengguna atau buku tidak ditemukan, cetakInvalid user or book.Main.java: Satukan sistem library-mu! Kamu akan menerima input untuk dua buku, masing-masing berisi ISBN, judul, dan penulis, satu pengguna yang berisi ID dan nama, lalu serangkaian operasi.Buat Library, tambahkan kedua buku, lalu daftarkan pengguna. Setelah itu, proses operasinya: kamu akan menerima string yang dipisahkan koma, dengan setiap operasi menggunakan format
borrow:userId:isbnataureturn:userId:isbn.Setelah memproses semua operasi, cetak ringkasan yang menampilkan status setiap buku dengan format
[isbn]: [Available/Borrowed].
Kamu akan menerima input dengan urutan berikut: ISBN book1, judul book1, penulis book1, ISBN book2, judul book2, penulis book2, ID pengguna, nama pengguna, dan terakhir string operasi.
Misalnya, dengan input ISBN-001, Clean Code, Robert Martin, ISBN-002, Design Patterns, Gang of Four, U001, Alice, dan borrow:U001:ISBN-001,borrow:U001:ISBN-002,return:U001:ISBN-001, output-mu akan menjadi:
Alice borrowed Clean Code
Alice borrowed Design Patterns
Alice returned Clean Code
ISBN-001: Available
ISBN-002: BorrowedTantangan ini menggabungkan komposisi, enkapsulasi, dan perancangan method untuk membuat sistem yang terpadu. Class Library bertindak sebagai koordinator, mendelegasikan logika peminjaman kepada class User dan Book, sekaligus mengelola seluruh koleksi!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca informasi buku 1
String isbn1 = scanner.nextLine();
String title1 = scanner.nextLine();
String author1 = scanner.nextLine();
// Baca informasi buku 2
String isbn2 = scanner.nextLine();
String title2 = scanner.nextLine();
String author2 = scanner.nextLine();
// Baca informasi pengguna
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// Baca string operasi (dipisahkan koma, format: borrow:userId:isbn atau return:userId:isbn)
String operationsStr = scanner.nextLine();
// TODO: Buat object Book untuk book1 dan book2
// TODO: Buat object User
// TODO: Buat Library, tambahkan kedua buku, dan daftarkan pengguna
// TODO: Pisahkan operationsStr berdasarkan "," dan proses setiap operasi
// Untuk setiap operasi, pisahkan berdasarkan ":" untuk mendapatkan action, userId, isbn
// Panggil library.borrowBook() atau library.returnBook() sesuai operasinya
// TODO: Cetak ringkasan setiap buku dalam format "[isbn]: [Available/Borrowed]"
}
}Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi13Proyek: Manajemen Perpustakaan
Gambaran Umum Proyek dan Desain UMLclass Buku dan PenggunaSistem PeminjamanFitur PencarianAntarmuka AdminIntegrasi Penanganan PengecualianPengujian dan Integrasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online