Menggunakan RDBMS untuk Pemrograman Berbasis Obyek

Di ruangan tampak buku-buku analisa disain yang lumayan tebal. Kebanyakan tentang analisa dan disain sistem berorientasi obyek. Buku yang ternyata milik rekan yang digunakan ketika ambil S2 belasan tahun yang lalu itu cukup menarik dan “wajib” dibaca oleh pemerhati mata kuliah analisa dan disain sistem informasi, khususnya yang tertarik dengan pemrograman berbasis obyek.

 

Ada satu bab yang menarik yaitu pembahasan mengenai penggunaan RDBMS ketika mengimplementasikan pemrograman berbasis obyek. Ivar Jacobson, pengarang buku berjudul “Object Oriented Software Engineering” sekaligus salah satu pencetus UML menyarankan beberapa teknik berikut ini.

  • Problem utama ketika menerapkan konsep obyek ke sistem basis data relasional adalah masalah impedansi. Di sini aplikasi berbasis obyek harus melekat dengan basis data. Padahal konsep RDBMS bebas platform aplikasi. Untuk itu perlu mengurangi kelekatannya dengan sedikit mengatur pentabelannya.
  • Konversikan atribut menjadi field atau kolom dalam tabel. Jika tidak cukup, buat satu tabel baru yang mengakomodasi atribut yang kompleks yang dimiliki oleh aplikasi berbasis obyek.
  • Instansiasi pada aplikasi berbasis obyek dikonversikan menjadi record atau baris pada tabel RDBMS.
  • Ketika dijumpai satu relasi [0..N], buat satu tabel baru dengan kunci diambil dari bagian yang bukan “many”. Kasus ini sering dijumpai ketika membuat tabel “detil pemesanan” ketika dijumpai jumlah pesanan yang lebih dari satu untuk satu orang pelanggan.
  • Kasus yang terberat adalah masalah inheritance dimana ada sedikit sudut pandang dalam mengkonversikan menjadi RDBMS. Dua pilihan yang mungkin diambil antara lain: 1) membuat kelas abstrak dalam satu tabel, dan 2) tidak membuat kelas abstrak. Masing-masing punya kelemahan dan kelebihan. Untuk kecepatan akses, pembuatan kelas abstrak menjadi tabel tersendiri (pilihan 1), mengakibatkan lambatnya proses ketika melakukan proses “join” pada instruksi SQL.

Memang dari sudut pandang pemrograman berbasis obyek, RDBMS terlihat sangat primitif karena membatasi kelas dalam tipe data tertentu, ditambah lagi tidak bisa menyimpan method/operasi dalam suatu tabel, dan mengandalkan aplikasi. Demikian, resensi singkat, semoga bermanfaat.

Iklan

Unified Process (UP) dan Unified Modeling Language (UML)

Untuk UML kita sering mendengarnya, terutama bagi mahasiswa jurusan ilmu komputer, teknik informatika, ataupun sistem informasi. Sementara UP, sepertinya jarang terdengar, terkadang kurikulum pun tidak memasukannya. Biasanya UP dipisahkan dengan UML karena UP merupakan bagian dari proses perancangan perangkat lunak. Terkadang juga masuk dalam materi analisa dan disain sistem informasi.

Untuk informasi mengenai apa itu UP bisa dilihat di internet, misalnya wikipedia yang sepertinya akurat, sesuai dengan teori yang ada. Untuk yang ingin detilnya bisa lihat rujukan buku milik Jim Arlow (Arlow & Neustadt, 2005) atau karangan Craig Larman (Larman, 2005).

Lalu hubungannya apa UP dengan UML? Sebelumnya ada istilah Rational Unified Process (RUP) yang merupakan benchmark IBM untuk menggambarkan proses perancangan perangkat lunak. Untuk menghindari penamaan pabrikan/vendor, tri-amigos: Ivar Jacobson, James Rumbaugh dan Grady Booch menerbitkan buku khusus UP. Mereka merupakan para pencetus UML, tool untuk penggambaran dan pemodelan sistem berbasis obyek. Jadi UP itu pemodelan dan framework proses sementara UML hasil dari prosesnya (masih dalam bentuk blue-print).

UP bersifat iteratif yang tiap iterasi terdiri dari tahapan-tahapan sebagai berikut, untuk menghafalnya disingkat IEKT:

  • Incepsi: penentuan tujuan-tujuan (life cycle objectives)
  • Elaborasi: pembuatan arsitektur sistem
  • Konstruksi: kapasitas dan kemampuan sistem dibentuk
  • Transisi: produk siap uji

