Soal 1 - Perpustakaan
- Question
- Answer
Daftar Class
Daftar Class
Class Buku
- Properti:
judul(String): Judul buku.pengarang(String): Nama pengarang buku.tahunTerbit(int): Tahun terbit buku.
Class Pustakawan
- Properti:
nama(String): Nama pustakawan.idKaryawan(String): ID unik karyawan pustakawan.
Deskripsi Main Class: MainPerpustakaan
Deskripsi Main Class: MainPerpustakaan
MainPerpustakaan yang akan mendemonstrasikan pembuatan dan penggunaan objek dari class Buku dan Pustakawan. Ikuti instruksi berikut:Membuat Objek Buku
- Buat objek pertama dari class
Bukudan ubah properti sebagai berikut:- Judul Buku: “Pemrograman Java”
- Pengarang: “John Doe”
- Tahun Terbit: 2020
- Buat objek kedua dari class
Bukudan ubah properti sebagai berikut:- Judul Buku: “Algoritma dan Struktur Data”
- Pengarang: “Jane Smith”
- Tahun Terbit: 2022
Membuat Objek Pustakawan
- Buat objek pertama dari class
Pustakawandan ubah properti sebagai berikut:- Nama: “Andi”
- ID Karyawan: “P123”
- Buat objek kedua dari class
Pustakawandan ubah properti sebagai berikut:- Nama: “Siti”
- ID Karyawan: “P456”
Menampilkan Informasi
- Setelah objek-objek tersebut dibuat dan propertinya diatur, tampilkan informasi dari masing-masing objek ke layar dengan format berikut:
- Untuk setiap objek buku, tampilkan:
Buku [Nomor]: Judul: [judul], Pengarang: [pengarang], Tahun Terbit: [tahunTerbit] - Untuk setiap objek pustakawan, tampilkan:
Pustakawan [Nomor]: Nama: [nama], ID Karyawan: [idKaryawan]
- Untuk setiap objek buku, tampilkan:
Contoh Output yang Diharapkan:
Soal 2 - Toko Elektronik
- Question
- Answer
Daftar Class
Daftar Class
Class Smartphone
- Properti:
merk(String): Merk smartphone (misalnya “Samsung”, “Apple”).model(String): Model smartphone (misalnya “Galaxy S23”, “iPhone 14”).kapasitasPenyimpanan(int): Kapasitas penyimpanan smartphone (misalnya 128, 256).harga(double): Harga smartphone dalam satuan IDR (misaalnya 10000000).
- Constructor:
- Constructor untuk menginisialisasi semua properti objek (merk, model, kapasitasPenyimpanan, harga).
- Method:
tampilkanInfomasi(): Menampilkan informasi lengkap tentang smartphone.hitungHargaDiskon(double persenDiskon): Menghitung harga diskon berdasarkan persentase diskon yang diberikan.
Deskripsi Main Class: MainTokoElektronik
Deskripsi Main Class: MainTokoElektronik
MainTokoElektronik yang akan mendemonstrasikan pembuatan dan penggunaan objek dari class Smartphone dan Laptop. Ikuti instruksi berikut:Membuat Objek Smartphone
- Buat objek pertama dari class
Smartphonedengan informasi berikut:- Merk: “Samsung”
- Model: “Galaxy S23”
- Kapasitas Penyimpanan: 256 GB
- Harga: 15000000
- Buat objek kedua dari class
Smartphonedengan informasi berikut:- Merk: “Apple”
- Model: “iPhone 14”
- Kapasitas Penyimpanan: 128 GB
- Harga: 17000000
Menggunakan Method
- Tampilkan informasi tentang setiap smartphone menggunakan method
tampilkanInformasi(). - Hitung dan tampilkan harga diskon (misalnya diskon 10%) untuk setiap produk menggunakan method
hitungHargaDiskon(double persenDiskon).
Contoh Output yang Diharapkan:
Soal 3 - Aplikasi Bank
- Question
- Answer
- Nomor Akun yang hanya bisa dibaca setelah akun dibuat dan tidak bisa diubah.
- Nama Pengguna yang dapat diubah oleh pengguna kapan saja.
- Saldo yang dapat ditambahkan atau dikurangi melalui transaksi, namun hanya dapat diakses melalui method tertentu untuk menjaga keamanan.
Daftar Class
Daftar Class
Class AkunPengguna
- Properti:
nomorAkun(String): Nomor akun pengguna, bersifat final (tidak dapat diubah setelah objek dibuat).nama(String): Nama pengguna, dapat diubah setelah objek dibuat.saldo(double): Saldo pengguna dalam rupiah, dapat diubah melalui transaksi.
- Constructor:
- Constructor untuk menginisialisasi nomorAkun, nama, dan saldo awal saat objek dibuat.
- Method:
getNomorAkun(): Menampilkan nomor akun (getter).getNama(): Menampilkan nama pengguna (getter).setNama(String nama): Mengubah nama pengguna (setter).getSaldo(): Menampilkan saldo pengguna (getter).tambahSaldo(double jumlah): Menambahkan sejumlah uang ke saldo pengguna.kurangiSaldo(double jumlah): Mengurangi sejumlah uang dari saldo pengguna.
Deskripsi Main Class: MainAplikasiBank
Deskripsi Main Class: MainAplikasiBank
MainAplikasiBank yang akan mendemonstrasikan pembuatan objek AkunPengguna dan penggunaan method getter, setter, dan transaksi saldo. Ikuti instruksi berikut:Membuat Objek Akun Pengguna
- Buat objek pertama dari class
AkunPenggunadengan informasi berikut:- Nomor Akun: “12345”
- Nama: “Budi Santoso”
- Saldo: 500000
- Buat objek kedua dari class
AkunPenggunadengan informasi berikut:- Nomor Akun: “67890”
- Nama: “Sarah Wijaya”
- Saldo: 750000
Menggunakan Getter dan Setter
- Tampilkan nomor akun dan nama untuk kedua akun menggunakan method
getNomorAkun()dangetNama(). - Ubah nama untuk akun pertama menjadi “Budi Setiawan” menggunakan method
setNama(). - Tampilkan saldo untuk kedua akun menggunakan method
getSaldo().
Transaksi Saldo
- Tambahkan saldo sebesar 100000 untuk akun pertama menggunakan method
tambahSaldo(). - Kurangi saldo sebesar 200000 untuk akun kedua menggunakan method
kurangiSaldo().
Tampilkan Semua Informasi
- Tampilkan nomor akun, nama, dan saldo setelah transaksi untuk kedua akun.
Contoh Output yang Diharapkan:
Soal 4 - Sistem Manajemen Proyek
- Question
- Answer
Daftar Class
Daftar Class
Class Tugas
- Properti:
namaTugas(String): Nama tugas yang harus dikerjakan (misalnya “Desain Website”).deadline(String): Tanggal deadline tugas dalam format “dd-mm-yyyy” (misalnya “25-12-2024”).status(boolean): Status apakah tugas sudah selesai (truejika selesai,falsejika belum).
- Constructor:
- Constructor untuk menginisialisasi namaTugas, deadline, dan status.
- Method:
getNamaTugas(): Mengambil nama tugas (getter).setNamaTugas(String namaTugas): Mengubah nama tugas (setter).getDeadline(): Mengambil deadline tugas (getter).setDeadline(String deadline): Mengubah deadline tugas (setter).isSelesai(): Menampilkan status apakah tugas sudah selesai atau belum (getter).setStatus(boolean status): Mengubah status tugas (setter).
Class Tim
- Properti:
namaTim(String): Nama tim yang bekerja pada proyek (misalnya “Tim Pengembangan”).anggota(List): Daftar nama anggota tim yang bekerja pada proyek ini.
- Constructor:
- Constructor untuk menginisialisasi namaTim dan anggota (list nama anggota).
- Method:
getNamaTim(): Mengambil nama tim (getter).setNamaTim(String namaTim): Mengubah nama tim (setter).getAnggota(): Mengambil daftar anggota tim (getter).setAnggota(List<String> anggota): Mengubah daftar anggota tim (setter).tambahAnggota(String namaAnggota): Menambahkan anggota baru ke dalam tim.
Class Proyek
- Properti:
namaProyek(String): Nama proyek (misalnya “Proyek Website Baru”).budget(double): Anggaran yang dialokasikan untuk proyek ini.durasi(int): Durasi proyek dalam hari (misalnya 30 hari).timProyek(Tim): Tim yang bekerja pada proyek ini (objek dari class Tim).daftarTugas(List): Daftar tugas yang harus diselesaikan dalam proyek ini (list objek Tugas).
- Constructor:
- Constructor untuk menginisialisasi namaProyek, budget, durasi, timProyek, dan daftarTugas.
- Method:
getNamaProyek(): Mengambil nama proyek (getter).setNamaProyek(String namaProyek): Mengubah nama proyek (setter).getBudget(): Mengambil budget proyek (getter).setBudget(double budget): Mengubah budget proyek (setter).getDurasi(): Mengambil durasi proyek (getter).setDurasi(int durasi): Mengubah durasi proyek (setter).getTimProyek(): Mengambil tim yang bekerja pada proyek (getter).setTimProyek(Tim timProyek): Mengubah tim proyek (setter).getDaftarTugas(): Mengambil daftar tugas yang ada dalam proyek (getter).setDaftarTugas(List<Tugas> daftarTugas): Mengubah daftar tugas proyek (setter).tambahTugas(Tugas tugas): Menambahkan tugas baru ke dalam proyek.tambahAnggotaKeTim(String namaAnggota): Menambahkan anggota baru ke tim proyek.cekProyekSelesai(): Mengecek apakah semua tugas dalam proyek sudah selesai (mengembalikantruejika semua tugas selesai,falsejika ada tugas yang belum selesai).
Deskripsi Main Class: MainSistemManajemenProyek
Deskripsi Main Class: MainSistemManajemenProyek
MainSistemManajemenProyek yang akan mendemonstrasikan pembuatan objek Proyek, Tim, dan Tugas, serta penggunaan method Object Composition untuk mengelola proyek dan tugas. Ikuti instruksi berikut:Membuat Objek Tim
- Buat objek Tim untuk proyek dengan nama tim “Tim Pengembangan” dan daftar anggota sebagai berikut: [“Budi”, “Siti”, “Joko”].
Membuat Objek Tugas
- Buat beberapa objek Tugas dengan informasi berikut:
- Tugas 1: Nama tugas: “Desain Website”, Deadline: “10-12-2024”, Status: belum selesai.
- Tugas 2: Nama tugas: “Pengembangan Fitur”, Deadline: “20-12-2024”, Status: belum selesai.
- Tugas 3: Nama tugas: “Pengujian Website”, Deadline: “25-12-2024”, Status: selesai.
Membuat Objek Proyek
- Buat objek Proyek dengan informasi berikut:
- Nama Proyek: “Proyek Website Baru”
- Budget: 50000000 (50 juta)
- Durasi: 30 hari
- Tim yang bekerja: Tim Pengembangan
- Daftar Tugas: Tugas 1, Tugas 2, Tugas 3
Menggunakan Method
- Tampilkan informasi proyek, tim, dan tugas menggunakan method getter.
- Tambahkan satu tugas baru dengan nama “Pemasaran Website”, deadline “30-12-2024”, dan status belum selesai.
- Tambahkan satu anggota baru bernama “Ana” ke dalam tim proyek.
- Cek apakah proyek sudah selesai memanggil method
cekProyekSelesai().
Contoh Output yang Diharapkan:
Soal 5 - Sistem Manajemen Kendaraan
- Question
- Answer
Daftar Class
Daftar Class
Class Kendaraan (superclass)
- Properti:
noPlat(String): Nomor plat kendaraan (misalnya “B 1234 XYZ”).merk(String): Merk kendaraan (misalnya “Toyota”).tahunPembuatan(int): Tahun pembuatan kendaraan (misalnya 2020).
- Constructor:
- Constructor untuk menginisialisasi noPlat, merk, dan tahunPembuatan.
- Method:
getNoPlat(): Mengambil nomor plat kendaraan (getter).setNoPlat(String noPlat): Mengubah nomor plat kendaraan (setter).getMerk(): Mengambil merk kendaraan (getter).setMerk(String merk): Mengubah merk kendaraan (setter).getTahunPembuatan(): Mengambil tahun pembuatan kendaraan (getter).setTahunPembuatan(int tahunPembuatan): Mengubah tahun pembuatan kendaraan (setter).tampilkanInfo(): Menampilkan informasi dasar kendaraan (nomor plat, merk, tahun pembuatan).
Class Mobil (subclass dari Kendaraan)
- Properti:
jumlahPintu(int): Jumlah pintu mobil (misalnya 4).kapasitasPenumpang(int): Kapasitas penumpang mobil (misalnya 5).
- Constructor:
- Constructor untuk menginisialisasi noPlat, merk, tahunPembuatan, jumlahPintu, dan kapasitasPenumpang.
- Method:
getJumlahPintu(): Mengambil jumlah pintu mobil (getter).setJumlahPintu(int jumlahPintu): Mengubah jumlah pintu mobil (setter).getKapasitasPenumpang(): Mengambil kapasitas penumpang mobil (getter).setKapasitasPenumpang(int kapasitasPenumpang): Mengubah kapasitas penumpang mobil (setter).tampilkanInfo(): Menampilkan informasi lengkap kendaraan mobil, termasuk atribut dasar dari superclass Kendaraan dan atribut tambahan mobil.
Class Motor (subclass dari Kendaraan)
- Properti:
jenisTransmisi(String): Jenis transmisi motor (misalnya “Manual” atau “Otomatis”).kapasitasMesin(double): Kapasitas mesin motor dalam liter (misalnya 1.5L).
- Constructor:
- Constructor untuk menginisialisasi noPlat, merk, tahunPembuatan, jenisTransmisi, dan kapasitasMesin.
- Method:
getJenisTransmisi(): Mengambil jenis transmisi motor (getter).setJenisTransmisi(String jenisTransmisi): Mengubah jenis transmisi motor (setter).getKapasitasMesin(): Mengambil kapasitas mesin motor (getter).setKapasitasMesin(double kapasitasMesin): Mengubah kapasitas mesin motor (setter).tampilkanInfo(): Menampilkan informasi lengkap kendaraan motor, termasuk atribut dasar dari superclass Kendaraan dan atribut tambahan motor.
Deskripsi Main Class: MainSistemManajemenKendaraan
Deskripsi Main Class: MainSistemManajemenKendaraan
MainSistemManajemenKendaraan yang akan mendemonstrasikan pembuatan objek Kendaraan, Mobil, dan Motor, serta penggunaan konsep Inheritance. Ikuti instruksi berikut:Membuat Objek Kendaraan
- Buat objek Kendaraan dengan informasi berikut:
- Nomor Plat: “B 4321 XYZ”
- Merk: “Honda”
- Tahun Pembuatan: 2019
Membuat Objek mobil
- Buat objek Mobil dengan informasi berikut:
- Nomor Plat: “B 1234 ABC”
- Merk: “Toyota”
- Tahun Pembuatan: 2021
- Jumlah Pintu: 4
- Kapasitas Penumpang: 5
Membuat Objek Motor
- Buat objek Motor dengan informasi berikut:
- Nomor Plat: “B 5678 DEF”
- Merk: “Yamaha”
- Tahun Pembuatan: 2022
- Jenis Transmisi: “Manual”
- Kapasitas Mesin: 1.2L
Menggunakan Method
- Tampilkan informasi dari objek Kendaraan, Mobil, dan Motor menggunakan method
tampilkanInfo(). - Ubah nomor plat dari objek Mobil menjadi “B 9999 XYZ”.
- Ubah kapasitas mesin dari objek Motor menjadi 1.5L dan tampilkan kembali informasi motor tersebut.
Contoh Output yang Diharapkan:
Soal 6 - Sistem Pembayaran Toko Online
- Question
- Answer
Daftar Class
Daftar Class
Class Pembayaran (superclass)
- Properti:
jumlah(double): Jumlah yang akan dibayar (misalnya 100000).
- Constructor:
- Constructor untuk menginisialisasi jumlah.
- Method:
getJumlah(): Mengambil jumlah pembayaran (getter).setJumlah(double jumlah): Mengubah jumlah pembayaran (setter).prosesPembayaran(): Method umum untuk memproses pembayaran yang akan di-override pada subclass. Pada class ini, implementasinya kosong (akan di-override pada subclass).
Class KartuKredit (subclass dari Pembayaran)
- Properti:
nomorKartu(String): Nomor kartu kredit pelanggan.namaPemegangKartu(String): Nama pemegang kartu kredit.
- Constructor:
- Constructor untuk menginisialisasi jumlah, nomorKartu, dan namaPemegangKartu.
- Method:
prosesPembayaran(): Implementasi spesifik untuk pembayaran dengan Kartu Kredit: Menampilkan pesan “Pembayaran dilakukan dengan Kartu Kredit: [nomor kartu].”getNomorKartu(): Mengambil nomor kartu kredit (getter).setNomorKartu(String nomorKartu): Mengubah nomor kartu kredit (setter).getNamaPemegangKartu(): Mengambil nama pemegang kartu kredit (getter).setNamaPemegangKartu(String namaPemegangKartu): Mengubah nama pemegang kartu kredit (setter).
Class TransferBank (subclass dari Pembayaran)
- Properti:
nomorRekening(String): Nomor rekening bank pelanggan.namaBank(String): Nama bank tempat rekening tersebut berada.
- Constructor:
- Constructor untuk menginisialisasi jumlah, nomorRekening, dan namaBank.
- Method:
prosesPembayaran(): Implementasi spesifik untuk pembayaran dengan Transfer Bank: Menampilkan pesan “Pembayaran dilakukan melalui Transfer Bank ke nomor rekening: [nomor rekening] di [nama bank].”getNomorRekening(): Mengambil nomor rekening bank (getter).setNomorRekening(String nomorRekening): Mengubah nomor rekening bank (setter).getNamaBank(): Mengambil nama bank (getter).setNamaBank(String namaBank): Mengubah nama bank (setter).
Deskripsi Main Class: MainSistemPembayaran
Deskripsi Main Class: MainSistemPembayaran
MainSistemPembayaran yang akan mendemonstrasikan penggunaan Polymorphism dengan cara memanggil method prosesPembayaran() pada objek dari berbagai jenis metode pembayaran. Ikuti instruksi berikut:Membuat Objek Pembayaran dengan Kartu Kredit
- Buat objek KartuKredit dengan informasi berikut:
- Jumlah: 150000
- Nomor Kartu: “1234-5678-9101-1121”
- Nama Pemegang Kartu: “John Doe”
Membuat Objek Pembayaran dengan Transfer Bank
- Buat objek TransferBank dengan informasi berikut:
- Jumlah: 250000
- Nomor Rekening: “9876543210”
- Nama Bank: “Bank Mandiri”
Menggunakan Polymorphism
- Tampilkan informasi dan panggil method prosesPembayaran() untuk masing-masing objek (KartuKredit dan TransferBank).
- Demonstrasikan polymorphism dengan memanggil prosesPembayaran() pada objek Pembayaran, KartuKredit, dan TransferBank secara bergantian, meskipun mereka memiliki tipe yang berbeda.