> ## Documentation Index
> Fetch the complete documentation index at: https://v1-learn.neoartd.my.id/llms.txt
> Use this file to discover all available pages before exploring further.

# UTS A

# Soal 1 - Perpustakaan

<Tabs>
  <Tab title="Question">
    Di sebuah perpustakaan, terdapata **Buku** dan **Pustakawan**. Setiap buku memiliki beberapa properti yang menjelaskan tentang buku tersebut, seperti **judul**, **pengarang**, dan **tahun terbit**. Sedangkan setiap pustakawan memiliki beberapa properti yang menjelaskan identitas mereka, seperti **nama** dan **ID karyawan**.

    Tugas Anda adalah mendesain dua class, **Buku** dan **Pustakawan**, serta mengatur objek-objek dari kedua class tersebut di dalam class **MainPerpustakaan**.

    <AccordionGroup>
      <Accordion title="Daftar Class">
        <Steps>
          <Step title="Class Buku">
            * Properti:
              * `judul` (String): Judul buku.
              * `pengarang` (String): Nama pengarang buku.
              * `tahunTerbit` (int): Tahun terbit buku.
          </Step>

          <Step title="Class Pustakawan">
            * Properti:
              * `nama` (String): Nama pustakawan.
              * `idKaryawan` (String): ID unik karyawan pustakawan.
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="Deskripsi Main Class: MainPerpustakaan">
        Buatlah sebuah **Main Class** bernama `MainPerpustakaan` yang akan mendemonstrasikan pembuatan dan penggunaan objek dari class **Buku** dan **Pustakawan**. Ikuti instruksi berikut:

        <Steps>
          <Step title="Membuat Objek Buku">
            * Buat objek pertama dari class `Buku` dan ubah properti sebagai berikut:
              * **Judul Buku**: "Pemrograman Java"
              * **Pengarang**: "John Doe"
              * **Tahun Terbit**: 2020
            * Buat objek kedua dari class `Buku` dan ubah properti sebagai berikut:
              * **Judul Buku**: "Algoritma dan Struktur Data"
              * **Pengarang**: "Jane Smith"
              * **Tahun Terbit**: 2022
          </Step>

          <Step title="Membuat Objek Pustakawan">
            * Buat objek pertama dari class `Pustakawan` dan ubah properti sebagai berikut:
              * **Nama**: "Andi"
              * **ID Karyawan**: "P123"
            * Buat objek kedua dari class `Pustakawan` dan ubah properti sebagai berikut:
              * **Nama**: "Siti"
              * **ID Karyawan**: "P456"
          </Step>

          <Step title="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]`
          </Step>
        </Steps>
      </Accordion>
    </AccordionGroup>

    ## Contoh Output yang Diharapkan:

    ```bash theme={null}
    Buku 1: Judul: Pemrograman Java, Pengarang: John Doe, Tahun Terbit: 2020
    Buku 2: Judul: Algoritma dan Struktur Data, Pengarang: Jane Smith, Tahun Terbit: 2022
    Pustakawan 1: Nama: Andi, ID Karyawan: P123
    Pustakawan 2: Nama: Siti, ID Karyawan: P456
    ```
  </Tab>

  <Tab title="Answer">
    <CodeGroup>
      ```java Buku.java theme={null}
      public class Buku {
          public String judul;
          public String pengarang;
          public int tahunTerbit;
      }
      ```

      ```java Pustakawan.java theme={null}
      public class Pustakawan {
          public String nama;
          public String idKaryawan;
      }
      ```

      ```java MainPerpustakaan.java theme={null}
      public class MainPerpustakaan {
          public static void main(String[] args) {
              Buku buku1 = new Buku();
              buku1.judul = "Pemrograman Java";
              buku1.pengarang = "John Doe";
              buku1.tahunTerbit = 2020;

              Buku buku2 = new Buku();
              buku2.judul = "Algoritma dan Struktur Data";
              buku2.pengarang = "Jane Smith";
              buku2.tahunTerbit = 2022;

              Pustakawan pustakawan1 = new Pustakawan();
              pustakawan1.nama = "Andi";
              pustakawan1.idKaryawan = "P123";

              Pustakawan pustakawan2 = new Pustakawan();
              pustakawan2.nama = "Siti";
              pustakawan2.idKaryawan = "P456";

              System.out.printf("Buku 1: Judul: %s, Pengarang: %s, Tahun Terbit: %d\n", buku1.judul, buku1.pengarang, buku1.tahunTerbit);
              System.out.printf("Buku 2: Judul: %s, Pengarang: %s, Tahun Terbit: %d\n", buku2.judul, buku2.pengarang, buku2.tahunTerbit);
              System.out.printf("Pustakawan 1: Nama: %s, ID Karyawan: %s\n", pustakawan1.nama, pustakawan1.idKaryawan);
              System.out.printf("Pustakawan 2: Nama: %s, ID Karyawan: %s\n", pustakawan2.nama, pustakawan2.idKaryawan);
          }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

# Soal 2 - Toko Elektronik

<Tabs>
  <Tab title="Question">
    Di sebuah toko elektronik, terdapat smartphone yang memiliki informasi seperti **merk**, **model**, **kapasitas penyimpanan**, dan **harga**. Toko tersebut ingin menampilkan informasi produk serta menghitung harga smartphone berdasarkan persentase diskon.

    Tugas Anda adalah membuat class untuk smartphone tersebut, menambahkan constructor untuk inisialisasi objek, serta method untuk menampilkan informasi dan menghitung diskon.

    <AccordionGroup>
      <Accordion title="Daftar Class">
        <Steps>
          <Step title="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.
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="Deskripsi Main Class: MainTokoElektronik">
        Buatlah sebuah **Main Class** bernama `MainTokoElektronik` yang akan mendemonstrasikan pembuatan dan penggunaan objek dari class **Smartphone** dan **Laptop**. Ikuti instruksi berikut:

        <Steps>
          <Step title="Membuat Objek Smartphone">
            * Buat objek pertama dari class `Smartphone` dengan informasi berikut:
              * **Merk**: "Samsung"
              * **Model**: "Galaxy S23"
              * **Kapasitas Penyimpanan**: 256 GB
              * **Harga**: 15000000
            * Buat objek kedua dari class `Smartphone` dengan informasi berikut:
              * **Merk**: "Apple"
              * **Model**: "iPhone 14"
              * **Kapasitas Penyimpanan**: 128 GB
              * **Harga**: 17000000
          </Step>

          <Step title="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)`.
          </Step>
        </Steps>
      </Accordion>
    </AccordionGroup>

    ## Contoh Output yang Diharapkan:

    ```bash theme={null}
    Smartphone 1: Merk: Samsung, Model: Galaxy S23, Kapasitas Penyimpanan: 256 GB, Harga: 15000000
    Harga diskon 10%: 13500000.0

    Smartphone 2: Merk: Apple, Model: iPhone 14, Kapasitas Penyimpanan: 128 GB, Harga: 17000000
    Harga diskon 10%: 15300000.0
    ```
  </Tab>

  <Tab title="Answer">
    <CodeGroup>
      ```java Smartphone.java theme={null}
      public class Smartphone {
          public String merk;
          public String model;
          public int kapasitasPenyimpanan;
          public double harga;

          public Smartphone(String merk, String model, int kapasitasPenyimpanan, double harga) {
              this.merk = merk;
              this.model = model;
              this.kapasitasPenyimpanan = kapasitasPenyimpanan;
              this.harga = harga;
          }

          public void tampilkanInformasi() {
              System.out.printf("Merk: %s, Model: %s, Kapasitas Penyimpanan: %d GB, Harga: %f\n", merk, model, kapasitasPenyimpanan, harga);
          }

          public void hitungHargaDiskon(double persenDiskon) {
              double diskon = harga * persenDiskon / 100;
              double hargaDiskon = harga - diskon;
              System.out.printf("Harga diskon %.0f%%: %.1f\n", persenDiskon, hargaDiskon);
          }
      }
      ```

      ```java MainTokoElektronik.java theme={null}
      public class MainTokoElektronik {
          public static void main(String[] args) {
              Smartphone smartphone1 = new Smartphone("Samsung", "Galaxy S23", 256, 15000000);
              Smartphone smartphone2 = new Smartphone("Apple", "iPhone 14", 128, 17000000);

              smartphone1.tampilkanInformasi();
              smartphone1.hitungHargaDiskon(10);

              smartphone2.tampilkanInformasi();
              smartphone2.hitungHargaDiskon(10);
          }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

# Soal 3 - Aplikasi Bank

<Tabs>
  <Tab title="Question">
    Di dalam aplikasi bank, setiap pengguna memiliki **Akun** yang menyimpan informasi sensitif seperti **nomor akun**, **nama**, dan **saldo**. Setiap akun pengguna memiliki fitur-fitur berikut:

    1. **Nomor Akun** yang hanya bisa dibaca setelah akun dibuat dan tidak bisa diubah.
    2. **Nama Pengguna** yang dapat diubah oleh pengguna kapan saja.
    3. **Saldo** yang dapat ditambahkan atau dikurangi melalui transaksi, namun hanya dapat diakses melalui method tertentu untuk menjaga keamanan.

    Anda diminta untuk membuat class **AkunPengguna** yang menggunakan **access modifiers** untuk melindungi informasi sensitif, dan menambahkan **getter** dan **setter** untuk mengakses dan memodifikasi data pengguna.

    <AccordionGroup>
      <Accordion title="Daftar Class">
        <Steps>
          <Step title="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.
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="Deskripsi Main Class: MainAplikasiBank">
        Buatlah sebuah **Main Class** bernama `MainAplikasiBank` yang akan mendemonstrasikan pembuatan objek **AkunPengguna** dan penggunaan method getter, setter, dan transaksi saldo. Ikuti instruksi berikut:

        <Steps>
          <Step title="Membuat Objek Akun Pengguna">
            * Buat objek pertama dari class `AkunPengguna` dengan informasi berikut:
              * **Nomor Akun**: "12345"
              * **Nama**: "Budi Santoso"
              * **Saldo**: 500000
            * Buat objek kedua dari class `AkunPengguna` dengan informasi berikut:
              * **Nomor Akun**: "67890"
              * **Nama**: "Sarah Wijaya"
              * **Saldo**: 750000
          </Step>

          <Step title="Menggunakan Getter dan Setter">
            * Tampilkan **nomor akun** dan **nama** untuk kedua akun menggunakan method `getNomorAkun()` dan `getNama()`.
            * Ubah **nama** untuk akun pertama menjadi "Budi Setiawan" menggunakan method `setNama()`.
            * Tampilkan saldo untuk kedua akun menggunakan method `getSaldo()`.
          </Step>

          <Step title="Transaksi Saldo">
            * Tambahkan saldo sebesar 100000 untuk akun pertama menggunakan method `tambahSaldo()`.
            * Kurangi saldo sebesar 200000 untuk akun kedua menggunakan method `kurangiSaldo()`.
          </Step>

          <Step title="Tampilkan Semua Informasi">
            * Tampilkan nomor akun, nama, dan saldo setelah transaksi untuk kedua akun.
          </Step>
        </Steps>
      </Accordion>
    </AccordionGroup>

    ## Contoh Output yang Diharapkan:

    ```bash theme={null}
    Akun 1: Nomor Akun: 12345, Nama: Budi Santoso, Saldo: 500000
    Akun 2: Nomor Akun: 67890, Nama: Sarah Wijaya, Saldo: 750000

    Setelah update nama:
    Akun 1: Nomor Akun: 12345, Nama: Budi Setiawan, Saldo: 500000

    Setelah transaksi saldo:
    Akun 1: Nomor Akun: 12345, Nama: Budi Setiawan, Saldo: 600000
    Akun 2: Nomor Akun: 67890, Nama: Sarah Wijaya, Saldo: 550000
    ```
  </Tab>

  <Tab title="Answer">
    <CodeGroup>
      ```java AkunPengguna.java theme={null}
      public class AkunPengguna {
          private final String nomorAkun;
          private String nama;
          private double saldo;

          public AkunPengguna(String nomorAkun, String nama, double saldo) {
              this.nomorAkun = nomorAkun;
              this.nama = nama;
              this.saldo = saldo;
          }

          public String getNomorAkun() {
              return nomorAkun;
          }

          public String getNama() {
              return nama;
          }

          public void setNama(String nama) {
              this.nama = nama;
          }

          public double getSaldo() {
              return saldo;
          }

          public void tambahSaldo(double jumlah) {
              saldo += jumlah;
          }

          public void kurangiSaldo(double jumlah) {
              saldo -= jumlah;
          }
      }
      ```

      ```java MainAplikasiBank.java theme={null}
      public class MainAplikasiBank {
          public static void main(String[] args) {
              AkunPengguna akun1 = new AkunPengguna("12345", "Budi Santoso", 500000);
              AkunPengguna akun2 = new AkunPengguna("67890", "Sarah Wijaya", 750000);

              System.out.printf("Akun 1: Nomor Akun: %s, Nama: %s, Saldo: %f\n", akun1.getNomorAkun(), akun1.getNama(), akun1.getSaldo());
              System.out.printf("Akun 2: Nomor Akun: %s, Nama: %s, Saldo: %f\n", akun2.getNomorAkun(), akun2.getNama(), akun2.getSaldo());

              akun1.setNama("Budi Setiawan");
              System.out.printf("\nSetelah update nama:\n");
              System.out.printf("Akun 1: Nomor Akun: %s, Nama: %s, Saldo: %f\n", akun1.getNomorAkun(), akun1.getNama(), akun1.getSaldo());

              akun1.tambahSaldo(100000);
              akun2.kurangiSaldo(200000);
              System.out.printf("\nSetelah transaksi saldo:\n");
              System.out.printf("Akun 1: Nomor Akun: %s, Nama: %s, Saldo: %f\n", akun1.getNomorAkun(), akun1.getNama(), akun1.getSaldo());
              System.out.printf("Akun 2: Nomor Akun: %s, Nama: %s, Saldo: %f\n", akun2.getNomorAkun(), akun2.getNama(), akun2.getSaldo());
          }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

# Soal 4 - Sistem Manajemen Proyek

<Tabs>
  <Tab title="Question">
    Di sebuah perusahaan, setiap proyek yang dijalankan memiliki beberapa elemen penting, yaitu **tim**, **budget**, dan **durasi** proyek. Setiap proyek terdiri dari beberapa **tugas** yang perlu diselesaikan oleh tim. Setiap tugas memiliki informasi tentang **nama**, **tugas**, **tanggal deadline**, dan **status** apakah tugas tersebut sudah selesai atau belum.

    Anda diminta untuk membuat sistem yang mengelola **Proyek** dan **Tugas** menggunakan **Object Composition**, di mana setiap **Proyek** akan memiliki beberapa **Tugas** dan setiap **Tugas** akan terkait dengan atribut **nama tugas**, **deadline**, dan **status**. **Tim** yang bekerja pada proyek juga harus dicatat sebagai bagian dari proyek tersebut.

    <AccordionGroup>
      <Accordion title="Daftar Class">
        <Steps>
          <Step title="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 (`true` jika selesai, `false` jika 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).
          </Step>

          <Step title="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.
          </Step>

          <Step title="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 (mengembalikan `true` jika semua tugas selesai, `false` jika ada tugas yang belum selesai).
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="Deskripsi Main Class: MainSistemManajemenProyek">
        Buatlah sebuah **Main Class** bernama `MainSistemManajemenProyek` yang akan mendemonstrasikan pembuatan objek **Proyek**, **Tim**, dan **Tugas**, serta penggunaan method **Object Composition** untuk mengelola proyek dan tugas. Ikuti instruksi berikut:

        <Steps>
          <Step title="Membuat Objek Tim">
            * Buat objek **Tim** untuk proyek dengan nama tim "Tim Pengembangan" dan daftar anggota sebagai berikut: \["Budi", "Siti", "Joko"].
          </Step>

          <Step title="Membuat Objek Tugas">
            * Buat beberapa objek **Tugas** dengan informasi berikut:
              1. Tugas 1: Nama tugas: "Desain Website", Deadline: "10-12-2024", Status: belum selesai.
              2. Tugas 2: Nama tugas: "Pengembangan Fitur", Deadline: "20-12-2024", Status: belum selesai.
              3. Tugas 3: Nama tugas: "Pengujian Website", Deadline: "25-12-2024", Status: selesai.
          </Step>

          <Step title="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
          </Step>

          <Step title="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()`.
          </Step>
        </Steps>
      </Accordion>
    </AccordionGroup>

    ## Contoh Output yang Diharapkan:

    ```bash theme={null}
    Proyek: Proyek Website Baru, Budget: 50000000, Durasi: 30 hari
    Tim: Tim Pengembangan
    Anggota Tim: [Budi, Siti, Joko]
    Tugas dalam Proyek:
    1. Desain Website, Deadline: 10-12-2024, Status: Belum Selesai
    2. Pengembangan Fitur, Deadline: 20-12-2024, Status: Belum Selesai
    3. Pengujian Website, Deadline: 25-12-2024, Status: Selesai

    Menambahkan tugas baru: Pemasaran Website, Deadline: 30-12-2024
    Menambahkan anggota baru: Ana

    Setelah perubahan:
    Anggota Tim: [Budi, Siti, Joko, Ana]

    Proyek Selesai: false
    ```
  </Tab>

  <Tab title="Answer">
    <CodeGroup>
      ```java Tugas.java theme={null}
      public class Tugas {
          private String namaTugas;
          private String deadline;
          private boolean status;

          public Tugas(String namaTugas, String deadline, boolean status) {
              this.namaTugas = namaTugas;
              this.deadline = deadline;
              this.status = status;
          }

          public String getNamaTugas() {
              return namaTugas;
          }

          public void setNamaTugas(String namaTugas) {
              this.namaTugas = namaTugas;
          }

          public String getDeadline() {
              return deadline;
          }

          public void setDeadline(String deadline) {
              this.deadline = deadline;
          }

          public boolean isSelesai() {
              return status;
          }

          public void setStatus(boolean status) {
              this.status = status;
          }
      }
      ```

      ```java Tim.java theme={null}
      import java.util.List;

      public class Tim {
          private String namaTim;
          private List<String> anggota;

          public Tim(String namaTim, List<String> anggota) {
              this.namaTim = namaTim;
              this.anggota = anggota;
          }

          public String getNamaTim() {
              return namaTim;
          }

          public void setNamaTim(String namaTim) {
              this.namaTim = namaTim;
          }

          public List<String> getAnggota() {
              return anggota;
          }

          public void setAnggota(List<String> anggota) {
              this.anggota = anggota;
          }

          public void tambahAnggota(String namaAnggota) {
              anggota.add(namaAnggota);
          }
      }
      ```

      ```java Proyek.java theme={null}
      import java.util.List;

      public class Proyek {
          private String namaProyek;
          private double budget;
          private int durasi;
          private Tim timProyek;
          private List<Tugas> daftarTugas;

          public Proyek(String namaProyek, double budget, int durasi, Tim timProyek, List<Tugas> daftarTugas) {
              this.namaProyek = namaProyek;
              this.budget = budget;
              this.durasi = durasi;
              this.timProyek = timProyek;
              this.daftarTugas = daftarTugas;
          }

          public String getNamaProyek() {
              return namaProyek;
          }

          public void setNamaProyek(String namaProyek) {
              this.namaProyek = namaProyek;
          }

          public double getBudget() {
              return budget;
          }

          public void setBudget(double budget) {
              this.budget = budget;
          }

          public int getDurasi() {
              return durasi;
          }

          public void setDurasi(int durasi) {
              this.durasi = durasi;
          }

          public Tim getTimProyek() {
              return timProyek;
          }

          public void setTimProyek(Tim timProyek) {
              this.timProyek = timProyek;
          }

          public List<Tugas> getDaftarTugas() {
              return daftarTugas;
          }

          public void setDaftarTugas(List<Tugas> daftarTugas) {
              this.daftarTugas = daftarTugas;
          }

          public void tambahTugas(Tugas tugas) {
              daftarTugas.add(tugas);
              System.out.printf("\nMenambahkan tugas baru: %s, Deadline: %s", tugas.getNamaTugas(), tugas.getDeadline());
          }

          public void tambahAnggotaKeTim(String namaAnggota) {
              timProyek.tambahAnggota(namaAnggota);
              System.out.printf("\nMenambahkan anggota baru: %s\n", namaAnggota);
          }

          public boolean cekProyekSelesai() {
              for (Tugas tugas : daftarTugas) {
                  if (!tugas.isSelesai()) {
                      return false;
                  }
              }
              return true;
          }
      }
      ```

      ```java MainSistemManajemenProyek.java theme={null}
      import java.util.ArrayList;
      import java.util.List;

      public class MainSistemManajemenProyek {
          public static void main(String[] args) {
              List<String> anggotaTim = new ArrayList<>();
              anggotaTim.add("Budi");
              anggotaTim.add("Siti");
              anggotaTim.add("Joko");

              Tim timProyek = new Tim("Tim Pengembangan", anggotaTim);

              Tugas tugas1 = new Tugas("Desain Website", "10-12-2024", false);
              Tugas tugas2 = new Tugas("Pengembangan Fitur", "20-12-2024", false);
              Tugas tugas3 = new Tugas("Pengujian Website", "25-12-2024", true);

              List<Tugas> daftarTugas = new ArrayList<>();
              daftarTugas.add(tugas1);
              daftarTugas.add(tugas2);
              daftarTugas.add(tugas3);

              Proyek proyek = new Proyek("Proyek Website Baru", 50000000, 30, timProyek, daftarTugas);

              System.out.printf("Proyek: %s, Budget: %f, Durasi: %d hari\n", proyek.getNamaProyek(), proyek.getBudget(),
                      proyek.getDurasi());
              System.out.printf("Tim: %s\n", proyek.getTimProyek().getNamaTim());
              System.out.printf("Anggota Tim: %s\n", proyek.getTimProyek().getAnggota());

              System.out.println("Tugas dalam Proyek:");

              int i = 1;
              for (Tugas tugas : proyek.getDaftarTugas()) {
                  System.out.printf("%d. %s, Deadline: %s, Status: %s\n", i++, tugas.getNamaTugas(), tugas.getDeadline(),
                          tugas.isSelesai() ? "Selesai" : "Belum Selesai");
              }

              Tugas tugas4 = new Tugas("Pemasaran Website", "30-12-2024", false);
              proyek.tambahTugas(tugas4);

              proyek.tambahAnggotaKeTim("Ana");

              System.out.println("\nSetelah perubahan:");
              System.out.printf("Anggota Tim: %s\n", proyek.getTimProyek().getAnggota());
              System.out.printf("\nProyek Selesai: %s", proyek.cekProyekSelesai());
          }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

# Soal 5 - Sistem Manajemen Kendaraan

<Tabs>
  <Tab title="Question">
    Di sebuah perusahaan penyewaaan kendaraan, terdapat beberapa jenis kendaraan yang dapat disewa, seperti **Mobil** dan **Motor**. Setiap kendaraan memiliki informasi dasar seperti **nomor plat**, **merk**, dan **tahun pembuatan**. Namun, mobil dan motor memiliki karakteristik tambahan yang berbeda. Mobil memiliki **jumlah pintu** dan **kapasitas penumpang**, sedangan motor memiliki **jenis transmisi** (manual atau otomatis) dan **kapasitas mesin**.

    Anda diminta untuk membuat sistem manajemen kendaraan yang menggunakan konsep **Inheritance**. Anda akan membuat class dasar **Kendaraan**, yang memiliki atribut umum untuk semua kendaraan, dan dua class turunan **Mobil** dan **Motor** yang menambahkan atribut khusus sesuai dengan tipe kendaraan.

    <AccordionGroup>
      <Accordion title="Daftar Class">
        <Steps>
          <Step title="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).
          </Step>

          <Step title="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.
          </Step>

          <Step title="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.
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="Deskripsi Main Class: MainSistemManajemenKendaraan">
        Buatlah sebuah **Main Class** bernama `MainSistemManajemenKendaraan` yang akan mendemonstrasikan pembuatan objek **Kendaraan**, **Mobil**, dan **Motor**, serta penggunaan konsep **Inheritance**. Ikuti instruksi berikut:

        <Steps>
          <Step title="Membuat Objek Kendaraan">
            * Buat objek **Kendaraan** dengan informasi berikut:
              * **Nomor Plat**: "B 4321 XYZ"
              * **Merk**: "Honda"
              * **Tahun Pembuatan**: 2019
          </Step>

          <Step title="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
          </Step>

          <Step title="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
          </Step>

          <Step title="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.
          </Step>
        </Steps>
      </Accordion>
    </AccordionGroup>

    ## Contoh Output yang Diharapkan:

    ```bash theme={null}
    Kendaraan: No Plat: B 4321 XYZ, Merk: Honda, Tahun Pembuatan: 2019
    Mobil: No Plat: B 1234 ABC, Merk: Toyota, Tahun Pembuatan: 2021, Jumlah Pintu: 4, Kapasitas Penumpang: 5
    Motor: No Plat: B 5678 DEF, Merk: Yamaha, Tahun Pembuatan: 2022, Jenis Transmisi: Manual, Kapasitas Mesin: 1.2L

    Setelah Perubahan:
    Mobil Baru: No Plat: B 9999 XYZ, Merk: Toyota, Tahun Pembuatan: 2021, Jumlah Pintu: 4, Kapasitas Penumpang: 5
    Motor Baru: No Plat: B 5678 DEF, Merk: Yamaha, Tahun Pembuatan: 2022, Jenis Transmisi: Manual, Kapasitas Mesin: 1.5L
    ```
  </Tab>

  <Tab title="Answer">
    <CodeGroup>
      ```java Kendaraan.java theme={null}
      public class Kendaraan {
          private String noPlat;
          private String merk;
          private int tahunPembuatan;

          public Kendaraan(String noPlat, String merk, int tahunPembuatan) {
              this.noPlat = noPlat;
              this.merk = merk;
              this.tahunPembuatan = tahunPembuatan;
          }

          public String getNoPlat() {
              return noPlat;
          }

          public void setNoPlat(String noPlat) {
              this.noPlat = noPlat;
          }

          public String getMerk() {
              return merk;
          }

          public void setMerk(String merk) {
              this.merk = merk;
          }

          public int getTahunPembuatan() {
              return tahunPembuatan;
          }

          public void setTahunPembuatan(int tahunPembuatan) {
              this.tahunPembuatan = tahunPembuatan;
          }

          public void tampilkanInfo() {
              System.out.printf("No Plat: %s, Merk: %s, Tahun Pembuatan: %d\n", noPlat, merk, tahunPembuatan);
          }
      }
      ```

      ```java Mobil.java theme={null}
      public class Mobil extends Kendaraan {
          private int jumlahPintu;
          private int kapasitasPenumpang;

          public Mobil(String noPlat, String merk, int tahunPembuatan, int jumlahPintu, int kapasitasPenumpang) {
              super(noPlat, merk, tahunPembuatan);
              this.jumlahPintu = jumlahPintu;
              this.kapasitasPenumpang = kapasitasPenumpang;
          }

          public int getJumlahPintu() {
              return jumlahPintu;
          }

          public void setJumlahPintu(int jumlahPintu) {
              this.jumlahPintu = jumlahPintu;
          }

          public int getKapasitasPenumpang() {
              return kapasitasPenumpang;
          }

          public void setKapasitasPenumpang(int kapasitasPenumpang) {
              this.kapasitasPenumpang = kapasitasPenumpang;
          }

          @Override
          public void tampilkanInfo() {
              super.tampilkanInfo();
              System.out.printf(", Jumlah Pintu: %d, Kapasitas Penumpang: %d\n", jumlahPintu, kapasitasPenumpang);
          }
      }
      ```

      ```java Motor.java theme={null}
      public class Motor extends Kendaraan {
          private String jenisTransmisi;
          private double kapasitasMesin;

          public Motor(String noPlat, String merk, int tahunPembuatan, String jenisTransmisi, double kapasitasMesin) {
              super(noPlat, merk, tahunPembuatan);
              this.jenisTransmisi = jenisTransmisi;
              this.kapasitasMesin = kapasitasMesin;
          }

          public String getJenisTransmisi() {
              return jenisTransmisi;
          }

          public void setJenisTransmisi(String jenisTransmisi) {
              this.jenisTransmisi = jenisTransmisi;
          }

          public double getKapasitasMesin() {
              return kapasitasMesin;
          }

          public void setKapasitasMesin(double kapasitasMesin) {
              this.kapasitasMesin = kapasitasMesin;
          }

          @Override
          public void tampilkanInfo() {
              super.tampilkanInfo();
              System.out.printf(", Jenis Transmisi: %s, Kapasitas Mesin: %.1fL\n", jenisTransmisi, kapasitasMesin);
          }
      }
      ```

      ```java MainSistemManajemenKendaraan.java theme={null}
      public class MainSistemManajemenKendaraan {
          public static void main(String[] args) {
             Kendaraan kendaraan = new Kendaraan("B 4321 XYZ", "Honda", 2019);
              Mobil mobil = new Mobil("B 1234 ABC", "Toyota", 2021, 4, 5);
              Motor motor = new Motor("B 5678 DEF", "Yamaha", 2022, "Manual", 1.2);

              System.out.print("Kendaraan: ");
              kendaraan.tampilkanInfo();

              System.out.print("\nMobil: ");
              mobil.tampilkanInfo();

              System.out.print("Motor: ");
              motor.tampilkanInfo();

              mobil.setNoPlat("B 9999 XYZ");
              motor.setKapasitasMesin(1.5);

              System.out.println("\nSetelah Perubahan: ");
              System.out.print("Mobil Baru: ");
              mobil.tampilkanInfo();

              System.out.print("Motor Baru: ");
              motor.tampilkanInfo();
          }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

# Soal 6 - Sistem Pembayaran Toko Online

<Tabs>
  <Tab title="Question">
    Di sebuah toko online, terdapat berbagai metode pembayaran yang dapat digunakan oleh pelanggan. Setiap metode pembayaran memiliki cara yang berbeda untuk memproses transaksi. Misalnya, **Pembayaran dengan Kartu Kredit** akan memerlukan informasi kartu kredit, sementara **Pembayaran dengan Transfer Bank** akan memerlukan nomor rekening bank. Semua metode pembayaran ini memiliki fungsi dasar untuk memproses pembayaran, tetapi implementasinya berbeda tergantung pada jenis metode pembayaran.

    Anda diminta untuk membuat sistem pembayaran yang menggunakan konsep **Polymorphism**. Anda akan membuat class **Pembayaran** sebagai class dasar yang memiliki method **prosesPembayaran()**, dan class turunan **KartuKredit** dan **TransferBank** yang mengimplementasikan cara masing-masing untuk memproses pembayaran. Anda akan mendemonstrasikan penggunaan polymorphism melalui **overriding** method **prosesPembayaran()**.

    <AccordionGroup>
      <Accordion title="Daftar Class">
        <Steps>
          <Step title="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).
          </Step>

          <Step title="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).
          </Step>

          <Step title="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).
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="Deskripsi Main Class: MainSistemPembayaran">
        Buatlah sebuah **Main Class** bernama `MainSistemPembayaran` yang akan mendemonstrasikan penggunaan **Polymorphism** dengan cara memanggil method **prosesPembayaran()** pada objek dari berbagai jenis metode pembayaran. Ikuti instruksi berikut:

        <Steps>
          <Step title="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"
          </Step>

          <Step title="Membuat Objek Pembayaran dengan Transfer Bank">
            * Buat objek **TransferBank** dengan informasi berikut:
              * **Jumlah**: 250000
              * **Nomor Rekening**: "9876543210"
              * **Nama Bank**: "Bank Mandiri"
          </Step>

          <Step title="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.
          </Step>
        </Steps>
      </Accordion>
    </AccordionGroup>

    ## Contoh Output yang Diharapkan:

    ```bash theme={null}
    Pembayaran dengan Kartu Kredit:
    Pembayaran dilakukan dengan Kartu Kredit: 1234-5678-9101-1121

    Pembayaran dengan Transfer Bank:
    Pembayaran dilakukan melalui Transfer Bank ke nomor rekening: 9876543210 di Bank Mandiri
    ```
  </Tab>

  <Tab title="Answer">
    <CodeGroup>
      ```java Pembayaran.java theme={null}
      public class Pembayaran {
          private double jumlah;

          public Pembayaran(double jumlah) {
              this.jumlah = jumlah;
          }

          public double getJumlah() {
              return jumlah;
          }

          public void setJumlah(double jumlah) {
              this.jumlah = jumlah;
          }

          public void prosesPembayaran() {
          }
      }
      ```

      ```java KartuKredit.java theme={null}
      public class KartuKredit extends Pembayaran {
          private String nomorKartu;
          private String namaPemegangKartu;

          public KartuKredit(double jumlah, String nomorKartu, String namaPemegangKartu) {
              super(jumlah);
              this.nomorKartu = nomorKartu;
              this.namaPemegangKartu = namaPemegangKartu;
          }

          public String getNomorKartu() {
              return nomorKartu;
          }

          public void setNomorKartu(String nomorKartu) {
              this.nomorKartu = nomorKartu;
          }

          public String getNamaPemegangKartu() {
              return namaPemegangKartu;
          }

          public void setNamaPemegangKartu(String namaPemegangKartu) {
              this.namaPemegangKartu = namaPemegangKartu;
          }

          @Override
          public void prosesPembayaran() {
              System.out.printf("Pembayaran dilakukan dengan Kartu Kredit: %s\n", nomorKartu);
          }
      }
      ```

      ```java TransferBank.java theme={null}
      public class TransferBank extends Pembayaran {
          private String nomorRekening;
          private String namaBank;

          public TransferBank(double jumlah, String nomorRekening, String namaBank) {
              super(jumlah);
              this.nomorRekening = nomorRekening;
              this.namaBank = namaBank;
          }

          public String getNomorRekening() {
              return nomorRekening;
          }

          public void setNomorRekening(String nomorRekening) {
              this.nomorRekening = nomorRekening;
          }

          public String getNamaBank() {
              return namaBank;
          }

          public void setNamaBank(String namaBank) {
              this.namaBank = namaBank;
          }

          @Override
          public void prosesPembayaran() {
              System.out.printf("Pembayaran dilakukan melalui Transfer Bank ke nomor rekening: %s di %s\n", nomorRekening, namaBank);
          }
      }
      ```

      ```java MainSistemPembayaran.java theme={null}
      public class MainSistemPembayaran {
          public static void main(String[] args) {
              KartuKredit kartuKredit = new KartuKredit(150000, "1234-5678-9101-1121", "John Doe");
              TransferBank transferBank = new TransferBank(250000, "9876543210", "Bank Mandiri");

              System.out.println("Pembayaran dengan Kartu Kredit:");
              kartuKredit.prosesPembayaran();

              System.out.println("\nPembayaran dengan Transfer Bank:");
              transferBank.prosesPembayaran();

              System.out.println("\nDemonstrasi Polymorphism:");
              Pembayaran pembayaran = new Pembayaran(300000);
              pembayaran.prosesPembayaran();

              pembayaran = kartuKredit;
              pembayaran.prosesPembayaran();

              pembayaran = transferBank;
              pembayaran.prosesPembayaran();
          }
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>