Buku Arlow membahas keempat tahapan UP tersebut yang dikombinasikan dengan waterfall (requirements, analisis, disain, implementasi dan testing, disingkat RADIT). Bentuknya di tiap-tiap RADIT ada IEKT dari UP. Namun ada juga yang sebaliknya, di tiap IEKT-nya UP ada RADIT. Namun yang dibahas di buku adalah yang bentuk pertama. Sementara itu ketika melihat buku Larman yang cukup tebal, ternyata UP hanya sampai Elaborasi. Tidak ada konstruksi dan transisi. Belum sempat saya baca sampai sana, hanya saja ada elaborasi-1, elaborasi-2. Bukunya cukup tebal dengan bahasa Java sebagai ilustrasinya.

Sempat saya baca juga dalam satu kolom khusus dalam buku Larman, bahwa tidak ada peluru perak (istilahnya senjata pamungkas pembunuh vampir) dalam bentuk tools atau teknik perancangan perangkat lunak, dikatakan oleh Dr. Frederick Brookes (lihat buku Mythical Man-month). Jadi kalau ada yang bilang suatu teknik itu ampuh untuk segala bentuk sistem, dipastikan tidak mungkin alias gombal, baik yg mengatakan itu dosen ataupun sales CASE (alat bantu pembuatan software). Tetap saja jika pengguna tidak memahami konsep Object Oriented akan kesulitan menggunakan CASE jenis apapun (dibahas di buku: “Death by UML Fever” karangan Booch). Seperti biasa, tiap buku berbeda-beda pahamnya, seperti post yang lalu bahwa beberapa buku analisa disain/rekayasa perangkat lunak (Pressman, 2001; Sommerville, 2007) masih mentolerir menggunakan non-object programming dengan UML. Tidak ada salahnya juga menggunakan model lain yg bukan standar UML untuk penggambaran sistem berbasis objek asal bermaksud memperjelas pembacaan model (Fowler, 2004). Tetapi alangkah idealnya jika sistem yg dirancang dengan UML berbasis object. Selamat ber-UML.

Reference

Arlow, J., & Neustadt, I. (2005). UML 2 and the Unified Process (Second). United States: Pearson Education Limited.

Fowler, M. (2004). UML Distilled (3rd ed.). United States: Pearson.

Larman, C. (2005). Applying UML and Patterns (3rd ed.). United States: Pearson.

Pressman, R. S. (2001). Software Engineering – A Practitioner’s Approach (Fifth Edit). New York: McGraw Hill.

Sommerville, I. (2007). Software Engineering – Eighth Edition. London: Pearson Education Limited.

 

Materi Ujian PBO

SOAL PRAKTEK:

Buka file “JAVA” yang sudah difberikan. Buka Eclipse, Netbeans, JCreator, FreeJava, dll.

Beri nama project, misalnya UAS sehingga muncul project UAS di jendela Package Explorer. Copy – dan Paste soal yang diberikan ke project tersebut pada folder “SRC“. Coba jalankan dengan mengklik kanan file tersebut, misalnya Customer.java pada lesson 3.

Jika sudah jalan, ikuti soal yang diberikan.

Jika diminta membuat format sebagai berikut, coba edit listing yang ada tersebut (kemungkinan diminta menambah satu isian).

SOAL TEORI:

Diberikan diagram kelas dan use case yang harus Anda jelaskan maknanya.

Menangkap Masukan dari Keyboard pada JAVA

Berhubung computer yang ada di lab Software Engineering kebanyakan terinstall Eclipse, maka untuk melakukan basic input output sementara menggunakan console lewat keyboard. Berikut ini cara penulisan listing di class main.

Ada tiga komponen yang harus kita import guna mendapatkan fasilitas input output dengan keyboard antara lain:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

Seperti biasa untuk membuat instan baru di main.java kita panggila kelas yang sebelumnya telah kita buat (persegiPanjang.java). Beri nama instan tersebut misalnya p. Untuk kelas persegiPanjang dapat dilihat pada tulisan saya terdahulu. Perhatikan listingnya sebagai berikut di IDE Eclipse (saya menggunakan versi Juno):


