Minggu, 30 Agustus 2009

Pemrograman Berorientasi Objek

PHP pada awalnya hanyalah kumpulan script sederhana. Dalam perkembangannya, selanjutnya ditambahkan berbagai fitur pemrograman berorientasi objek. Hal ini dimulai sejak PHP 4. Dengan lahirnya PHP 5, fitur-fitur pemrograman berorientasi objek semakin mantap dan semakin cepat. Dengan PHP 5, script yang menggunakan konsep object-oriented akan lebih cepat dan lebih efisien.

Pemrograman berorientasi objek atau object-oriented programming (OOP) merupakan suatu pendekatan pemrograman yang menggunakan object dan class. Saat ini konsep OOP sudah semakin berkembang. Hampir setiap perguruan tinggi di dunia mengajarkan konsep OOP ini pada mahasiswanya. Pemrograman yang banyak dipakai dalam penerapan konsep OOP adalah Java dan C++.

OOP bukanlah sekedar cara penulisan sintaks program yang berbeda, namun lebih dari itu, OOP merupakan cara pandang dalam menganalisa sistem dan permasalahan pemrograman. Dalam OOP, setiap bagian dari program adalah object. Sebuah object mewakili suatu bagian program yang akan diselesaikan.

Beberapa konsep OOP dasar, antara lain :
1. Encapsulation (Class dan Object)
2. Inheritance (Penurunan sifat), dan
3. Polymorphisme

PHP khususnya PHP 5 sudah mendukung beberapa konsep OOP. Akan tetapi PHP 5 tidak mendukung konsep Multiple-inheritance dan polymorphisme.


Object dan Class
Bagian dasar dari sebuah program yang berorientasi objek adalah objects. Secara mudah kita dapat memahami mengenai object ini. Sebagai contoh, sebuah mobil adalah objek. Sebuah mobil mempunyai properties atau bagian-bagian di dalamnya, seperti warna, mesin, roda, pintu dsb. Sebuah mobil juga dapat melakukan sesuatu (ada sesuatu yang bisa dilakukan dengan mobil), seperti mengisi bensin, menyalakan mesin, berjalan, mengerem dsb.

Biasanya object adalah sebuah kata benda. Orang adalah object. Demikian juga mobil, pohon, bunga, komputer, TV, buku dsb. Namun, object tidak selamanya sebuah objek fisik. Bisa saja sebuah benda abstrak, seperti account bank, sebuah file di komputer, database, pesan email, acara TV, dsb.

Class merupakan penjelasan atau deskripsi dari object. Di dalam class, terdapat penjelasan tentang suatu object termasuk properties yang dimilikinya serta kelakuan atau method yang bisa dilakukan oleh object. Sebagai contoh, class Orang. Class Orang tentu setidaknya memiliki beberapa bagian seperti tangan, kaki, mata, telinga dsb. Class Orang juga setidaknya harus bisa jalan, bisa loncat, bisa lari, bisa melihat, bisa bicara dsb.

Salah satu keuntungan program didefinisikan dengan konsep OOP adalah adanya pengkapsulan (encapsulation) program dalam class dan object, dimana programmer yang menggunakan class tidak perlu mengetahui isi dan jalannya class secara detail, hanya perlu tahu bagaimana cara menggunakannya. Sama halnya dengan sebuah mobil misalnya. Seorang pemilik mobil tentunya tidak

Properties dan Method
Setiap class memiliki properties yang kadang disebut juga attributes. Properties dari sebuah mobil misalnya warna, ukuran, harga dsb. Di dalamclass, properties dinyatakan dengan sebuah variabel. Misalnya $warna, $harga, dsb.

Method merupakan sesuatu yang bisa dilakukan oleh object. Method dalam PHP sama artinya dengan sebuah fungsi. Method yang mungkin dipunyai dari sebuah mobil misalnya, method untuk menghidupkan mobil, menjalankan mobil, menghentikan mobil, dsb.

