Prosedur dan Fungsi Pengertian public dan private : public pada data : berarti data hanya dapat diases dari class yang sama dan class lain private pada data : berarti data hanya dapat diases dari class yang sama Dalam pembuatan program, tidak akan lepas dari 2 elemen penting, yakni prosedur dan fungsi, Prosedur adalah suatu satuan tugas yang akan dikerjakan komputer tanpa mengembalikan nilai balik Fungsi adalah suatu satuan tugas yang akan dikerjakan komputer dengan mengembalikan nilai balik Dengan adanya prosedur dan fungsi maka program akan modular (terbagi menjadi satuan tugas yang kecil dan lebih mudah dipahami) Ciri prosedur pada java selalu dimulai dengan : private/public void namaProsedur ( tipeDataParameter1 namaParameter1, …. , tipeData ParameterN namaParameterN) atau private/public void namaProsedur () catatan : kata private/public tidak harus ada, karena menunjukkan sifat akses dari prosedur tsb. Sedangkan ciri Fungsi pada java adalah selalu dimulai dengan : tipeDataFungsi NamaFungsi (tipeDataParameter1 namaParameter1, …. , tipeData ParameterN namaParameterN) atau tipeDataFungsi namaFungsi() Ciri fungsi yang lain, pada baris terakhir fungsi selalu terdapat : return nilaiBalik; seperti halnya VB , Delphi , Cbuilder++ dsb, pembuatan prosedur dan fungsi dapat ditulis secara langsung ataupun melalui tools yang disediakan oleh Netbeans. Namun untuk lebih mempercepat, disarankan untuk menulis secara langsung, tanpa menggunakan tools.
1
Contoh Aplikasi : Buatlah sebuah JFrame Form dengan nama formParsing atur setLayout-nya menjadi Border Layout, dengan 3 TextField (txtData1, txtData2 dan txtHasil), 3 Label dan 3 Button (bPrivate, bPublic, bBersih). Apabila Button Private ditekan, maka txtHasil akan diisi oleh hasil penambahan angka txtData1 dengan txtData2. Apabila Button Public ditekan, maka txtHasil akan diisi oleh hasil pembagian angka txtData1 dengan txtData2. Apabila Button Bersih ditekan, maka txtData1, txtData2,txtHasil akan dikosongkan Sebagai catatan, proses tambah, kurang dan bersih tidak berasal dari event Clicknya (actionPerformed) , namun dilakukan oleh prosedur dan fungsi masing-masing
2
Komponen Panel TextField TextField TextField Button Button Button Label Label Label
Properties Background setLayout Name Text Name Text Name Text Name Text Name Text Name Text Text Text Name Text
Isi Properites Warna biru Null Layout txtData1 Kosongkan txtData2 Kosongkan txtHasil Kosongkan bPrivate PRIVATE bPublic PUBLIC bBersih Bersih Nama Login Biarkan default lbNama +/-
Pembuatan Prosedur dan fungsi Ketikan variabel yang bertuliskan tebal berikut ini dan taruhlah paling bawah sendiri sebelum kurung tutup kurawal : String nama,status; kelasLuar kl = new kelasLuar();
Ubahlah koding dibawah ini: /** Creates new form formParsing */ public formParsing() { initComponents(); } Menjadi seperti di bawah ini : /** Creates new form formParsing */ public formParsing(String nama) { initComponents(); this.nama = nama; lbNama.setText(this.nama); }
3
Blok dan Hapuslah coding yang seperti berikut ini : /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new formParsing().setVisible(true); } }); }
Kemudian buatlah prosedur bersih, di tempat yang tadi seperti berikut ini : private void Bersih() { txtData1.setText(""); txtData2.setText(""); txtHasil.setText(""); }
Kemudian buatlah fungsi parsingTambah, seperti berikut ini : private void parsingTambah(int pertama, int kedua){ int hasilnya = pertama + kedua; txtHasil.setText(String.valueOf(hasilnya)); }
4
Berikutnya, buatlah class baru pada folder yang sama dengan nama kelasLuar, setelah itu ketikan koding yang bertuliskan tebal dibawah ini kedalam kelasBaru tersebut :
import javax.swing.JOptionPane; public class kelasLuar {
String hasilnya; public String parsingKurang(String pertama, String kedua){ try{ int satu = Integer.parseInt(pertama); int dua = Integer.parseInt(kedua); hasilnya = String.valueOf(satu - dua); }catch(Exception e){ JOptionPane.showMessageDialog(null, "Inputan Parsing Harus Angka"); hasilnya=""; } return hasilnya; } }
Setelah itu kembalilah ke halaman Design formParsing yang tadi, kemudian Klik 2x pada tombol PRIVATE, dan ketikan koding yang bertuliskan tebal seperti dibawah ini : private void bPrivateActionPerformed(java.awt.event.ActionEvent evt) { int satu = Integer.parseInt(txtData1.getText()); int dua = Integer.parseInt(txtData2.getText()); parsingTambah(satu, dua); }
5
Setelah itu kembali ke halaman design formParsing lagi dan Klik 2x pada tombol PUBLIC, dan ketikan koding yang bertuliskan tebal seperti dibawah ini : private void bPublicActionPerformed(java.awt.event.ActionEvent evt) { status = kl.parsingKurang(txtData1.getText(), txtData2.getText()); if(status.equals("")){ bersih(); }else{ txtHasil.setText(status); } } Setelah itu kembali ke halaman design formParsing lagi dan Klik 2x pada tombol Bersih, dan ketikan koding yang bertuliskan tebal seperti dibawah ini : private void bBersihActionPerformed(java.awt.event.ActionEvent evt) { // memanggil prosedur Bersih Bersih(); }
6
Program Lengkap sbb : Koding untuk formPasing public class formParsing extends javax.swing.JFrame { /** Creates new form formParsing */ //membuat parameter nama ber-type String untuk formParsing public formParsing(String nama) { initComponents(); //memberi nilai untuk variabel this.nama dari parsingan yang di terima oleh variabel nama this.nama = nama; lbNama.setText(this.nama); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); txtHasil = new javax.swing.JTextField(); lbNama = new javax.swing.JLabel(); txtData1 = new javax.swing.JTextField(); txtData2 = new javax.swing.JTextField(); bBersih = new javax.swing.JButton(); bPrivate = new javax.swing.JButton(); bPublic = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Form Prosedur dan Fungsi"); jPanel1.setBackground(new java.awt.Color(0, 102, 204)); jPanel1.setLayout(null); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel1.setForeground(new java.awt.Color(255, 255, 0)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("+ / -"); jPanel1.add(jLabel1); 7
jLabel1.setBounds(130, 60, 50, 20); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel2.setForeground(new java.awt.Color(255, 255, 0)); jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel2.setText("Nama Login :"); jPanel1.add(jLabel2); jLabel2.setBounds(20, 20, 100, 20); txtHasil.setHorizontalAlignment(javax.swing.JTextField.CENTER); jPanel1.add(txtHasil); txtHasil.setBounds(30, 90, 250, 20); lbNama.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N lbNama.setForeground(new java.awt.Color(255, 255, 0)); lbNama.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); lbNama.setText("jLabel1"); jPanel1.add(lbNama); lbNama.setBounds(130, 20, 150, 20); jPanel1.add(txtData1); txtData1.setBounds(30, 60, 100, 20); jPanel1.add(txtData2); txtData2.setBounds(180, 60, 100, 20); bBersih.setText("BERSIH"); bBersih.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bBersihActionPerformed(evt); } }); jPanel1.add(bBersih); bBersih.setBounds(30, 150, 250, 23); bPrivate.setText("PRIVATE"); bPrivate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bPrivateActionPerformed(evt); } }); jPanel1.add(bPrivate); bPrivate.setBounds(30, 120, 120, 23); bPublic.setText("PUBLIC"); bPublic.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bPublicActionPerformed(evt); 8
} }); jPanel1.add(bPublic); bPublic.setBounds(170, 120, 110, 23); getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-327)/2, (screenSize.height-240)/2, 327, 240); }// private void bPrivateActionPerformed(java.awt.event.ActionEvent evt) { //menjadikan data string yg ada di TextField menjadi integer //dan sekaligus memberikan nilai ke variabel satu dan dua int satu = Integer.parseInt(txtData1.getText()); int dua = Integer.parseInt(txtData2.getText()); //memanggil prosedur parsingTambah //dan mem-parsingkan nilai pada parameter yang ada di-prosedur parsingTambah parsingTambah(satu, dua); } private void bPublicActionPerformed(java.awt.event.ActionEvent evt) { //memanggil Class dan method dari kelasLuar //dan memberikan nilai untuk parameter yang ada di method parsingKurang status = kl.parsingKurang(txtData1.getText(), txtData2.getText()); //menentukan kondisi dengan nilai yang dibalikan dari fungsi hasilnya yang ada di kelasLuar if(status.equals("")){ bersih(); }else{ txtHasil.setText(status); } } private void bBersihActionPerformed(java.awt.event.ActionEvent evt) { //memanggil prosedur bersih bersih(); }
9
//awal dari pembuatan prosedur bersih private void bersih(){ txtData1.setText(""); txtData2.setText(""); txtHasil.setText(""); } //akhir dari pembuatan prosedur bersih //awal dari pembuatan prosedur parsingTambah private void parsingTambah(int pertama, int kedua){ int hasilnya = pertama + kedua; txtHasil.setText(String.valueOf(hasilnya)); } //akhir dari pembuatan prosedur parsingTambah // Variables declaration - do not modify private javax.swing.JButton bBersih; private javax.swing.JButton bPrivate; private javax.swing.JButton bPublic; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel1; private javax.swing.JLabel lbNama; private javax.swing.JTextField txtData1; private javax.swing.JTextField txtData2; private javax.swing.JTextField txtHasil; // End of variables declaration //pembuatan variabel nama dan status yang ber-type data String String nama,status; //pembuatan variabel kelasLuar dengan nama kl kelasLuar kl = new kelasLuar(); }
10
Koding untuk kelasLuar : //memanggil paket Class message/pesan dari JOptionPane import javax.swing.JOptionPane; public class kelasLuar { //membuat variabel nilai hasilnya yang ber-type data String String hasilnya; //awal dari pembuatan method parsingKurang yang mempunyai dua parameter ber-type String public String parsingKurang(String pertama, String kedua){ //membuat blok try-catch untuk menangkap kesalahan dari suatu proses try{ //menconvert nilai dari parsingan yang di berikan ke-variabel pertama dan kedua //menjadi integer dan memberikan nilainya kepada variabel satu dan dua int satu = Integer.parseInt(pertama); int dua = Integer.parseInt(kedua); //mengconvert integer menjadi String dan //memberikan nilai hasil pengurangan dari variabel satu dan dua kepada variabel hasilnya hasilnya = String.valueOf(satu - dua); }catch(Exception e){ //menangkap dan melemparkan kesalahan ke dalam suatu pesan JOptionPane.showMessageDialog(null, "Inputan Parsing Harus Angka"); //memeberi nilai kosong pada variabel hasilnya hasilnya=""; } //memberikan suatu fungsi pada variabel hasilnya, agar mempunyai nilai balik return hasilnya; } } Kemudian yang terakhir bukalah form login yang kemarin, dan isikan koding berikut dibawah ini kedalam event button login di dalam kondisi jika suatu login di terima atau sukses, koding berikut ini untuk memanggil formParsing dan memberikan nilai untuk parameter nama yang di ambil dari komponen Texfield : new formParsing(txtUser.getText()).setVisible(true);
11