Sebenarnya kita bisa langsung mengetik BufferedReader tanpa perlu mengetik import di kepala program karena ketika selesai Eclipse akan memberikan peringatan kalau kita harus mengimport suatu komponen. Kita tinggal mengklik ganda pilihan yang ada dan instruksi import langsung berjalan.

Untuk menangkap data, berarti kita memanggil operation setPanjang dan setLebar dari kelas persegiPanjang, dalam hal ini direpresentasikan dengan objek “p”. Sedangkan untuk mengeluarkan hasil perhitungan luasnya dilakukan dengan memanggil operasion getLuas dari kelas persegiPanjang. Berikut hasilnya jika program di atas di running:


Perhatikan bagian bawah IDE Eclipse. Anda diminta memasukan panjang dan lebar yang kemudian disusul dengan hasil perhitungan Luasnya.

Soft Computing

Istilah soft computing merupakan pelengkap dari hard computing yang merupakan komputasi berdasarkan ketidakpastian. Banyak yang bingung apa bedanya soft computing dengan artificial intelligent (AI). AI lebih dahulu muncul, merupakan metode komputasi berdasarkan simbol-simbol dan dikembangkan oleh bahasa pemrograman tertentu seperti prolog, lisp, clips, dan sejenisnya. Soft computing tidak jauh berbeda dengan AI dalam hal penerapan, tetapi dari sisi perhitungan tetap menggunakan notasi-notasi numerik hanya saja dengan algoritma-algoritma tertentu yang saat ini berkembang pesat antara lain: Fuzzy, ANFIS, Jaringan Syaraf Tiruan, Algoritma genetik dan yang terakhir Bayes. Karena berdasarkan algoritma tertentu maka bahasa pemrograman seperti C++, Java, Matlab dan sebagainya dapat digunakan dan tidak lagi dimonopoli oleh bahasa khusus AI.

Fuzzy yang dipelopori oleh Lutfi Askar Zadeh, pria keturunan Iran yang sempat mengenyam pendidikan di Rusia dan saat ini tinggal di Amerika Serikat merupakan dasar dari Soft Computing. Algoritmanya merupakan konversi dari numerik biasa yang diistilahkan dengan CRISP menjadi fungsi keanggotaan Fuzzy yang bersifat manusiawi (linguistik). Beberapa kritikus menanyakan mengapa fuzzy tetap menyandarkan pada aritmatika, sehingga munculah Fuzzy tipe-2 yang memasukkan unsur ketidakpastian.

Jaringan Syaraf Tiruan, yang merupakan metode yang dikembangkan oleh mcculloch – pitts merupakan algoritma yang berusaha meniru bentuk syaraf biologis makhluk hidup. Dengan konsep Neuron-nya disertai dengan bobot dan fungsi aktivasi merupakan terobosan dalam algoritma soft computing. Setelah sempat redup di tahun 70-an karena tidak sanggup menyelesaikan kasus serderhana seperti XoR, akhirnya algoritma ini marak diteliti kembali setelah Hopfield menemukan metode pembelajaran rambatan kesalahan (backprogragation error) yang sanggup mengeset bobot sesuai dengan target pembelajaran.

ANFIS yang merupakan singkatan dari Adaptive Neuro Fuzzy Inference System merupakan penggabungan dari Fuzzy dengan Jaringan Syaraf Tiruan. Bedanya hanya pada rule yang dibentuk lewat mekanisme pembelajaran (learning). Di antara tiga metode pembuatan rule Fuzzy (Mamdani, Sugeno dan Tsukamoto) hanya Sugeno yang secara efisien mampu diaplikasikan pada ANFIS.

Algoritma Genetik yang masuk dalam kategori Evolutionary Computing merupakan algoritma yang berusaha meniru sifat adaptive dari alam sekitar (mirip teori darwin) dimana organisme yang hidup saat ini adalah organisme terbaik yang berhasil unggul dibanding organisme lain yang sudah punah. Metodenya adalah membangkitkan sembarang bilangan, kemudian dievaluasi dengan fungsi objective dan jika kurang baik maka dimusnahkan, sedangkan yang baik, dikawin silangkan serta dimutasi sehingga menghasilkan individu baru yang lebih baik dari induknya. Operasi ini terus berlangsung hingga dihasilkan individu terbaik hasil dari kawin silang dan mutasi.