Penamaan properties dan method memiliki aturan yang sama dengan penamaan sebuah variabel atau fungsi. Akan tetapi berdasarkan kesepakatan (convention), penamaan properties dan method harus menggunakan camel Caps, dimana tiap kata diawali dengan huruf besar kecuali kata pertama, setiap kata digabung tanpa spasi atau under-score (_).


Mendefinisikan Class


Bentuk umum mendefinisikan sebuah class adalah sbb :

class namaClass
{
Deklarasikan dan definisikan properties di sini
Definisikan semua method di sini
}
Penamaan namaClass pada dasarnya sama dengan penamaan variabel.

Penamaan bebas, boleh apa saja, kecuali stdClass. PHP sudah menggunakan
nama stdClass sebagai nama class built-in. Isi tubuh class terletak di antara
tanda kurung kurawal buka ( { ) dan kurawal tutup ( } ). Di tubuh class terdapat
pendefinisian properties (variabel) dan method-method class.

Menambahkan Properties (Variabel)
Perhatikan contoh pendefinisian class beserta propertiesnya, sbb :
1
class Mobil
2 {
3 var $warna;
var $merk;
5 var $harga;
6
7 //Tambahkan pendefinisian method di sini
8 }
Pendeklarasian variabel dalam class seperti pada contoh di atas, bukanlah

suatu keharusan, karena dalam PHP variabel tidak perlu dideklarasikan, cukup
digunakan saja. Namun demikian, pendeklarasian variabel yang digunakan
sangat dianjurkan untuk kemudahan pembacaan dan pemahaman program.
Variabel class juga dapat langsung diinisialisasi dengan sebuah nilai. Namun
inisialisasi variabel tidak boleh mengandung operasi aritmatika maupun operasi
yang lainnya. Perhatikan contoh sebagai berikut :
1
class Mobil
2 {
3 var $warna = "Biru";
4 var $merk = "BMW";
5 var $harga = "10000000";
6

//Tambahkan pendefinisian method di sini
8 }


Menambahkan Method
Untuk menambahkan method, tinggal mendefinisikan method seperti halnya
fungsi biasa. Misalnya kita akan menambahkan fungsi atau method untuk
mengganti warna mobil dan untuk menampilkan warna mobil. Nama method
pada dasarnya terserah (mengikuti aturan nama variabel). Namun demikian,
jangan menggunakan nama method yang diawali dengan dua buah under-score
(__) yaitu __construct(), __destruct() dan __clone() karena ketiga fungsi
tersebut mempunyai arti tersendiri di PHP.
Lihat contoh menambahkan method sbb :
1
class Mobil
2
{
3 var $warna = "Biru";
4 var $merk = "BMW";
5 var $harga = "10000000";
6
7 function gantiWarna ($warnaBaru)
8 {
9 $this->warna = $warnaBaru;
10 }
11
12 function tampilWarna ()
13 {
14 echo "Warna mobilnya : " . $this->warna;
15 }
16 }
Pada listing program di atas sudah ditambahkan fungsi atau method

gantiWarna() dan tampilWarna(). Untuk mengakses properties (variabel) bisa
menggunakan keyword $this. Keyword ini me-refer pada class tempatnya
berada. Method gantiWarna() mempunyai satu parameter, yaitu $warnaBaru.

