Garis besar topik

  • Objek dalam pemrograman adalah unit mandiri berupa instans (wujud nyata) dari sebuah class (cetak biru) yang menggabungkan data (atribut/properti) dan perilaku (metode/fungsi) dalam satu kesatuan. Objek merepresentasikan entitas dunia nyata atau abstrak (seperti mobil, user, atau akun bank) untuk mempermudah pengembangan perangkat lunak yang modular dan terstruktur

    • rkcode

  • Ada enam jenis kelompok operator dalam pemrograman Java:

    1. Operator Artimatika;
    2. Operator Penugasan;
    3. Operator Pembanding;
    4. Operator Logika;
    5. Operator Bitwise;
    6. dan Operator Ternary.

    Bila digambarkan dalam mind map, akan terlihat seperti ini:

    6 Jenis operator pada Java

    Ukuran penuh dari mind map ini dapat kamu lihat di: coggle.it

    Apa saja perbedaan dari semua jenis operator tersebut?

    Mari kita bahas, satu per satu…

    1. Operator Aritmatika

    Operator aritmatika digunakan untuk melakukan operasi aritmatika.

    Operator ini terdiri dari:

    NamaSimbol
    Penjumlahan+
    Pengurangan-
    Perkalian*
    Pembagian/
    Sisa Bagi%

    Bagaimana cara pakainya?

    Mari kita coba praktik…

    Buatlah kelas baru bernama OperatorAritmatika, kemudian ikuti kode berikut:

    import java.util.Scanner;
    
    public class OperatorAritmatika {
    
        public static void main(String[] args) {
            int angka1;
            int angka2;
            int hasil;
    
            Scanner keyboard = new Scanner(System.in);
    
            System.out.print("Input angka-1: ");
            angka1 = keyboard.nextInt();
            System.out.print("Input angka-2: ");
            angka2 = keyboard.nextInt();
    
            // penjumlahan
            hasil = angka1 + angka2;
            System.out.println("Hasil = " + hasil);
    
            System.out.print("Input angka-1: ");
            angka1 = keyboard.nextInt();
            System.out.print("Input angka-2: ");
            angka2 = keyboard.nextInt();
    
            // pengurangan
            hasil = angka1 - angka2;
            System.out.println("Hasil = " + hasil);
    
             System.out.print("Input angka-1: ");
            angka1 = keyboard.nextInt();
            System.out.print("Input angka-2: ");
            angka2 = keyboard.nextInt();
    
            // perkalian
            hasil = angka1 * angka2;
            System.out.println("Hasil = " + hasil);
    
    
            System.out.print("Input angka-1: ");
            angka1 = keyboard.nextInt();
            System.out.print("Input angka-2: ");
            angka2 = keyboard.nextInt();
    
            // Pembagian
            hasil = angka1 / angka2;
            System.out.println("Hasil = " + hasil);
    
            System.out.print("Input angka-1: ");
            angka1 = keyboard.nextInt();
            System.out.print("Input angka-2: ");
            angka2 = keyboard.nextInt();
    
            // Sisa Bagi
            hasil = angka1 % angka2;
            System.out.println("Hasil = " + hasil);
    
        }
    
    }
    

    Silahkan jalankan programnya:

    Hasil output program java operator




    • Use if to specify a block of code to be executed, if a specified condition is true
    • Use else to specify a block of code to be executed, if the same condition is false
    • Use else if to specify a new condition to test, if the first condition is false
    • Use switch to specify many alternative blocks of code to be executed

    • 1. Percabangan IF

      Percabangan ini hanya memiliki satu pilihan. Artinya, pilihan di dalam IF hanya akan dikerjakan kalau kondisinya benar.

      Percabangan IF

      Tapi kalau salah… tidak akan melakukan apa-apa. Alias lanjut eksekusi ke perintah berikutnya.

      Contoh:

      Pernahkah kalian belanja di toko, kemudian kalau belanja di atas sekian ribu dapat hadiah atau diskon.

      Nah! Contoh kasus seperti itu, dapat kita selesaikan dengan menggunakan percabangan ini.

      untuk lebih jelasnya…

      Mari Kita Membuat Program Hadiah

      Misalkan ada sebuah toko buku. Mereka memberikan hadiah berupa perlengkapan sekolah kepada pembeli yang belanja di atas Rp 100.000.

      Maka programnya bisa kita buat seperti ini:

      import java.util.Scanner;
      
      public class Hadiah {
      
          public static void main(String[] args) {
      
              // membuat variabel belanja dan scanner
              int belanja = 0;
              Scanner scan = new Scanner(System.in);
      
              // mengambil input
              System.out.print("Total Belanjaan: Rp ");
              belanja = scan.nextInt();
      
              // cek apakah dia belanja di atas 100000
              if ( belanja > 100000 ) {
                  System.out.println("Selamat, anda mendapatkan hadiah!");
              }
      
              System.out.println("Terima kasih...");
      
          }
      
      }
      

      Jalankan programnya dan perhatikanlah hasilnya.

      Program diskon dengan Java

      Cobalah untuk memberikan nilai di bawah 100000 dan perhatikan apa akan yang terjadi.

      2. Percabangan IF/ELSE

      Sedangkan percabangan IF/ELSE memiliki pilihan alternatif kalau kondisinya salah.

      IF: ΓÇ£Jika kondisi benar maka kerjakan ini, kalau tidak silahkan lanjutΓÇ¥

      IF/ESLE: ΓÇ£Jika kondisi benar maka kerjakan ini, kalau salah maka kerjakan yang itu, setelah itu lanjutΓÇ¥

      Perbedaan percabangan IF dengan IF/ELSE

      Begitulah perbedaan IF dengan IF/ELSE.

      Sekarang mari kita coba dalam kode program…

      Program Cek Kelulusan

      Misalkan, kalau nilai siswa lebih besar dari 70, maka ia dinyatakan lulus. Kalau tidak, maka dia gagal.

      Programnya bisa kita buat seperti ini:

      import java.util.Scanner;
      
      public class CekKelulusan {
      
          public static void main(String[] args) {
      
              // membuat variabel dan Scanner
              int nilai;
              String nama;
              Scanner scan = new Scanner(System.in);
      
              // mengambil input
              System.out.print("Nama: ");
              nama = scan.nextLine();
              System.out.print("Nilai: ");
              nilai = scan.nextInt();
      
              // cek apakah dia lulus atau tidak
              if( nilai >= 70 ) {
                  System.out.println("Selemat " + nama + ", anda lulus!");
              } else {
                  System.out.println("Maaf " + nama + ", anda gagal");
              }
      
          }
      
      }
      

      Hasil outputnya:

      Hasil output program tes kelulusan

      Cobalah untuk merubah nilai yang dimasukkan dan perhatikan apa yang akan terjadi.

      Percabangan IF/ELSE dengan Operator Ternary

      Selain menggunakan struktur seperti di atas, percahangan ini juga dapat menggunakan operator ternary.

      Seperti yang sudah kita pelajari pada pembahasan tentang operator. Operator ternary memiliki konsep yang sama seperti percabganan IF/ELSE.

      Ilustraisi operator ternary

      Contoh programnya:

      public class OperatorTernary {
          public static void main(String[] args) {
      
              boolean suka = true;
              String jawaban;
      
              // menggunakan operator ternary
              jawaban = suka ? "iya" : "tidak";
      
              // menampilkan jawaban
              System.out.println(jawaban);
      
          }
      }
      

      3. Percabangan IF/ELSE/IF dan SWITCH/CASE

      Jika percabangan IF/ESLE hanya memiliki dua pilihan saja. Maka percahangan IF/ELSE/IF memiliki lebih dari dua pilihan.

      Formatnya seperti ini:

      if (suatu kondisi) {
          // maka kerjakan ini
          // kerjakan perintah ini juga
          // …
      } else if (kondisi lain) {
          // kerjakan ini
          // kerjakan ini juga
          // …
      } else if (kondisi yang lain lagi) {
          // kerjakan perintah ini
          // kerjakan ini juga
          // …
      } esle {
          // kerjakan ini kalau
          // semua kondisi di atas
          // tidak ada yang benar
          // …
      }
      

      Coba perhatikan contohnya:

      Jika nilainya lebih besar dari 90, maka grade-nya ΓÇ£AΓÇ¥. Sedangkan kalau lebih besar dari 80, maka ΓÇ£B+ΓÇ¥. Lebih besar dari 70, maka ΓÇ£BΓÇ¥, dan seterusnya.

      Lebih jelasnya, mari kita buat program.

      Program HitungGrade

      Silahkan buat sebuah class baru bernama HitungGrade, kemudian ikuti kode program berikut.

      import java.util.Scanner;
      
      public class HitungGrade {
          public static void main(String[] args) {
      
              // membuat variabel dan scanner
              int nilai;
              String grade;
              Scanner scan = new Scanner(System.in);
      
              // mengambil input
              System.out.print("Inputkan nilai: ");
              nilai = scan.nextInt();
      
              // higung gradenya
              if ( nilai >= 90 ) {
                  grade = "A";
              } else if ( nilai >= 80 ){
                  grade = "B+";
              } else if ( nilai >= 70 ){
                  grade = "B";
              } else if ( nilai >= 60 ){
                  grade = "C+";
              } else if ( nilai >= 50 ){
                  grade = "C";
              } else if ( nilai >= 40 ){
                  grade = "D";
              } else {
                  grade = "E";
              }
      
              // cetak hasilnya
              System.out.println("Grade: " + grade);
          }
      }
      

      Hasil outputnya:

      Hasil output program hitung grade

      Percabangan SWITCH/CASE

      Percabangan SWITCH/CASE sebenarnya adalah bentuk lain dari IF/ELSE/IF.

      Bedanya, percabangan ini menggunakan kata kunci switch dan case.

      Formatnya juga berbeda, tapi cara kerjanya sama.

      switch(variabel){
          case 1:
              // kerjakan kode ini
              // kode ini juga
              break;
          case 2:
              // kerjakan kode ini
              // kode ini juga
              break;
          case 3:
              // kerjakan kode ini
              // kode ini juga
              break;
          default:
              // kerjakan kode ini
              // kode ini juga
              break;
      }
      

      Perhatikan: case 1 artinya nilai variabel yang akan dibandingkan, apakah nilainya sama dengan 1 atau tidak.

      Kalau iya, maka kerjakan kode yang ada di dalam case 1.

      Bisa juga betuknya berbeda, misalnya seperti ini:

      switch (variabel) {
          case 'A':
              // lakukan sesuatu
              break;
          case 'B':
              // lakukan ini
              break;
          default:
              // lakukan ini
      }
      

      Perlu diperhatikan juga: di sana ada kata kunci break dan default.

      • break artinya berhenti. Ini untuk memerintahkan komputer untuk berhenti mengecek case yang lainnya.
      • default artinya jika nilai variabel tidak ada yang sama dengan pilihan case di atas, maka kerjakan kode yang ada di dalam default.

      Pilihan default bisa juga tidak memiliki break, karena dia adalah pilihan terakhir. Artinya pengecekan akan berakhir di situ.

      Contoh program dengan percabangan SWITCH/CASE

      import java.util.Scanner;
      
      public class LampuLalulintas {
          public static void main(String[] args) {
      
              // membuat variabel dan Scanner
              String lampu;
              Scanner scan = new Scanner(System.in);
      
              // mengambil input
              System.out.print("Inputkan nama warna: ");
              lampu = scan.nextLine();
      
              switch(lampu){
                  case "merah":
                      System.out.println("Lampu merah, berhenti!");
                      break;
                  case "kuning":
                      System.out.println("Lampu kuning, harap hati-hati!");
                      break;
                  case "hijau":
                      System.out.println("Lampu hijau, silahkan jalan!");
                      break;
                  default:
                      System.out.println("Warna lampu salah!");
              }
          }
      }
      

      Hasil outputnya:

      Hasil output program lampu lalu lintas dengan percabangan switch case

      Eksperimen: Cobalah untuk menghilangkan break di salah satu case dan perhatikanlah hasilnya.

      Percabangan dalam Percabangan (Nested)

      Kita sudah tahu tiga bentuk dasar percabganan di Java. Selanjutnya, kita coba bahas percabangan yang ada di dalam perbangan (perabangan bersarang).

      Sebenarnya pembahasan ini saya ingin pisahkan. Namun, baiknya digabungkan di sini aja.

      Anggap saja pembahasan bonus ≡ƒÿä.

      Baiklah…

      Jadi, percabangan itu bisa dibuat di dalam percabangan. Kadang teknik ini disebut juga nested if.

      Contoh kasus:

      Misalnya ada model bisinis seperti ini di sebuah toko. Ketika orang membayar di kasir, biasanya ditanya ada kartu member untuk mendapatkan diskon dan sebagainya.

      Apakah anda punya kartu member?
         - ya
             * Apakah belanjaan anda lebih dari 500rb?
                 # ya : mendapatkan diskon 50rb
                 # tidak : tidak mendapatkan diskon
             * Apakah belanjaan anda lebih dari 100rb?
                 # ya : mendapatkan diskon 15rb
                 # tidak: tidak mendapatkan diskon
         - tidak
             * Apakah belanjaan anda lebih dari 100rb?
                 # ya : mendapatkan diskon 10rb
                 # tidak: tidak mendapatkan diskon
      

      Paham?

      Kalau tidak, coba perhatikan flow chart-nya:

      Flowchart percabangan bersarang

      Masih belum paham?

      Kalau begitu mari kita coba dalam program.

      Silahkan buat class baru bernama Kasir dan ikuti kode program berikut ini.

      import java.util.Scanner;
      
      public class Kasir {
          public static void main(String[] args) {
              // deklarasi variabel dan Scanner
              int belanjaan, diskon, bayar;
              String kartu;
              Scanner scan = new Scanner(System.in);
      
              // mengambil input
              System.out.print("Apakah ada kartu member: ");
              kartu = scan.nextLine();
              System.out.print("Total belanjaan: ");
              belanjaan = scan.nextInt();
      
              // proses
              if (kartu.equalsIgnoreCase("ya")) {
                  if (belanjaan > 500000) {
                      diskon = 50000;
                  } else if (belanjaan > 100000) {
                      diskon = 15000;
                  } else {
                      diskon = 0;
                  }
      
              } else {
                  if (belanjaan > 100000) {
                      diskon = 5000;
                  } else {
                      diskon = 0;
                  }
              }
      
              // total yang harus dibayar
              bayar = belanjaan - diskon;
      
              // output
              System.out.println("Total Bayar: Rp " + bayar);
          }  
      }
      

      Hasil outputnya:

      Hasil output program dengan percabangan bersarang

      Cobalah untuk mengubah nilai yang dimasukkan dan perhatikan hasilnya.

      Mungkin di sana ada yang perlu diperhatikan:

      • Fungsi equalsIgnoreCase("ya") digunakan untuk membandingkan String dengan tidak memperdulikan huruf besar dan kecilnya.
      • Ada juga Fungsi equals(), fungsinya sama. Tapi equals() akan memperhatikan case hurufnya.

      Kenapa tidak menggunakan operator == atau !=?

      Di Java memang seperti itu.

      Kalau kita ingin membandingkan nilai String, ya… menggunakan fungsi yang dua tadi.

      Tapi, kalau membandingkan selain String, maka bisa pakai operator == atau !=.

      Menggunakan Operator Logika dalam Percabangan

      Operator logika dalam percabangan sebenarnya bisa membuat percabangan menjadi lebih singkat.

      Misal ada program Tilang dengan logika seperti ini:

      public class Tilang {
          public static void main(String[] args) {
              boolean SIM = false;
              boolean STNK = true;
      
              // cek apakah dia akan ditilang atau tidak
              if(SIM == true){
                  if( STNK == true ) {
                      System.out.println("Tidak ditilang!");
                  }
              } else {
                  System.out.println("Anda ditilang!");
              }
          }
      }
      

      Perhatikan: di sana kita menggunakan percabangan bersarang untuk mengecek, apakah dia ditilang atau tidak.

      Hal ini sebenarnya bisa disingkat dengan operator logika, sehingga menjadi seperti ini:

      public class Tilang {
          public static void main(String[] args) {
              boolean SIM = false;
              boolean STNK = true;
      
              // cek apakah dia akan ditilang atau tidak
              if(SIM == true && STNK == true){
                  System.out.println("Tidak ditilang!");
              } else {
                  System.out.println("Anda ditilang!");
              }
          }
      }
      

      Pada kode di atas, kita menggunakan operator AND (&&).

      Karena logikanya: Si pengendara tidak akan ditilang kalau punya SIM dan STNK.



  • Berikut penjelasan lengkap tentang perulangan (looping) di Java beserta contoh kode yang runnable dan aman.

    1. Jenis Perulangan di Java

    Java memiliki tiga jenis perulangan utama:

    1. for loop ΓåÆ Digunakan jika jumlah iterasi sudah diketahui.
    2. while loop ΓåÆ Digunakan jika jumlah iterasi belum pasti, tapi ada kondisi berhenti.
    3. do-while loop ΓåÆ Sama seperti while, tetapi dijalankan minimal sekali.

    2. Contoh Program Lengkap

    Java
    public static void main(String[] args) { // 1. FOR LOOP System.out.println("=== FOR LOOP ==="); for (int i = 1; i <= 5; i++) { System.out.println("Iterasi ke-" + i); } // 2. WHILE LOOP System.out.println("\n=== WHILE LOOP ==="); int j = 1; while (j <= 5) { System.out.println("Iterasi ke-" + j); j++; } // 3. DO-WHILE LOOP System.out.println("\n=== DO-WHILE LOOP ==="); int k = 1; do { System.out.println("Iterasi ke-" + k); k++; } while (k <= 5); // 4. PERULANGAN BERSARANG (Nested Loop) System.out.println("\n=== NESTED LOOP ==="); for (int baris = 1; baris <= 3; baris++) { for (int kolom = 1; kolom <= 3; kolom++) { System.out.print("(" + baris + "," + kolom + ") "); } System.out.println(); // pindah baris } } }

    3. Penjelasan Singkat

    • for ΓåÆ Cocok untuk iterasi dengan batas jelas.
      Contoh: menghitung dari 1 sampai 10.
    • while ΓåÆ Mengecek kondisi sebelum menjalankan blok kode.
    • do-while ΓåÆ Menjalankan blok kode minimal sekali, baru mengecek kondisi.
    • Nested Loop ΓåÆ Perulangan di dalam perulangan, sering digunakan untuk array 2D atau tabel.

    4. Output Program

    === FOR LOOP === Iterasi ke-1 Iterasi ke-2 Iterasi ke-3 Iterasi ke-4 Iterasi ke-5 === WHILE LOOP === Iterasi ke-1 Iterasi ke-2 Iterasi ke-3 Iterasi ke-4 Iterasi ke-5 === DO-WHILE LOOP === Iterasi ke-1 Iterasi ke-2 Iterasi ke-3 Iterasi ke-4 Iterasi ke-5 === NESTED LOOP === (1,1) (1,2) (1,3) (2,1) (2,2) (2,3) (3,1) (3,2) (3,3)

  • Sebuah loop disebut bersarang jika ditempatkan di dalam loop lain. Pada lintasan pertama, loop luar memanggil loop dalam, yang berjalan hingga selesai, setelah itu kontrol ditransfer ke badan loop luar. Pada pass kedua, loop luar memanggil loop dalam lagi. Begitu seterusnya sampai loop luar berakhir. Ada empat jenis loop di Java:

    • untuk putaran

    • while loop

    • do... while loop

    • untuk-setiap loop

    Semuanya mendukung loop bersarang. Konstruksi nested-loop digunakan ketika dua kondisi harus dipenuhi, yang satu bergantung pada yang lain. Misalnya, jika Anda perlu menampilkan matriks dua dimensi, semipiramida, atau tabel perkalian.

    • public class NestedLoopsDemo1 { 

       public static void main(String[] args) { 

       for (int i = 0; i < 10; i++)

       { for (int j = 0; j<=i; j++) 

       System.out.print("*");

       System.out.println();

       }

       } 

      }

    • Java
      package minggu4; import java.util.Scanner; public class piramid { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Masukkan tinggi piramida (angka positif): "); int tinggi = scanner.nextInt(); if (tinggi <= 0) { System.out.println("Tinggi harus lebih dari 0."); } for (int i = 1; i <= tinggi; i++) { for (int spasi = 1; spasi <= tinggi - i; spasi++) { System.out.print(" "); } for (int bintang = 1; bintang <= (2 * i - 1); bintang++) { System.out.print("*"); } System.out.println(); } scanner.close(); }

      Cara Kerja:

      1. Input tinggi piramida ΓåÆ pengguna memasukkan jumlah baris.
      2. Loop pertama (for i) ΓåÆ mengatur jumlah baris.
      3. Loop kedua (for spasi) ΓåÆ mencetak spasi di awal agar bintang membentuk piramida.
      4. Loop ketiga (for bintang) ΓåÆ mencetak bintang sesuai pola (2 * i - 1).
      5. Validasi input ΓåÆ mencegah input negatif atau bukan angka.

      Contoh Output:

      Jika tinggi = 5:

      * *** ***** ******* *********

  • Belajar Java: Menggunakan Array untuk Menyimpan Banyak Hal

    Apa yang akan kita lakukan bila memiliki banyak data yang akan disimpan dalam vairabel?

    Misalkan kita ingin menyimpan nama-nama teman dalam variabel.

    Maka mungkin kita akan melakukannya seperti ini:

    String namaTeman1 = "Linda";
    String namaTeman2 = "Santi";
    String namaTeman3 = "Susan";
    String namaTeman4 = "Mila";
    String namaTeman5 = "Ayu";
    

    Hal ini sah-sah saja.

    Akan tetapi…

    Masalahnya bagaimana kala datanya banyak, misalkan ada 100 data, pastinya capek donk membuat variabel sebanyak itu.

    Karena itu, kita bisa menyimpan itu semua dalam Array.

    Apa itu Array?

    Array adalah sebuah variabel yang bisa menyimpan banyak data dalam satu variabel.

    Array menggunakan indeks untuk memudahkan akses terhadap data yang disimpannya.

    Contoh Array

    Indeks array selalu dimulai dari 0ΓǪ

    …dan perlu diketahui juga, indeks tidak selalu dalam bentuk angka. Bisa juga karakter atau teks.

    Cara Membuat Array di Java

    Cara membuat array kosong:

    // cara pertama
    String[] nama;
    
    // cara kedua
    String nama[];
    
    // cara ketiga dengan kata kunci new
    String[] nama = new String[5];
    

    Parhatikan:

    • Kita menggunakan kurung siku [] untuk membuat array;
    • Kurung siku bisa diletakkan setelah tipe data atau nama array;
    • Angka 5 dalam kurung artinya batas atau ukuran array-nya.

    Array yang kosong siap diisi dengan data. Pastikan mengisinya dengan data yang sesuai dengan tipe datanya.

    Kita bisa mengisinya seperti ini:

    nama[0] = "Linda";
    nama[1] = "Santi";
    nama[2] = "Susan";
    nama[3] = "Mila";
    nama[4] = "Ayu";
    

    Atau kalau tidak mau repot, kita bisa membuat array dan langsung mengisinya.

    String[] nama = {"Linda", "Santi", "Susan", "Mila", "Ayu"};
    

    Mengambil Data dari Array

    Seperti yang sudah kita ketahui, array memiliki indeks untuk memudahkan kita mengakses datanya.

    Karena itu, kita bisa mengambil datanya dengan cara seperti ini:

    // membuat array
    String[] nama = {"Linda", "Santi", "Susan", "Mila", "Ayu"};
    
    // mengambil data array
    System.out.println(teman[2]);
    

    Kira-kira apa hasil outputnya?

    Yep! benar sekali, hasil outputnya adalah:

    Susan
    

    Karena Susan terletak di indeks ke-2.

    Menggunakan Perulangan

    Mengambil data satu per satu dari array mungkin cukup melelahkan, karena kita harus mengtik ulang nama array-nya dengan indeks yang berbeda.

    Contoh:

    System.out.println(teman[0]);
    System.out.println(teman[1]);
    System.out.println(teman[2]);
    System.out.println(teman[3]);
    

    Bagaimana kalau data array-nya sampai 1000, maka kita harus mengetik kode sebanyak seribu kali.

    Karena itu, disinilah peran perulangan.

    Contoh Array yang diaskes dengan perulangan

    Perhatikan:

    Di sana kita menggunakan atribut length untuk mengambil panjang array-nya.

    Jadi, perulangan akan dilakukan sebanyak isi array-nya.

    Sekarang Mari Kita Latihan

    Silahkan buat class bernama Buah, kemudian ikuti kode berikut:

    import java.util.Scanner;
    
    public class Buah {
        public static void main(String[] args) {
    
            // membuat array buah-buahan
            String[] buah = new String[5];
    
            // membuat scanner
            Scanner scan = new Scanner(System.in);
    
            // mengisi data ke array
            for( int i = 0; i < buah.length; i++ ){
                System.out.print("Buah ke-" + i + ": ");
                buah[i] = scan.nextLine();
            }
    
            System.out.println("---------------------------");
    
            // menampilkan semua isi array
            for( String b : buah ){
                System.out.println(b);
            }
    
        }
    }
    

    Hasil outputnya:

    Hasil output program array

    Perhatikan:

    Di sana kita menggunakan perulangan foreach untuk menampilkan isi array.

    Seperti yang sudah kita pelajari pada materi Perulangan di Java, perulangan ini dapat kita gunakan untuk menampilkan isi array.

    Array multi dimensi artinya array yang memiliki lebih dari satu dimensi.

    Atau kita bisa sebut, array di dalam array.

    Jumlah dimensinya tidak terbatas, tergantung kita mampunya sampai berapa 😄.

    Contoh berikut ini adalah array dua dimensi:

    String[][] kontak = {
        {"Lili","08111"},
        {"Lala","08122"},
        {"Maya","08133"}
    };
    

    Indek ke-0 pada array kontak berisi array {"lili","08111"}.

    Array 2 dimensi

    Contoh cara mengakses data dari array dua dimensi:

    Contoh Array dua dimensi di Java

    Contoh Program Array Multi Dimensi

    Biar makin mantap pemahaman kita tentang array multi dimensi, mari kita coba membuat sebuah program.

    Silahkan buat class baru bernama RuangKelas kemudian ikuti kode berikut:

    import java.util.Scanner;
    
    public class RuangKelas {
        public static void main(String[] args) {
    
            // Membuat Array dan Scanner
            String[][] meja = new String[2][3];
            Scanner scan = new Scanner(System.in);
    
            // mengisi setiap meja
            for(int bar = 0; bar < meja.length; bar++){
                for(int kol = 0; kol < meja[bar].length; kol++){
                    System.out.format("Siapa yang akan duduk di meja (%d,%d): ", bar, kol);
                    meja[bar][kol] = scan.nextLine();
                }
            }
    
            // menampilkan isi Array
            System.out.println("-------------------------");
            for(int bar = 0; bar < meja.length; bar++){
                for(int kol = 0; kol < meja[bar].length; kol++){
                    System.out.format("| %s | \t", meja[bar][kol]);
                }
                System.out.println("");
            }
            System.out.println("-------------------------");
        }
    }
    

    Hasil outputnya:

    Hasil output contoh program array dua dimensi

    Pada program tersebut, kita menggunakan perulangan bersarang untuk mengambil input dan menampilkan outputnya.

    Karena array dua dimensi mirip seperti tabel, maka kita harus melakukan perulangan terhadap baris dan kolomnya.

    Lalu bagaimana dengan array 3D, 4D, 5D, dan seterusnya?

    Tentu saja kita harus membuat perulangan bersarang sebanyak dimensinya.

    Kalau tiga, ya buat tiga perulangan.

    Array List

    Array yang kita bahas di atas sebenarnya memiliki beberapa kekurangan, seperti:

    • Tidak mampu menyimpan data dengan tipe yang berbeda.
    • Ukurannya tidak dinamis.

    Maka dari itu, ada Array List yang menutupi kekurangan tersebut.

    Array list merupakan sebuah class yang memungkinkan kita membuat sebuah objek untuk menampung apapun.

    Untuk menggunakan Array List, kita harus mengimpornya terlebih dahulu.

    import java.util.ArrayList;
    

    Setelah itu, baru kita bisa membuat sebuah objek Array List seperti ini:

     ArrayList al = new ArrayList();
    

    Mari kita coba….

    Contoh Program dengan Array List

    Silahkan membuat class dengan nama Doraemon, kemudian ikuti kode berikut:

    import java.util.ArrayList;
    
    public class Doraemon {
        public static void main(String[] args) {
    
            // membuat objek array list
            ArrayList kantongAjaib = new ArrayList();
    
            // Mengisi kantong ajaib dengan 5 benda
            kantongAjaib.add("Senter Pembesar");
            kantongAjaib.add(532);
            kantongAjaib.add("tikus");
            kantongAjaib.add(1231234.132);
            kantongAjaib.add(true);
    
            // menghapus tikus dari kantong ajaib
            kantongAjaib.remove("tikus");
    
            // Menampilkan isi kantong ajaib
            System.out.println(kantongAjaib);
    
            // menampilkan banyak isi kantong ajaib
            System.out.println("Kantong ajaib berisi "+ kantongAjaib.size() +" item");
        }
    }
    

    Hasil outputnya:

    Hasil output program array list

    Karena array list (kantongAjaib) merupakan sebuah objek yang terbuat dari class Array List, maka dia punya method (fungsi) untuk melakukan sesuatu.

    • Fungsi add() untuk menambahkan sesuatu ke dalam Array List;
    • Fungsi remove() untuk menghapus sesuatu ke dalam Array List;
    • Fungsi size() untuk mengambil ukuran Array List;
    • Fungsi get(id) untuk mengambil item dalam Array List berdasarkan id atau indeks tertentu.


  • A constructor in Java is a special method that is used to initialize objects.

    The constructor is called when an object of a class is created.

    It can be used to set initial values for object attributes:

    // Create a Main class
    public class Main {
      int x;  // Create a class attribute
    
      // Create a class constructor for the Main class
      public Main() {
        x = 5;  // Set the initial value for the class attribute x
      }
    
      public static void main(String[] args) {
        Main myObj = new Main(); // Create an object of class Main (This will call the constructor)
        System.out.println(myObj.x); // Print the value of x
      }
    }
    
    // Outputs 5

    • public class Main {
        int modelYear;
        String modelName;
      
        public Main(int year, String name) {
          modelYear = year;
          modelName = name;
        }
      
        public static void main(String[] args) {
          Main myCar = new Main(1969, "Mustang");
          System.out.println(myCar.modelYear + " " + myCar.modelName);
        }
      }
      


  • Dalam OOP kalian dapat membuat class baru (Sub class) dengan mewarisi sifat-sifat dari class yang sudah ada (Super class). Ketika kalian membuat class yang mewarisi dari class yang sudah ada, kalian dapat menggunakan kembali method dan variabel dari class induk, dan kalian juga dapat menambahkan method baru.
     
    Namun apakah semua method dan variabel dari super class dapat diturunkan ke sub class? Tidak, method atau variabel dengan modifier private tidak dapat diwariskan ke sub class.


    Contoh Pewarisan dalam Java

    public class Pegawai {
        double gaji = 5000000;
    }
    class Programmer extends Pegawai{
        double bonus = 20000000;
    }
    class TestPewarisan {
        public static void main(String[] args){
            Programmer obj = new Programmer();
            System.out.println("Gaji Programmer "+obj.gaji);
            System.out.println("Bonus Programmer "+obj.bonus);
        }
    }
    


    Nb. Untuk melakukan pewarisan gunakan keyword extends.

    Jenis - Jenis Pewarisan dalam Java

    Pada java terdapat 3(tiga) jenis pewarisan : Single, Multilevel dan Hierarchical.

    Jenis _ Jenis Pewarisan dalam Java
     

     

    Contoh Pewarisan Single

    public class A {
        public void cetak(){
            System.out.println("Pesan dari class A");
        }
    }
    class B extends A{
        public void msg(){
            System.out.println("Pesan dari class B");
        }
    }
    class TestPewarisan {
        public static void main(String[] args){
            B obj = new B();
            obj.cetak();
            obj.msg();
        }
    }
    

    Contoh Pewarisan Multilevel

    public class A {
        public void msgA(){
            System.out.println("Pesan dari class A");
        }
    }
    class B extends A{
        public void msgB(){
            System.out.println("Pesan dari class B");
        }
    }
    class C extends B{
        public void msgC(){
            System.out.println("Pesan dari class C");
        }
    }
    class TestPewarisan {
        public static void main(String[] args){
            C obj = new C();
            obj.msgA();
            obj.msgB();
            obj.msgC();
        }
    }
    

    Contoh Pewarisan Hierarchical

    public class A {
        public void msgA(){
            System.out.println("Pesan dari class A");
        }
    }
    class B extends A{
        public void msgB(){
            System.out.println("Pesan dari class B");
        }
    }
    class C extends A{
        public void msgC(){
            System.out.println("Pesan dari class C");
        }
    }
    class TestPewarisan {
        public static void main(String[] args){
            C obj = new C();
            obj.msgA();
            obj.msgC();
        }
    }
    • KONVERSI TIPE DATA (STRING TO INTEGER, INTEGER TO STRING)

       
       
      Dalam membuat sebuah program, seringkali kita membutuhkan untuk mengkonversi nilai dari sebuah String menjadi angka atau sebaliknya, angka itu bisa Integer atau Double. JTextField hanya bisa menampung data bertipe String. Jadi, contohnya saat kita membuat Program melibatkan JTextField ketika ingin melakukan operasi Aritmatika pada data tersebut, karena menggunakan tipe data String. Untuk itu, perlu mengkorversi atau mengubah tipe data String menjadi tipe data Integer, agar dapat melakukan operasi Aritmatika tersebut. Setelah dioperasikan, maka hasilnya akan ditempatkan di JTextField kembali, sehingga harus di konversikan dari Integer ke String lagi.
       
      Baiklah, langsung saja kita ke contoh membuat Program Aritmatika  Penjumlahan, Pengurangan, Perkalian, dan Pembagian dengan JTextFile yang hanya berisi tipe data String. Sehingga, kita harus mengkonversikannya ke tipe data Integer.
       
      • Pertama, kita buat JFrame Form baru dalam sebuah Project dan buat tampilannya sehingga menjadi seperti berikut. Dengan menggunakan 3 buah JLabel, 4 buah JButton, dan 3 buah JTextField. 
      • Ubah tampilan dan teksnya serta atur ukurannya, sehingga seperti pada gambar dibawah. 
      • Ganti Variabel JTextField masing-masing sesuai keinginan. Namun jangan menggunakan spasi dan angka.Contoh, ganti Variabel JTextField pertama pada bilangan pertama dengan "bilangan1" dan JTextField 2 dengan "bilangan2" dan JText Field 3 dengan "hasil". 
      • Selanjutnya, menangani penekan pada Button "+" kita berikan Events dengan cara klik kanan pada button +, lalu pilih Events>>Action>>actionPerfomed. Sehingga tampil kode program dan isi dengan kode berikut, sehingga menjadi seperti ini. 
         
        • int bil1,bil2, hasilnya;                                      : Variabel-variabel Integer sebagai wadah bilangan dan hasil.
        • bil1=Integer.parseInt(bilangan1.getText());    :  Kode untuk mengkonversi bilangan String ke Integer yang di simpan di wadah variabel bil1.
        • bil2=Integer.parseInt(bilangan2.getText());    : Kode untuk mengkonversi bilangan String ke Integer yang di simpan di wadah variabel bil2.
        • hasilnya=bil1+bil2;                                         :  Rumus Operasi Aritmatika, bisa +, -, *, /, atau %.
        • hasil.setText(String.valueOf(hasilnya));          :  Mengkonversikan hasil operasi tadi yaitu Integer ke String, karena JTextField hanya menyimpan tipe data String.
      • Hal yang sama pada Button -, X atau /. Namun kita tinggal mengganti operatornya saja seperti gambr berikut ini. 
      • Setelah semuanya selesai kita jalankan programnya dengan cara tekan SHIFT+F6. Saat kita menekan button + maka pada kolom hasil akan menampilkan Operasi penjumlahan. Begitu juga saat menekan Button lainnya akan melakukan operasi aritmatika masing-masing. 
  • Most computer users today expect software to feature a graphical user interface (GUI) with a variety of widgets such as text boxes, sliders, and scrollbars. The Java Class Library includes Swing, a set of packages that enable Java programs to offer a sophisticated GUI and collect user input with the mouse, keyboard, and other input devices.

    In this lesson, you will use Swing to create applications that feature these GUI components:

    • Frames: Windows with a title bar; menu bar; and Maximize, Minimize, and Close buttons

    • Containers: Components that hold other components

    • Buttons: Clickable rectangles with text or graphics indicating their purpose

    • Labels: Text or graphics that provide information

    • Text fields and text areas: Windows that accept keyboard input of one line or multiple lines

    • Drop-down lists: Groups of related items that are selected from drop-down menus or scrolling windows

    • Check boxes and radio buttons: Small squares or circles that can be selected or deselected

    • Image icons: Graphics added to buttons, labels, and other components

    • Scrolling panes: Panels for components too big for a user interface that can be accessed in full by using a scrollbar

    Swing is the most extensive set of related classes introduced thus far in the book. Learning to create graphical applications with these packages is good practice for utilizing a class library in Java, which is something yo do often in your own projects

    • Belajar CRUD Java Desktop Netbeans



      Artikel yang akan saling berkaitan pada project ini :
      1. CRUD Java Desktop
      2. Pencarian Data Menggunakan Java Desktop
      3. Mencetak Laporan dengan Java Desktop
      4. Membuat Login dengan Java Desktop
      CRUD atau Create, Read,Update,Delete merupakan sebuah dasar yang harus dikuasai terlebih dahulu sebelum anda membuat pemrograman basis data dalam skala yang lebih besar, karena apapun aplikasi yang dibuat pasti akan memuat CRUD tersebut.

      Saat ini kita akan belajar membuat CRUD Java Desktop menggunakan Netbeans, database yang akan digunakan adalah mysql pada artikel berikut terdapat beberapa tahap yang akan kita lakukan diantaranya adalah :

      1. Membuat Database
      2. Membuat Project
      3. Membuat Koneksi Database
      4. Membuat Design Windows Form
      5. Membuat Proses Tampil Data (Read)
      6. Membuat Proses Simpan Data (Create)
      7. Membuat Proses Ubah Data (Update)
      8. Membuat Proses Hapus Data (Delete)

      Membuat Database

      Pemilihan Database atau RDBMS (Relationship Database Management System) sangatlah penting karena akan berpengaruh terhadap efektifitas dan kecepatan dala menjalankan setiap perintah. Banyak database yang dapat kita gunakan seperti Microsoft Access, MySQL,MariaDB, Postgres SQL, SQL Server, Oracle Database.
       
      DBMS diatas teridiri dari yang berbayar dan juga gratis,salah satu yang berbayar misalnya Oracle Database, merupakan DBMS yang sangat powerfull tetapi juga mahal serta DBMS Oracle Database ini lebih cocok untuk aplikasi yang sangat besar seperti aplikasi e-commerce yang traffic nya sehari bisa mencapai ribuan. Dalam hal ini Oracle Database mempunyai kemampuan untuk menangani hal tersebut.
       
      Selain Oracle database yang berbayar ada juga DBMS yang gratis yaitu MariaDB mempunyai kemampuan seperti MySQL dan perintah2 nya juga sangat mirip, cocok untuk aplikasi besar maupun aplikasi kecil.
       
      Perlu diketahui bahwa RDBMS MySQL saat ini tidak open source lagi /  tidak gratis pemilik RDBMS tersebut semenjak 2010 sampai saat ini adalah Oracle Corporation yang merupakan pemilik yang sama dari DBMS Oracle Database. Sehingga sebenarnya DBMS yang include dari XAMPP adalah MariaDB bukan lagi MySQL. Namun perintah perintah nya sama persis karena pengembang baik MySQL ataupun MariaDB orang nya masih sama.
       
      Pada proje ini buatlah database menggunakan mariaDB (bawaan XAMPP) berikan nama database dengan nama pos kemudian tambahkan sebuah table dengan nama barang, berikut adalah source SQL pembuatan database dan table :

      CREATE DATABASE pos;
      use pos;
      
      CREATE TABLE barang (
        kode_barang varchar(20) PRIMARY KEY,
        nama_barang varchar(200) DEFAULT NULL,
        harga double NOT NULL,
        satuan varchar(20) DEFAULT NULL,
        stok double NOT NULL
      );
      
      

      Membuat Project

      Buatlah project menggunakan netbeans caranya buka netbeans anda kemudian pilih menu File - New Project - Java Application
       
      Belajar CRUD Java Netbeans


      Selanjutnya pilih Next kemudian berikan nama projectnya pos kemudian buang checkbox Create Main Class karena kita tidak menggunakan nya. setelah itu klik Finish

      Membuat Koneksi Database

      untuk membuat koneksi tambahkan terlebih dahulu sebuah package dengan nama Konfigurasi setelah itu buatlah sebuah class baru dengan nama Koneksi.java masukan code berikut agar aplikasi yang kita buat dapat terkoneksi ke database :
       
      Package Konfigurasi;
      
      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.SQLException;
      
      /**
       *
       * @author Jajang Nurjaman
       */
      public class Koneksi {
      
          public static Connection getConnection() {
              Connection conn = null;
              String url = "jdbc:mysql://localhost:3306/pos";
              String user = "root";
              String password = "";
              try {
                  conn = DriverManager.getConnection(url, user, password);
              } catch (SQLException e) {
                  System.out.println(e);
              }
              return conn;
          }
      
          public static void main(String[] args) {
              try {
                  Connection c = Koneksi.getConnection();
                  System.out.println(String.format("Connected to database %s " + "successfully.", c.getCatalog()));
              } catch (SQLException e) {
                  System.out.println(e);
              }
          }
      }
      
      Jika sudah sekarang coba tes koneksi yang telah dibuat dengan menekan tombol Shift+F6 atau bisa melalui menu Run - Run File hasilnya harus seperti berikut :
      koneksi berhasil

      Membuat Design Windows Form

      Buatlah sebuah Package baru dengan nama Form untuk meletakkan Windows form yang akan kita design, tambahkan sebuah Windows dengan nama JFrame Form  pada package tadi kemudian berikan nama form_barang tambahkan beberapa komponen sehingga menjadi seperti berikut :
       
      form data barang
      Berikan penamaan variabel kepada komponen yang telah dimasukan, agar mudah diingat kita berikan penamaan sesuai dengan kegunaan nya masing-masing, seperti berikut :

      1. jTextField_kode_barang
      2. jTextField_nama_barang
      3. jTextField_harga
      4. jTextField_satuan
      5. jTextField_stok
      6. jTable_barang
      7. jButton_baru
      8. jButton_simpan
      9. jButton_edit
      10. jButton_hapus

      Membuat Proses Tampil Data (Read)

      untuk menampilkan data kita akan membuat fungsi agar dapat dipanggil secara berulang - ulang dan namun sebelum membuatnya kita perlu menambahkan/menyesuaikan header untuk pemanggilan library yang digunakan, berikut adalah header yang akan kita buat :
      package Form;
      
      import Konfigurasi.Koneksi;
      import java.sql.Connection;
      import java.sql.SQLException;
      import javax.swing.table.DefaultTableModel;
      

      Selanjutnya tambahkan  deklarasi variabel dan fungsi Tampil_data seperti berikut :
      private DefaultTableModel DftTblModel_barang;
      private String SQL; 
      public void TampilData() {
              DftTblModel_barang = new DefaultTableModel();
              DftTblModel_barang.addColumn("KODE BARANG");
              DftTblModel_barang.addColumn("NAMA BARANG");
              DftTblModel_barang.addColumn("HARGA");
              DftTblModel_barang.addColumn("SATUAN");
              DftTblModel_barang.addColumn("STOK");
              jTable_barang.setModel(DftTblModel_barang);
              Connection conn = Koneksi.getConnection();
              try {
                  java.sql.Statement stmt = conn.createStatement();
                  SQL = "select * from barang";
                  java.sql.ResultSet res = stmt.executeQuery(SQL);
                  while (res.next()) {
                      DftTblModel_barang.addRow(new Object[]{
                          res.getString("kode_barang"),
                          res.getString("nama_barang"),
                          res.getString("harga"),
                          res.getString("satuan"),
                          res.getString("stok")
                      });
                  }
              } catch (SQLException e) {
                  System.out.println(e.getMessage());
              }
          }
      

      jangan lupa tambahkan library MySQL JDBC Driver agar project yang kita buat dapat terkoneksi kedatabase dengan cara klik kanan Libraries->Add Library->MySQL JDBC Driver
      Belajar CRUD Java Desktop Netbeans
      Kemudian pilih MySQL JDBC Driver

      Belajar CRUD Java Desktop Netbeans
      Selanjutnya panggl fungsi yang telah dibuat di Konstruktor seperti berikut :
       public form_barang() {
              initComponents();
              this.TampilData();
          }
      

      Sebelum dilakukan pengetesan tambahkan beberapa baris record kedalam tabel barang, agar ketika dijalankan jika berhasil maka data akan tampil. hasil setelah dijalankan seperti berikut :

      Membuat Simpan Data

      
      Untuk melakukan penyimpanan data tambahkan coding berikut pada event tombol simpan dengan cara klik kanan tombol simpan ΓÇô Events ΓÇô Action ΓÇô ActionPerformed kemudian masukan coding berikut :
      try {
                  Connection conn = Koneksi.getConnection();
                  PreparedStatement stmt = conn.prepareStatement("insert into barang(kode_barang, nama_barang, harga, satuan, stok) values(?,?,?,?,?)");
                  stmt.setString(1, jTextField_kode_barang.getText());
                  stmt.setString(2, jTextField_nama_barang.getText());
                  stmt.setString(3, jTextField_harga.getText());
                  stmt.setString(4, jTextField_satuan.getText());
                  stmt.setString(5, jTextField_stok.getText());
                  stmt.executeUpdate();
                  JOptionPane.showMessageDialog(null, "Data berhasil disimpan", "Pesan", JOptionPane.INFORMATION_MESSAGE);
                  TampilData();
              } catch (SQLException e) {
                  System.out.println(e.getMessage());
              }
      

      Membuat Edit Data

      Sebelum melakukan edit data kita perlu memilih data mana yang akan diedit, untuk itu kita perlu menambahkan coding pada event table saat diklik agar muncul pada textfield berikut cara memberikan event pada saat table diklik : klik kanan table ΓÇô Mouse ΓÇô mouse click kemudian masukan coding berikut :
      
      int baris = jTable_barang.getSelectedRow();
      jTextField_kode_barang.setText(DftTblModel_barang.getValueAt(baris, 0).toString());
      jTextField_nama_barang.setText(DftTblModel_barang.getValueAt(baris, 1).toString());
      jTextField_harga.setText(DftTblModel_barang.getValueAt(baris, 2).toString());
      jTextField_satuan.setText(DftTblModel_barang.getValueAt(baris, 3).toString());
      jTextField_stok.setText(DftTblModel_barang.getValueAt(baris, 4).toString());
      
      selanjutnya Untuk melakukan edit data tambahkan coding berikut pada event tombol edit dengan cara klik kanan tombol Edit ΓÇô Events ΓÇô Action ΓÇô ActionPerformed kemudian masukan coding berikut :
      
      try {
                  Connection conn = Koneksi.getConnection();
                  PreparedStatement stmt = conn.prepareStatement("update barang set nama_barang=?, harga=?, satuan=?, stok=? where kode_barang=?");
                  stmt.setString(1, jTextField_nama_barang.getText());
                  stmt.setString(2, jTextField_harga.getText());
                  stmt.setString(3, jTextField_satuan.getText());
                  stmt.setString(4, jTextField_stok.getText());
                  stmt.setString(5, jTextField_kode_barang.getText());
                  stmt.executeUpdate();
                  JOptionPane.showMessageDialog(null, "Data berhasil diubah", "Pesan", JOptionPane.INFORMATION_MESSAGE);
                  TampilData();
              } catch (SQLException e) {
                  System.out.println(e.getMessage());
              }
      


      Membuat Hapus Data

      Sama halnya seperti edit data kita perlu melakukan pemilihan data mana yang akan dihapus, tapi karena sebelumnya kita telah menambahkan coding pilih data maka kita tidak perlu menambahkan coding lagi, langsung saja untuk melakukan penyimpanan data tambahkan coding berikut pada event tombol hapus dengan cara klik kanan tombol Hapus ΓÇô Events ΓÇô Action ΓÇô ActionPerformed kemudian masukan coding berikut :
      
      Connection conn = Koneksi.getConnection();
              int confirm = JOptionPane.showConfirmDialog(null, "Apakah anda yakin ingin menghapus data tersebut?", "Konfirmasi", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
              if (confirm == 0) {
                  try {
                      java.sql.PreparedStatement stmt = conn.prepareStatement("delete from barang where kode_barang ='" + jTextField_kode_barang.getText() + "'");
                      stmt.executeUpdate();
                      JOptionPane.showMessageDialog(null, "Data berhasil dihapus", "Pesan", JOptionPane.INFORMATION_MESSAGE);
                      TampilData();
                      jTextField_kode_barang.setText("");
                      jTextField_nama_barang.setText("");
                      jTextField_harga.setText("");
                      jTextField_satuan.setText("");
                      jTextField_stok.setText("");
                      jTextField_kode_barang.requestFocus();
                  } catch (SQLException e) {
                      JOptionPane.showMessageDialog(null, "Data gagal di hapus" + e.getMessage(), "Pesan", JOptionPane.ERROR_MESSAGE);
                  }
              }