Bayes, pertama kali dimunculkan dalam bentuk Naive Bayes yang merupakan komputasi berdasarkan statistik probabilistik. Pengambilan keputusan berdasarkan dengan peluang terbesar di antara kandidat yang ada. Terkadang kondisi di lapangan sangat jarang dijumpai kondisi pasti antara A,B,C atau D, seperti pendeteksian penyakit, peramalan cuaca dan sebagainya. Oleh karena itu hasil dari metode bayes ini merupakan peluang terbesar dari suatu kondisi (tidak 100 % akurat).

Metode tersebut di atas terkadang digabungkan antara satu dengan lainnya untuk menghasilkan akurasi, kecepatan dan efisiensi dalam pengoperasiannya. Karena antara satu metode dengan metode lainnya memiliki kelemahan dan kelebihan masing-masing. Metode mana yang Anda gunakan semua ada di tangan Anda. Termasuk bahasa pemrograman yang menjadi pilihan Anda. Untuk saat ini saya sedang mengimplementasikan algoritma Soft Computing dalam bahasa Java, karena bahasa ini merupakan selain bahasa yang open source, banyak dipakai di peralatan, juga dapat berjalan di aplikasi berbasis Web yang saat ini sedang booming.

Rahmadya Trias Handayanto

Insert Database Access via Java

A. MEMBUAT DATABASE DI MYSQL

Jalankan server Apache pada folder Xamp


Jangan diclose console DOS yang mengindikasikan Apache sudah running. Berikutnya buka browser (Mozilla, IE, dsb). Ketik: localhost/phpmyadmin


Create sebuah database, misalnya database penjualan. Pada kolom “Create new Database” isikan “Penjualan”. Klik Create, maka akan terbentuk satu database penjualan. Berikutnya kita buat satu tabel, misalnya “barang”. Isi nama tabel beserta jumlah field (nanti bias diedit), misalnya field.


Setelah di klik “Go”, MySQL akan membentuk tabel “barang”. Perhatikan juga tipe data yang akan dimuat pada tiap-tiap Field.


Klik “Go” agar Mysql segera membentuk tabel tersebut dilanjutkan dengan “Save“. Jika tidak ada kesalahan, maka tabel barang sudah terbentuk. Tinggal kita memasukan beberapa barang. Pastikan muncul tabel barang pada phpmyadmin.


Database dan tabel akan muncul pada folder Xampplite/Mysql/Data pada windows explorer.


Untuk backup, copy saja subfolder data, ke media lain seperti cdrw/flashdisk. Isikan data pada tabel barang. Klik Insert untuk mengisi data.


Kemudian isikan dua record (tupple).


Maka kita telah berhasil mengisi tabel barang pada database penjualan. Berikutnya kita akan mencoba mengkoneksikan database Mysql tersebut dengan Java disertai operasi Insert Data.

B. MEMBUAT FRAME INSERT DATA

Buka Netbeans 6.0.1 atau 6.9.1. Buat sebuah project baru dengan nama, misalnya penjualan. Jangan lupa arahkan folder di tempat yang kita inginkan, missal di drive D.


Klik “Finish” jika sudah diisi. Maka Netbeans akan menyediakan tempat project kita. Klik kanan pada paket Penjualan > new > JFrame Form.


Beri nama kelas tersebut, misalnya insert. Rancang tampilan Graphic User Interface (GUI) sebagai berikut:


Perhatikan jangan sampai tertukar antara label dengan Text Field. Lalu ganti tampilan dengan klik kanan > edit Text. Kosongkan tulisan jTextField1, jTextField2, jTextField3.


Untuk membuat kode program dobel klik “INSERT” kemudian isikan dengan terlebih dahulu mengkoneksikan database ke java.


Klik symbol lampu, jika muncul karena Java membutuhkan kelas tambahan.

try

{

Class.forName(“com.mysql.jdbc.Driver”);

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/penjualan,”root”,””);

java.sql.PreparedStatement stat = con.prepareStatement(“insert into barang(kode,nama,harga) values(?,?,?)”);

stat.setString(1,jTextField1.getText());

stat.setString(2,jTextField2.getText());

stat.setString(3,jTextField3.getText());

stat.executeUpdate();

javax.swing.JOptionPane.showMessageDialog(null,”berhasil”);

jTextField1.setText(“”);

jTextField2.setText(“”);

jTextField3.setText(“”);

}

catch(Exception e)

{

System.out.println(“gagal” +e);

}

}

Lalu jalankan.