Soal 1 - Sekolah
- Question
- Answer
Daftar Class
Daftar Class
Class Siswa
- Properti:
nama(String): Nama lengkap siswa.nis(String): Nomor Induk Siswa.kelas(String): Kelas tempat siswa belajar (misalnya “10A”, “12B”).
Class Guru
- Properti:
nama(String): Nama lengkap guru.idGuru(String): ID unik untuk guru.mataPelajaran(String): Mata pelajaran yang diajarkan oleh guru.
Deskripsi Main Class: MainSekolah
Deskripsi Main Class: MainSekolah
MainSekolah yang akan mendemonstrasikan pembuatan dan penggunaan objek dari class Siswa dan Guru. Ikuti instruksi berikut:Membuat Objek Siswa
- Buat objek pertama dari class
Siswadan ubah properti sebagai berikut:- Nama Siswa: “Budi Santoso”
- NIS: “S12345”
- Kelas: “10A”
- Buat objek kedua dari class
Siswadan ubah properti sebagai berikut:- Nama Siswa: “Ani Wijaya”
- NIS: “S67890”
- Kelas: “12B”
Membuat Objek Guru
- Buat objek pertama dari class
Gurudan ubah properti sebagai berikut:- Nama Guru: “Pak Joko”
- ID Guru: “G123”
- Mata Pelajaran: “Matematika”
- Buat objek kedua dari class
Gurudan ubah properti sebagai berikut:- Nama Guru: “Bu Siti”
- ID Guru: “G456”
- Mata Pelajaran: “Bahasa Indonesia”
Menampilkan Informasi
- Setelah objek-objek tersebut dibuat dan propertinya diatur, tampilkan informasi dari masing-masing objek ke layar dengan format berikut:
- Untuk setiap objek siswa, tampilkan:
Siswa [Nomor]: Nama: [nama], NIS: [nis], Kelas: [kelas] - Untuk setiap objek guru, tampilkan:
Guru [Nomor]: Nama: [nama], ID Guru: [idGuru], Mata Pelajaran: [mataPelajaran]
- Untuk setiap objek siswa, tampilkan:
Contoh Output yang Diharapkan:
Soal 2 - Perpustakaan
- Question
- Answer
Daftar Class
Daftar Class
Class Buku
- Properti:
judul(String): Judul buku (misalnya “Harry Potter”).penulis(String): Penulis buku (misalnya “J.K. Rowling”).harga(double): Harga buku dalam satuan IDR (misalnya 100000).
- Constructor:
- Constructor untuk menginisialisasi semua properti objek (judul, penulis, harga).
- Method:
tampilkanInformasi(): Menampilkan informasi lengkap tentang buku.hitungBiayaPeminjaman(int jumlahHari): Menghitung biaya peminjaman buku per hari berdasarkan harga buku (biaya per hari adalah 5% dari harga buku).
Deskripsi Main Class: MainPerpustakaan
Deskripsi Main Class: MainPerpustakaan
Membuat Objek Buku
- Buat objek pertama dari class
Bukudengan informasi berikut:- Judul: “Harry Potter”
- Penulis: “J.K. Rowling”
- Harga: 150000
- Buat objek kedua dari class
Bukudengan informasi berikut:- Judul: “The Hobbit”
- Penulis: “J.R.R. Tolkien”
- Harga: 120000
Menggunakan Method
- Tampilkan informasi tentang setiap buku menggunakan method
tampilkanInformasi(). - Hitung dan tampilkan biaya peminjaman untuk setiap buku berdasarkan jumlah hari peminjaman (misalnya pinjam selama 7 hari) menggunakan method
hitungBiayaPeminjaman(int jumlahHari)
Contoh Output yang Diharapkan:
Soal 3 - Toko Online
- Question
- Answer
- Nama Produk: Nama produk yang dijual di toko.
- Harga Produk: Harga dari setiap produk yang dijual.
- Stok Produk: Jumlah stok yang tersedia untuk produk tersebut.
Daftar Class
Daftar Class
Class Produk
- Properti:
namaProduk(String): Nama produk (misalnya ”Laptop”, ”Headphone”).harga(double): Harga produk dalam rupiah (misalnya 1000000).stok(int): Jumlah stok yang tersedia untuk produk
- Constructor:
- Constructor untuk menginisialisasi namaProduk, harga, dan stok saat objek dibuat.
- Method:
getNamaProduk(): Menampilkan nama produk (getter).setNamaProduk(String namaProduk): Mengubah nama produk (setter).getHarga(): Menampilkan harga produk (getter).setHarga(double harga): Mengubah harga produk (setter).getStok(): Menampilkan jumlah stok produk (getter).setStok(int stok): Mengubah jumlah stok produk (setter).hitungTotalHarga(int jumlahProduk): Menghitung total harga untuk pembelian sejumlah produk berdasarkan harga satuan produk.tambahStok(int jumlah): Menambah jumlah stok produk.kurangiStok(int jumlah): Mengurangi jumlah stok produk jika jumlah stok yang tersedia cukup, jika tidak tampilkan pesan error
Deskripsi Main Class: MainTokoOnline
Deskripsi Main Class: MainTokoOnline
MainTokoOnline yang akan mendemonstrasikan pembuatan objek Produk dan penggunaan method getter, setter, serta transaksi pembelian produk. Ikuti instruksi berikut:Membuat Objek Produk
- Buat objek pertama dari class Produk dengan informasi berikut:
- Nama Produk: ”Laptop”
- Harga: 1000000
- Stok: 50
- Buat objek kedua dari class Produk dengan informasi berikut:
- Nama Produk: ”Headphone”
- Harga: 200000
- Stok: 100
Menggunakan Getter dan Setter
- Tampilkan nama produk, harga, dan stok untuk kedua produk menggunakan method getter.
- Ubah nama produk untuk produk pertama menjadi ”Gaming Laptop” menggunakan method
setNamaProduk(). - Ubah harga untuk produk kedua menjadi 180000 menggunakan method
setHarga(). - Tampilkan kembali nama produk, harga, dan stok setelah perubahan.
Transaksi Pembelian dan Stok
- Hitung dan tampilkan total harga untuk membeli 3 produk ”Gaming Laptop” menggunakan method
hitungTotalHarga(). - Tambahkan stok untuk produk pertama sebanyak 20 menggunakan method
tambahStok(). - Kurangi stok untuk produk kedua sebanyak 5 menggunakan method
kurangiStok(). - Tampilkan kembali stok setelah dilakukan penambahan dan pengurangan.
Contoh Output yang Diharapkan:
Soal 4 - Sistem Manajemen Perpustakaan
- Question
- Answer
Daftar Class
Daftar Class
Class Pengarang
- Properti:
namaPengarang(String): Nama pengarang buku (misalnya “J.K. Rowling”).tahunLahir(int): Tahun lahir pengarang (misalnya 1965).daftarBuku(List): Daftar buku yang ditulis oleh pengarang ini.
- Constructor:
- Constructor untuk menginisialisasi namaPengarang dan tahunLahir, serta menginisialisasi daftar daftarBuku
- Method:
getNamaPengarang(): Mengambil nama pengarang (getter).setNamaPengarang(String namaPengarang): Mengubah nama pengarang (setter).getTahunLahir(): Mengambil tahun lahir pengarang (getter).setTahunLahir(int tahunLahir): Mengubah tahun lahir pengarang (setter).getDaftarBuku(): Mengambil daftar buku yang ditulis pengarang ini.tambahBuku(Buku buku): Menambahkan buku baru yang ditulis oleh pengarang ini.
Class KategoriBuku
- Properti:
namaKategori(String): Nama kategori buku (misalnya ”Fiksi”, ”Non-Fiksi”).daftarBuku(List): Daftar buku yang termasuk dalam kategori ini.
- Constructor:
- Constructor untuk menginisialisasi namaKategori dan daftarBuku.
- Method:
getNamaKategori(): Mengambil nama kategori buku (getter).setNamaKategori(String namaKategori): Mengubah nama kategori buku (setter).getDaftarBuku(): Mengambil daftar buku yang termasuk dalam kategori ini.tambahBuku(Buku buku): Menambahkan buku baru ke dalam kategori ini.
Class Buku
- Properti:
judul(String): Judul buku (misalnya ”Harry Potter and the Sorcerer’s Stone”).tahunTerbit(int): Tahun penerbitan buku (misalnya 1997).statusTersedia(boolean): Status ketersediaan buku (true jika buku tersedia, false jika dipinjam).pengarang(Pengarang): Objek pengarang yang menulis buku ini.kategori(KategoriBuku): Objek kategori buku yang terkait dengan buku ini.
- Constructor:
- Constructor untuk menginisialisasi judul, tahunTerbit, statusTersedia, pengarang, dan kategori.
- Method:
getJudul(): Mengambil judul buku (getter).setJudul(String judul): Mengubah judul buku (setter).getTahunTerbit(): Mengambil tahun terbit buku (getter).setTahunTerbit(int tahunTerbit): Mengubah tahun terbit buku (setter).getStatusTersedia(): Mengambil status ketersediaan buku (getter).setStatusTersedia(boolean statusTersedia): Mengubah status ketersediaan buku (setter).getPengarang(): Mengambil pengarang buku (getter).getKategori(): Mengambil kategori buku (getter).pinjamBuku(): Mengubah status buku menjadi tidak tersedia (dipinjam).kembalikanBuku(): Mengubah status buku menjadi tersedia kembali.
Deskripsi Main Class: MainSistemPerpustakaan
Deskripsi Main Class: MainSistemPerpustakaan
MainSistemPerpustakaan yang akan mendemonstrasikan pembuatan objek Buku, Pengarang, dan KategoriBuku, serta penggunaan method Object Composition untuk mengelola buku-buku yang ada di perpustakaan. Ikuti instruksi berikut:Membuat Objek Pengarang
- Buat objek Pengarang dengan informasi berikut:
- Nama Pengarang: ”J.K. Rowling”
- Tahun Lahir: 1965
Membuat Objek KategoriBuku
- Buat objek KategoriBuku dengan informasi berikut:
- Nama Kategori: ”Fiksi”
- Buat objek KategoriBuku lainnya dengan nama kategori ”NonFiksi”.
Membuat Objek Buku
- Buat beberapa objek Buku dengan informasi berikut:
- Buku 1: Judul: ”Harry Potter and the Sorcerer’s Stone”, Tahun Terbit: 1997, Status: Tersedia, Pengarang: ”J.K. Rowling”, Kategori: ”Fiksi”
- Buku 2: Judul: ”Harry Potter and the Chamber of Secrets”, Tahun Terbit: 1998, Status: Tersedia, Pengarang: ”J.K. Rowling”, Kategori: ”Fiksi”
- Buku 3: Judul: ”The Intelligent Investor”, Tahun Terbit: 1949, Status: Tersedia, Pengarang: ”Benjamin Graham”, Kategori: ”Non-Fiksi”
Menambahkan Buku ke Pengarang dan Kategori
- Tambahkan Buku 1 dan Buku 2 ke dalam daftar buku pengarang ”J.K. Rowling”.
- Tambahkan Buku 3 ke dalam daftar buku kategori ”Non-Fiksi”.
Menggunakan Method
- Tampilkan informasi tentang pengarang dan buku yang ditulis menggunakan method getter.
- Tampilkan informasi tentang kategori dan daftar buku yang ada di kategori tersebut.
- Lakukan peminjaman buku Buku 1 dan Buku 3, kemudian tampilkan status ketersediaan buku setelah dipinjam.
- Kembalikan Buku 1 dan Buku 3, kemudian tampilkan status ketersediaan buku setelah dikembalikan.
Contoh Output yang Diharapkan:
Soal 5 - Sistem Manajemen Pegawai
- Question
- Answer
Daftar Class
Daftar Class
Class Pegawai (superclass)
- Properti:
nama(String): Nama pegawai (misalnya ”Budi”).nik(String): Nomor induk karyawan (misalnya ”12345”).jabatan(String): Jabatan pegawai (misalnya ”Manajer” atau ”Karyawan”).gajiPokok(double): Gaji pokok pegawai (misalnya 5000000).
- Constructor:
- Constructor untuk menginisialisasi nama, nik, jabatan, dan gajiPokok.
- Method:
getNama(): Mengambil nama pegawai (getter).setNama(String nama): Mengubah nama pegawai (setter).getNik(): Mengambil nomor induk pegawai (getter).setNik(String nik): Mengubah nomor induk pegawai (setter).getJabatan(): Mengambil jabatan pegawai (getter).setJabatan(String jabatan): Mengubah jabatan pegawai (setter).getGajiPokok(): Mengambil gaji pokok pegawai (getter).setGajiPokok(double gajiPokok): Mengubah gaji pokok pegawai (setter).tampilkanInfo(): Menampilkan informasi dasar pegawai (nama, NIK, jabatan, gaji pokok).
Class Manajer (subclass dari Pegawai)
- Properti:
departemen(String): Departemen yang dipimpin manajer (misalnya ”Keuangan” atau ”IT”).bonus(double): Bonus yang diterima manajer (misalnya 2000000).
- Constructor:
- Constructor untuk menginisialisasi nama, nik, jabatan, gajiPokok, departemen, dan bonus.
- Method:
getDepartemen(): Mengambil nama departemen yang dipimpin (getter).setDepartemen(String departemen): Mengubah nama departemen yang dipimpin (setter).getBonus(): Mengambil bonus manajer (getter).setBonus(double bonus): Mengubah bonus manajer (setter).tampilkanInfo(): Menampilkan informasi lengkap manajer, termasuk atribut dasar dari superclass Pegawai dan atribut tambahan manajer.
Class Karyawan (subclass dari Pegawai)
- Properti:
jamLembur(int): Jumlah jam lembur yang dikerjakan oleh karyawan (misalnya 10 jam).
- Constructor:
- Constructor untuk menginisialisasi nama, nik, jabatan, gajiPokok, dan jamLembur.
- Method:
getJamLembur(): Mengambil jumlah jam lembur karyawan (getter).setJamLembur(int jamLembur): Mengubah jumlah jam lembur karyawan (setter).tampilkanInfo(): Menampilkan informasi lengkap karyawan, termasuk atribut dasar dari superclass Pegawai dan atribut tambahan karyawan.
Deskripsi Main Class: MainSistemManajemenPegawai
Deskripsi Main Class: MainSistemManajemenPegawai
MainSistemManajemenPegawai yang akan mendemonstrasikan pembuatan objek Pegawai, Manajer, dan Karyawan, serta penggunaan konsep Inheritance. Ikuti instruksi berikut:Membuat Objek Pegawai
- Buat objek Pegawai dengan informasi berikut:
- Nama: ”Rina”
- NIK: ”12345”
- Jabatan: ”Karyawan”
- Gaji Pokok: 4500000
Membuat Objek Manajer
- Buat objek Manajer dengan informasi berikut:
- Nama: ”Andi”
- NIK: ”23456”
- Jabatan: ”Manajer”
- Gaji Pokok: 7000000
- Departemen: ”Keuangan”
- Bonus: 3000000
Membuat Objek Karyawan
- Nama: ”Siti”
- NIK: ”34567”
- Jabatan: ”Karyawan”
- Gaji Pokok: 5000000
- Jam Lembur: 15 jam
Menggunakan Method
- Tampilkan informasi dari objek Pegawai, Manajer, dan Karyawan menggunakan method
tampilkanInfo(). - Ubah jam lembur dari objek Karyawan menjadi 20 jam dan tampilkan kembali informasi karyawan tersebut.
- Ubah bonus dari objek Manajer menjadi 4000000 dan tampilkan kembali informasi manajer tersebut.
Contoh Output yang Diharapkan:
Soal 6 - Sistem Pengiriman Barang
- Question
- Answer
hitungBiayaPengiriman() akan di-override pada subclass yang berbeda.Daftar Class
Daftar Class
Class Pengiriman (superclass)
- Properti:
beratBarang(double): Berat barang yang akan dikirim (misalnya 5.5 kg).jarak(double): Jarak pengiriman dalam kilometer (misalnya 150 km).
- Constructor:
- Constructor untuk menginisialisasi beratBarang dan jarak.
- Method:
getBeratBarang(): Mengambil berat barang (getter).setBeratBarang(double beratBarang): Mengubah berat barang (setter).getJarak(): Mengambil jarak pengiriman (getter).setJarak(double jarak): Mengubah jarak pengiriman (setter).hitungBiayaPengiriman(): Method umum untuk menghitung biaya pengiriman yang akan di-override pada subclass. Pada class ini, implementasinya kosong (akan di-override pada subclass).
Class PengirimanEkspres (subclass dari Pengiriman)
- Properti:
- Tidak ada properti tambahan, cukup menggunakan properti yang diwarisi dari Pengiriman.
- Constructor:
- Constructor untuk menginisialisasi beratBarang dan jarak.
- Method:
hitungBiayaPengiriman(): Implementasi spesifik untuk Pengiriman Ekspres: Menghitung biaya pengiriman dengan rumus: biaya = (beratBarang * 2000) + (jarak * 1000).- Contoh: Jika berat barang 5 kg dan jarak 150 km, maka biaya ekspres adalah (5 * 2000) + (150 * 1000) = 10000 + 150000 = 160000.
Class PengirimanReguler (subclass dari Pengiriman)
- Properti:
- Tidak ada properti tambahan, cukup menggunakan properti yang diwarisi dari Pengiriman.
- Constructor:
- Constructor untuk menginisialisasi beratBarang dan jarak.
- Method:
hitungBiayaPengiriman(): Implementasi spesifik untuk Pengiriman Reguler: Menghitung biaya pengiriman dengan rumus: biaya = (beratBarang * 1000) + (jarak * 500).- Contoh: Jika berat barang 5 kg dan jarak 150 km, maka biaya reguler adalah (5 * 1000) + (150 * 500) = 5000 + 75000 = 80000.
Deskripsi Main Class: MainSistemPengiriman
Deskripsi Main Class: MainSistemPengiriman
hitungBiayaPengiriman() pada objek dari berbagai jenis pengiriman. Ikuti instruksi berikut:Membuat Objek Pengiriman Ekspres
- Buat objek PengirimanEkspres dengan informasi berikut:
- Berat Barang: 10 kg
- Jarak: 200 km.
Membuat Objek Pengiriman Reguler
- Buat objek PengirimanReguler dengan informasi berikut:
- Berat Barang: 10 kg
- Jarak: 200 km.
Menggunakan Polymorphism
- Tampilkan informasi dan panggil method
hitungBiayaPengiriman()untuk masing-masing objek (PengirimanEkspres dan PengirimanReguler). - Demonstrasikan polymorphism dengan memanggil
hitungBiayaPengiriman()pada objek Pengiriman, PengirimanEkspres, dan PengirimanReguler secara bergantian, meskipun mereka memiliki tipe yang berbeda.