Sistem Peminjaman
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 103 dari 110.
Tantangan
MudahPada pelajaran sebelumnya, kamu membuat class Book dan User dengan property dasar. Sekarang saatnya membangun sistem peminjaman yang lengkap dengan class Library untuk mengelola seluruh proses peminjaman.
Kamu akan membuat file baru dan memperbarui file yang sudah ada untuk menerapkan logika peminjaman:
book.dart: Pertahankan classBookyang sudah ada denganisbn,title,author,isAvailable, dantoString().user.dart: Pertahankan classUseryang sudah ada denganid,name,borrowedBooks, dantoString().library.dart: Buat classLibrarybaru untuk mengelola buku dan pengguna. Class ini harus memiliki dua list: satu untukbooksdan satu untukusers. Sertakan method untuk:addBook(Book book): menambahkan buku ke koleksi libraryregisterUser(User user): menambahkan pengguna ke libraryborrowBook(String isbn, String userId): mencari buku dan pengguna, lalu jika buku ditemukan, tersedia, dan penggunanya ditemukan, tandai buku sebagai tidak tersedia, tambahkan buku ke daftar buku yang dipinjam pengguna, dan cetakuserId borrowed "title". Jika buku tidak ditemukan, cetakBook not found. Jika buku tidak tersedia, cetakBook not available. Jika pengguna tidak ditemukan, cetakUser not found.returnBook(String isbn, String userId): mencari buku dan pengguna, lalu jika keduanya ditemukan dan pengguna memiliki buku tersebut, tandai buku sebagai tersedia, hapus buku dari daftar buku yang dipinjam pengguna, dan cetakuserId returned "title". Jika buku tidak ditemukan, cetakBook not found. Jika pengguna tidak ditemukan, cetakUser not found.
main.dart: Impor semua file dan tunjukkan cara kerja sistem peminjaman. BuatLibrary, tambahkan dua buku (978-0-13-468599-1,The Pragmatic Programmer,David Thomasdan978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford), lalu daftarkan satu pengguna (U001,Alice Johnson). Kemudian:- Pinjamkan buku pertama kepada Alice
- Coba pinjamkan buku yang sama sekali lagi, tindakan ini seharusnya gagal
- Pinjamkan buku kedua kepada Alice
- Cetak Alice untuk menampilkan jumlah buku yang dipinjamnya
- Kembalikan buku pertama
- Cetak Alice lagi untuk menampilkan jumlah buku yang sudah diperbarui
Output yang diharapkan:
U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)Coba sendiri
import 'book.dart';
import 'user.dart';
import 'library.dart';
void main() {
// TODO: Buat instance Library
// TODO: Buat dua buku:
// - Buku 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
// - Buku 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
// TODO: Tambahkan kedua buku ke library
// TODO: Buat user dengan id 'U001' dan nama 'Alice Johnson'
// TODO: Daftarkan user ke library
// TODO: Pinjam buku pertama untuk Alice
// TODO: Coba pinjam buku yang sama lagi (seharusnya gagal dengan 'Book not available')
// TODO: Pinjam buku kedua untuk Alice
// TODO: Tampilkan Alice untuk menunjukkan jumlah buku yang dipinjamnya
// TODO: Kembalikan buku pertama
// TODO: Tampilkan Alice lagi untuk menunjukkan jumlah yang sudah diperbarui
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik13Konsep OOP Lanjutan
Komposisi vs PewarisanExtension methodClass yang Dapat DipanggilSealed class (Dart 3)Records (Dart 3)Pola dan Pencocokan (3.0)Enum dengan method16Proyek: Manajemen library
Ringkasan Proyekclass Buku dan Pengguna2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online