Menambahkan Konstruktor
Konstruktor merupakan sebuah method khusus yang akan secara otomatis
dijalankan saat object terbentuk. Konstruktor tidak harus ada, namun dalam satu
class hanya boleh ada satu konstruktor. Method konstruktor biasanya berisi
pemberian nilai default dari masing-masing properties (variabel).
Untuk membuat konstruktor, cukup dengan mendefinisikan suatu fungsi
dengan nama __construct(). Perhatikan contoh sebagai berikut :
1
class Mobil
2 {
3 var $warna;
4 var $merk;
5 var $harga;
6
7 function __construct()
8 {
9 $this->warna = "Biru";
10 $this->merk = "BMW";
11 $this->harga = "10000000";
12 }
13
14 function gantiWarna ($warnaBaru)
15 {
16 $this->warna = $warnaBaru;
17 }
18
19 function tampilWarna ()
20 {
21 echo "Warna mobilnya : " . $this->warna;


Membentuk Objek Class
Untuk menggunakan sebuah objek, harus dibentuk objek dari classnya. Dari
sebuah class bisa dibentuk beberapa objek sekaligus. Bentuk umum
pembentukan objek adalah sbb :

$namaObjek = new namaClass();


Sedangkan untuk memanggil anggota (member) dari class dapat dengan format
sbb :

$namaObjek->variabel;
$namaObjek->namaMethod();

Jumat, 10 Juli 2009

TESTING PERINTAH SQL Part I


Sebenarnya ini adalah materi Ujian Basis Data Penulis, dikarenakan kurang yakin apakah bisa diterapkan sisalah satu bahasa pemrograman, maka Penulis mencoba untuk mengujinya dengan Bahasa Visual Basic Versi 6. Semoga dengan sedikit perintah SQL ini dapat di coba juga oleh rekan-rekan semua yang baru belajar perintah SQL. dengan Database engine yang penulis gunakan adalah mysql.

Step I : Tabel design

Pada tahap pertama ini dengan mendesain tabel dengan struktur sbb :
Desain tabel soal :


Desain tabel dosen :


Desain tabel jadwal :


Desain tabel kuliah :


Desain tabel kurikulum :


Desain tabel mahasiswa :


Desain tabel matakuliah :


Demikian Testing perintah SQL Part I (Desain tabel), dan to Continue di Part II (Perintah Select)............Bye..................

Rabu, 08 Juli 2009

KONEKSI ADODB dengan Ms. Acces 2003 (Form View)



Contoh Studi Kasus--> Pengolahan Data Master Konsumen

Step I :
Buat Database menggunakan MS. Acces dengan struktrur sebagai berikut :
Nama database = konsumen.mdb
Nama table = konsumen

No Field name Type Size
1 kd_pelanggan text 5
2 nm_pelangan text 65
3 Kota text 40
4 Telp text 20

Step II
Desain Sebuah dan konekkanlah dengan Form_menu utama denagn desain form sbb Form dengan sebagai berikut :



Properties frm_konsumen

No Object Properties Value
1 Form Name Frm_konsumen
Startupposition 2. CenterScreen
2 CommodButton Name Cmdnew
Caption Addnew
3 CommodButton Name Cmdedit
Caption Edit
4 CommodButton Name Cmdrefresh
Caption Refresh
5 CommodButton Name Cmdexit
Caption Exit
6 TextBox Name Txtnama
7 Label1 Caption Cari Menurut Nama
8 DataGrid Name DataGrid1

Step III :
Ketikkan KOde Programnya sebagai berikut :

Public cn As ADODB.Connection
Public rs As ADODB.Recordset
Private Sub cmd_exit_Click()
Unload Me
End Sub
Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.Provider = "microsoft.jet.oledb.4.0"
cn.CursorLocation = adUseClient
cn.Open App.Path & "\konsumen.mdb"
Set rs = New ADODB.Recordset
rs.Open "select * from konsumen order by kd_pelanggan", cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
Call Dg
cmd_refresh_Click
End Sub
Sub Dg()
DataGrid1.Columns(0).Caption = "Kode"
DataGrid1.Columns(0).Width = 1000
DataGrid1.Columns(1).Caption = "Nama"
DataGrid1.Columns(1).Width = 3000
DataGrid1.Columns(2).Caption = "Telp."
DataGrid1.Columns(2).Width = 1600
DataGrid1.Columns(3).Caption = "Kota"
DataGrid1.Columns(3).Width = 2000
End Sub
Private Sub txtnama_Change()
On Error Resume Next
Set rs = New ADODB.Recordset
rs.Open "select * from konsumen where nama_pelangan like '%" & Trim(txtnama.Text) & "%' order by kd_pelanggan", cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
Call Dg
End Sub
Private Sub cmd_refresh_Click()
On Error Resume Next
Set rs = New ADODB.Recordset
rs.Open "select * from konsumen ", cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs
Call Dg
End Sub
Private Sub cmdnew_Click()
frmmskonsumen.Show
frmmskonsumen.txtkd_pelanggan.Enabled = True
frmmskonsumen.txtkd_pelanggan.SetFocus
frmmskonsumen.txtkd_pelanggan.Text = ""
frmmskonsumen.txtnama_pelanggan.Text = ""
frmmskonsumen.txtalamat.Text = ""
frmmskonsumen.txttelepon.Text = ""
Me.Hide
End Sub
Private Sub cmdedit_Click()
On Error Resume Next
Set rs = New ADODB.Recordset
rs.Open "select * from konsumen ", cn, adOpenDynamic, adLockOptimistic
If rs.RecordCount = 0 Then
MsgBox "Maaf, Database masih kosong", vbInformation, "PERINGATAN"
Else
frmmskonsumen.txtkd_pelanggan.Enabled = False
frmmskonsumen.Show
frmmskonsumen.txtkd_pelanggan.Text = Trim(DataGrid1.Columns(0).Text)
End If
Me.Hide
End Sub
Private Sub Datagrid1_DblClick()
cmdedit_Click
End Sub
Private Sub Form_Activate()
cmd_refresh_Click
cmd_refresh_Click
cmdnew.SetFocus
End Sub

Step IV
Buat Form Ms unttuk fasilitas input sbb :



Properties Form
No Objeck Properties Value
1 Form Name Frmmskonsumen
Stratupposition 2. CenterScreen
2 Label Caption Kode Pelanggan
3 Label Caption Nama Pelanggan
4 Label Caption Alamat
5 Label Caption Telepon
6 Textboxt Name txtkd_pelanggan
7 Textboxt Name Txtnm_pelangan
8 Textboxt Name txtalamat
9 Textboxt Name txtaelepon
10 CommandButton Name CmdSimpan
Caption Simpan
11 CommandButton Name CmdHapus
Caption Hapus
12 CommandButton Name cmdTutup
Caption Tutup

Step V
Ketik Kode Programnya Sbb :

Public cn As ADODB.Connection
Public rs As ADODB.Recordset
Private Sub cmdTutup_Click()
Me.Hide
frm_konsumen.Show
End Sub
Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.Provider = "microsoft.jet.oledb.4.0"
cn.CursorLocation = adUseClient
cn.Open App.Path & "\konsumen.mdb"
Set rs = New ADODB.Recordset
rs.Open "select * from konsumen ", cn, adOpenDynamic, adLockOptimistic
End Sub
Private Sub Form_Activate()
Set rs = New ADODB.Recordset
rs.Open "select * from konsumen where kd_pelanggan ='" & Trim(txtkd_pelanggan.Text) & "'", cn, adOpenDynamic, adLockOptimistic
If rs.RecordCount = 0 Then
Call kosong
SendKeys "{Home}+{End}"
Else
Call Tampil
SendKeys "{Home}+{End}"
End If
End Sub
Private Sub kosong()
txtnama_pelanggan.Text = ""
txtalamat.Text = ""
txttelepon.Text = ""
End Sub
Sub Tampil()
On Error Resume Next
txtnama_pelanggan.Text = rs("nama_pelangan")
txtalamat.Text = rs("kota")
txttelepon.Text = rs("telp")
End Sub
Private Sub cmdSimpan_Click()
On Error Resume Next
Set rs = New ADODB.Recordset
rs.Open "select * from konsumen where kd_pelanggan ='" & Trim(txtkd_pelanggan.Text) & "'", cn, adOpenDynamic, adLockOptimistic
If rs.RecordCount = 0 Then
rs.AddNew
rs("kd_pelanggan") = Trim(txtkd_pelanggan.Text)
rs("nama_pelangan") = Trim(txtnama_pelanggan.Text)
rs("kota") = Trim(txtalamat.Text)
rs("telp") = Trim(txttelepon.Text)
rs.Update
Else
rs("nama_pelangan") = Trim(txtnama_pelanggan.Text)
rs("kota") = Trim(txtalamat.Text)
rs("telp") = Trim(txttelepon.Text)
rs.Update
End If
MsgBox "Proses Simpan Telah Selesai", vbInformation, "PERINGATAN"
cmdTutup_Click
End Sub
Private Sub cmdHapus_Click()
If txtkd_pelanggan.Text = "" Or txtnama_pelanggan.Text = "" Then
MsgBox "Maaf, Ada Field Yang Masih Kosong", vbInformation, "PERINGATAN"
Exit Sub
End If
X = MsgBox("Yakin Akan Menghapus Data Ini", vbYesNo, "HAPUS DATA")
If X = vbYes Then
Set rs = New ADODB.Recordset
rs.Open "Delete * from konsumen where kd_pelanggan ='" & Trim(txtkd_pelanggan.Text) & "'", cn, adOpenDynamic, adLockOptimistic
Call kosong
cmdTutup_Click
End If
End Sub
'---------------------> Source Program Variasi
Private Sub txtkd_pelanggan_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
SendKeys "{Tab}"
txtnama_pelanggan.SetFocus
End If
End Sub
Private Sub txtnama_pelanggan_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
SendKeys "{Tab}"
txtalamat.SetFocus
End If
End Sub
Private Sub txtalamat_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
SendKeys "{Tab}"
txttelepon.SetFocus
End If
End Sub
Private Sub txttelepon_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
cmdSimpan.SetFocus
End If
End Sub

Senin, 06 Juli 2009

Enkripsi Data



Enkripsi digunakan untuk menyandikan data-data atau informasi sehingga tidak dapat dibaca oleh orang yang tidak berhak. Dengan enkripsi data anda disandikan (encrypted) dengan menggunakan sebuah kunci (key). Untuk membuka (decrypt) data tersebut digunakan juga sebuah kunci yang dapat sama dengan kunci untuk mengenkripsi (untuk kasus private key cryptography) atau dengan kunci yang berbeda (untuk kasus public key cryptography).

Elemen dari Enkripsi
Ada beberapa elemen dari enkripsi yang akan dijabarkan dalam beberapa paragraf di bawah ini.

Algoritma dari Enkripsi dan Dekripsi. Algoritma dari enkripsi adalah fungsi-fungsi yang digunakan untuk melakukan fungsi enkripsi dan dekripsi. Algoritma yang digunakan menentukan kekuatan dari enkripsi, dan ini biasanya dibuktikan dengan basis matematika. Berdasarkan cara memproses teks (plaintext), cipher dapat dikategorikan menjadi dua jenis: block cipher and stream cipher. Block cipher bekerja dengan memproses data secara blok, dimana beberapa karakter / data digabungkan menjadi satu blok. Setiap proses satu blok menghasilkan keluaran satu blok juga. Sementara itu stream cipher bekerja memproses masukan (karakter atau data) secara terus menerus dan menghasilkan data pada saat yang bersamaan.

Kunci yang digunakan dan panjangnya kunci. Kekuatan dari penyandian bergantung kepada kunci yang digunakan. Beberapa algoritma enkripsi memiliki kelemahan pada kunci yang digunakan. Untuk itu, kunci yang lemah tersebut tidak boleh digunakan. Selain itu, panjangnya kunci, yang biasanya dalam ukuran bit, juga menentukan kekuatan dari enkripsi. Kunci yang lebih panjang biasanya lebih aman dari kunci yang pendek. Jadi enkripsi dengan menggunakan kunci 128-bit lebih sukar dipecahkan dengan algoritma enkripsi yang sama tetapi dengan kunci 56-bit. Semakin panjang sebuah kunci, semakin besar keyspace yang harus dijalani untuk mencari kunci dengan cara brute force attack atau coba-coba karena keyspace yang harus dilihat merupakan pangkat dari bilangan 2. Jadi kunci 128-bit memiliki keyspace 2128, sedangkan kunci 56-bit memiliki keyspace 256. Artinya semakin lama kunci baru bisa ketahuan.

Plaintext. Plaintext adalah pesan atau informasi yang akan dikirimkan dalam format yang mudah dibaca atau dalam bentuk aslinya.

Ciphertext. Ciphertext adalah informasi yang sudah dienkripsi. Kembali ke masalah algoritma, keamanan sebuah algoritma yang digunakan dalam enkripsi atau dekripsi bergantung kepada beberapa aspek. Salah satu aspek yang cukup penting adalah sifat algoritma yang digunakan. Apabila kekuatan dari sebuah algoritma sangat tergantung kepada pengetahuan (tahu atau tidaknya) orang terhadap algoritma yang digunakan, maka algoritma tersebut disebut “restricted algorithm”. Apabila algoritma tersebut bocor atau ketahuan oleh orang banyak, maka pesan-pesan dapat terbaca. Tentunya hal ini masih bergantung kepada adanya kriptografer yang baik. Jika tidak ada yang tahu, maka sistem tersebut dapat dianggap aman (meskipun semu).

Meskipun kurang aman, metoda pengamanan dengan restricted algorithm ini cukup banyak digunakan karena mudah implementasinya dan tidak perlu diuji secara mendalam. Contoh penggunaan metoda ini adalah enkripsi yang menggantikan huruf yang digunakan untuk mengirim pesan dengan huruf lain. Ini disebut dengan “substitution cipher”.

Substitution Cipher dengan Caesar Cipher
Salah satu contoh dari “substitution cipher” adalah Caesar Cipher yang digunakan oleh Julius Caesar. Pada prinsipnya, setiap huruf digantikan dengan huruf yang berada tiga (3) posisi dalam urutan alfabet. Sebagai contoh huruf “a” digantikan dengan huruf “D” dan seterusnya.
Transformasi yang digunakan adalah:
plain : a b c d e f g h i j k l m n o p q r s t u v w x y z
cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Dengan Menggunakan Visual Basic 6.0, berikut adalah function untuk Transformasi kelipatan 3 tersebut :
{
Public Function NextChar(Text As String) As String
Dim Ret As String
Dim Char
Dim i As Long
Dim nxt

Text = Replace(Text, vbNewLine, Chr(0))

For i = 1 To Len(Text)
Char = Mid(Text, i, 1)
If Char = " " Then Ret = Ret & " ": GoTo nxt
Char = Asc(Char)

Select Case Char
Case 0
Ret = Ret & vbNewLine
Case 1 To 46
Ret = Ret & Chr(Char + 3)
Case 47
Ret = Ret & Chr(1)
Case 48 To 56
Ret = Ret & Chr(Char + 3)
Case 57
Ret = Ret & Chr(48)
Case 58 To 63
Ret = Ret & Chr(Char + 3)
Case 64
Ret = Ret & Chr(58)
Case 65 To 89
Ret = Ret & Chr(Char + 3)
Case 90
Ret = Ret & Chr(65)
Case 91 To 95
Ret = Ret & Chr(Char + 3)
Case 96
Ret = Ret & Chr(91)
Case 97 To 121
Ret = Ret & Chr(Char + 3)
Case 122
Ret = Ret & Chr(97)
Case 123 To 254
Ret = Ret & Chr(Char + 3)
Case 255
Ret = Ret & Chr(123)
End Select
nxt:
Next i

NextChar = Ret
End Function

}