Antarmuka Admin
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 81 dari 87.
Tantangan
MudahMari kembangkan Sistem Manajemen Perpustakaanmu dengan Antarmuka Admin! Perpustakaan sungguhan membutuhkan kemampuan administratif: menambahkan buku baru ke koleksi, menghapus buku yang sudah usang, dan mendaftarkan anggota baru. Kamu akan membuat antarmuka yang mendefinisikan operasi administratif ini dan mengimplementasikannya dalam class admin khusus.
Kamu akan melanjutkan pengembangan kodemu yang sudah ada dalam lima file:
Book.java: Pertahankan class Book dengan semua fungsionalitas yang sudah ada: isbn, title, author, isAvailable, borrowedBy, getDetails(), serta getter/setter yang sesuai.User.java: Pertahankan class User tanpa perubahan, dengan id, name, ArrayList borrowedBooks, borrowBook(), returnBook(), getBorrowedCount(), dan toString().Library.java: Pertahankan class Library dengan semua method yang sudah ada. Tambahkan method baruremoveBook(String isbn)yang mencari dan menghapus buku dari koleksi berdasarkan ISBN-nya. Method ini harus mengembalikantruejika buku ditemukan dan dihapus, ataufalsejika tidak. Buku hanya dapat dihapus jika saat ini tersedia (tidak sedang dipinjam).LibraryAdmin.java: Buat interface bernamaLibraryAdminyang mendefinisikan kontrak untuk operasi administratif. Interface-mu harus mendeklarasikan tiga method:addBook(String isbn, String title, String author)- mengembalikan boolean yang menunjukkan keberhasilanremoveBook(String isbn)- mengembalikan boolean yang menunjukkan keberhasilanregisterUser(String id, String name)- mengembalikan boolean yang menunjukkan keberhasilan
Lalu, buat class bernama
AdminServiceyang mengimplementasikan interface ini. AdminService harus menyimpan referensi ke Library (yang diberikan melalui konstruktornya) dan mengimplementasikan ketiga method dengan mendelegasikan operasi ke Library, sekaligus memberikan informasi yang sesuai. Saat menambahkan buku, buat Book baru dan tambahkan ke library. Saat mendaftarkan pengguna, buat User baru dan daftarkan.Main.java: Tunjukkan cara kerja sistem adminmu! Kamu akan menerima serangkaian perintah admin sebagai satu string yang dipisahkan koma. Setiap perintah mengikuti salah satu format berikut:ADD_BOOK:isbn:title:authorREMOVE_BOOK:isbnREGISTER_USER:id:nameBORROW:userId:isbn
Buat Library dan AdminService. Proses setiap perintah dan cetak hasilnya:
- Untuk ADD_BOOK: cetak
Added: [title]jika berhasil - Untuk REMOVE_BOOK: cetak
Removed: [isbn]jika berhasil, atauCannot remove: [isbn]jika buku tidak ada atau sedang dipinjam - Untuk REGISTER_USER: cetak
Registered: [name] - Untuk BORROW: gunakan fungsionalitas peminjaman yang sudah ada di library
Setelah memproses semua perintah, cetak
Library status:, lalu detail setiap buku dan status ketersediaannya dengan format[details] - [Available/Borrowed].
Kamu akan menerima satu input: string perintah yang dipisahkan koma.
Misalnya, dengan input REGISTER_USER:U001:Alice,ADD_BOOK:ISBN-001:Clean Code:Robert Martin,ADD_BOOK:ISBN-002:Design Patterns:Gang of Four,BORROW:U001:ISBN-001,REMOVE_BOOK:ISBN-001,REMOVE_BOOK:ISBN-002, outputmu adalah:
Registered: Alice
Added: Clean Code
Added: Design Patterns
Alice borrowed Clean Code
Cannot remove: ISBN-001
Removed: ISBN-002
Library status:
[ISBN-001] Clean Code by Robert Martin - BorrowedPerhatikan bagaimana antarmuka admin menyediakan kontrak yang jelas untuk operasi administratif, sementara implementasi AdminService menangani logika sebenarnya. Sistem ini dengan benar mencegah penghapusan buku yang sedang dipinjam, sekaligus mengizinkan penghapusan buku yang tersedia. Pemisahan antara antarmuka dan implementasi ini adalah prinsip OOP penting yang membuat kodemu lebih mudah dipelihara dan diuji!
Coba sendiri
import java.util.Scanner;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca perintah yang dipisahkan koma
String input = scanner.nextLine();
String[] commands = input.split(",");
// Buat Library dan AdminService
Library library = new Library();
AdminService adminService = new AdminService(library);
// Proses setiap perintah
for (String command : commands) {
String[] parts = command.split(":");
String operation = parts[0];
if (operation.equals("ADD_BOOK")) {
String isbn = parts[1];
String title = parts[2];
String author = parts[3];
if (adminService.addBook(isbn, title, author)) {
System.out.println("Added: " + title);
}
} else if (operation.equals("REMOVE_BOOK")) {
String isbn = parts[1];
if (adminService.removeBook(isbn)) {
System.out.println("Removed: " + isbn);
} else {
System.out.println("Cannot remove: " + isbn);
}
} else if (operation.equals("REGISTER_USER")) {
String id = parts[1];
String name = parts[2];
if (adminService.registerUser(id, name)) {
System.out.println("Registered: " + name);
}
} else if (operation.equals("BORROW")) {
String userId = parts[1];
String isbn = parts[2];
library.borrowBook(userId, isbn);
}
}
// Tampilkan status library
System.out.println("Library status:");
ArrayList<Book> allBooks = library.getAllBooks();
for (Book book : allBooks) {
String status = book.isAvailable() ? "Available" : "Borrowed";
System.out.println(book.getDetails() + " - " + status);
}
}
}
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