Thursday, August 7, 2008

Lebih dalam dengan OOP



Apa sih OOP itu ? Untuk apa ?
OOP singkatan dari Object Oriented Programming, keistimewaan dalam pembungkusan memudahkan para programmer mengarungi lautan kehidupan dalam meng-coding ria bersama istri tercintanya, sebuah mesin penuh dengan baut, komputer :D~. Ada beberapa istilah inti dari keistimewaan OOP ini, yang paling menarik adalah class, property, method, inheritance, polymorphisme, dan encapsulation. Apa itu ?!! :D~
Class ini merupakan template untuk objek yang akan dibuat nantinya. Kalau diambil contoh dalam kehidupan sehari-hari. Hmmmm … contoh kasusnya memasak mie. :D~.
Templatenya adalah satu keutuhan cara memasak si mie tersebut.
Sedangkan property-nya atau variable adalah berapa banyak bumbu pedas yang dibutuhkan, berapa banyak minyak yang dibutuhkan, berapa banyak air yang dibutuhkan, berapa banyak bawang gorengnya, etc.
Method sendiri itu sama halnya dengan fungsi yakni bagaimana caranya mie dimasak. Seperti, apakah bumbunya akan dimasukkan kedalam mangkuk terlebih dahulu, atau apakah bumbunya akan di satukan dengan air yang berada di dalam panci. Atau mungkin bisa saja bumbunya langsung dimasukkan kedalam perut yang memasaknya. :D~ ( kebanyakan coding jadi stress ) :D
Inheritance, dalam istilah bahasa indonesianya dikenal dengan turunan. Jelasnya turunan ini berasal dari suatu kelas induk. Kalo diambil contoh dalam memasak mie, masing-masing orang punya keunikan tersendiri dalam memasak mie, seperti dalam memasak mie ada orang yang mengikuti aturan memasak mie, ada juga yang senang di tambah dengan telur, atau mungkin kalo ada yang suka bisa saja martabak keju dimasukkan kedalam mie tersebut. Tapi penulis nggak yakin rasanya, akan seperti apa nantinya :D~~
Sedangkan polymorphisme itu gaya dalam memasak mie itu sendiri, bisa saja ketika memasak mie telurnya itu ditambah dengan kecap manis, atau sambal pedas, atau mungkin terasi. Bisa saja. Iya kan ??~ :D Atau juga, ada yang suka mienya pedas, atau mungkin saja ada yang senang dengan mie rasa manis, mie ditambah gula-gula. Semua bisa saja terjadi.

Nah dari situ timbul satu pertanyaan besar, sebenarnya OOP itu untuk apa sih ? Apakah OOP itu sebagai standarisasi cara memasak mie. :D~
OOP sering digunakan dalam pembuatan aplikasi besar, dimana ketika penambahan fitur terbaru fungsi encapsulation atau pembungkusan dalam class ini sangat berperan penting. Keuntungan lain adalah maintenance ketika ada bug yang bercokol dalam coding ataupun maintenance jenis lain. Dengan mudah terkontrol. Dan menghasilkan coding yang lebih efisien. Contoh nyata OOP yaitu button. Turunan button seperti bit button, push button dan lain-lain. Dimana button-button tersebut sebenarnya adalah bentuk lain dari button induk yang telah di berikan fitur-fitur tambahan.

Implementasinya sudah jelas bukan ? Sekarang penulis akan memberikan sedikit contoh coding menggunakan OOP dalam pembuatan guest book. Dan juga akan dikenalkan sedikit mySQLi API yakni library atau pustaka yang digunakan oleh OOP dalam menghandle database nantinya.

Yups, langsung saja.
Pertama, buat databasenya terlebih dahulu.

File db.sql :
create database oop1 ;
use oop1 ;
create table gb ( id int(5) auto_increment primary key , nama varchar(50), email varchar(50), lokasi varchar(75), komentar text );


Kedua file class.konek.db.php :

/*
ILMUWEBSITE E-LEARNING COMMUNITY
Tutorial PHP - Object Oriented Programming
by : Al-k [ Loka Dwiartara ]
email : alkemail@gmail.com
homepage : http://www.ilmuwebsite.com
*/

// Class atau Template
class konek_ke_database
{

// property
private $host;
private $username;
private $password;
private $koneksinya;
private $database;

// method
function __construct($hostnya, $usernamenya, $passwordnya)
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;
$this->koneksinya = mysql_connect($this->host, $this->username, $this->password) or die("mySQL Errorrojing !!!");
}

function databasenya($pilihdatabase)
{
$this->database = $pilihdatabase;
}

public function seleksi_database()
{
mysql_select_db($this->database, $this->koneksinya ) or die ("Nggak bisa konek euy!!!");
header("location: index.php");
}

}

?>

Kemudian file class.isi.db.php, script ini yang nantinya sebagai tulang punggung antara form isian, dan databasenya :



/*
ILMUWEBSITE E-LEARNING COMMUNITY
Tutorial PHP - Object Oriented Programming
by : Al-k [ Loka Dwiartara
email : alkemail@gmail.com
homepage : http://www.ilmuwebsite.com
*/

require_once "class.konek.db.php";

// Class
class displayDatabase extends konek_ke_database
{

// property
private $perintah;
private $nama;
private $email ;
private $lokasi ;
private $isikomentar;

// method
public function filter_database($nm_user, $email_user, $lokasi_user, $komentar_user)
{
$this->nama = wordwrap(strip_tags($nm_user, ''), 80,"n",1);
$this->email = wordwrap(strip_tags($email_user, ''), 80,"n",1);
$this->lokasi = wordwrap(strip_tags($lokasi_user, ''), 80,"n",1);
$this->isikomentar = wordwrap(strip_tags($komentar_user, ''), 80,"n",1);
}

function insert_database($tabel)
{
$this->perintah = "insert into $tabel values ('','$this->nama', '$this->email', '$this->lokasi', '$this->isikomentar')";
$run_perintah = mysql_query($this->perintah);
if ($run_perintah)
{
// print "Isi Database Berhasil";
}
}

}

?>

Dan terakhir adalah file index.php :


/*
ILMUWEBSITE E-LEARNING COMMUNITY
Tutorial PHP - Object Oriented Programming
by : Al-k [ Loka Dwiartara ]
email : alkemail@gmail.com
homepage : http://www.ilmuwebsite.com
*/

require_once "class.isi.db.php";

$nama = $_POST['nama'];
$email = $_POST['email'] ;
$lokasi = $_POST['lokasi'];
$komentar = $_POST['komentar'];

if ($_REQUEST['comment'] == "yes")
{

if (ISSET($_POST['nama']))
{
$mahasiswa = new displayDatabase("localhost","root","");
$mahasiswa->databasenya("oop1");
$mahasiswa->seleksi_database();
$mahasiswa->filter_database($nama,$email,$lokasi,$komentar);
$mahasiswa->insert_database("gb");
}

}

else
{
// Database dalam OOP
// mySQLi API

$mysqli = new mysqli("localhost", "root", "", "oop1");
if (mysqli_connect_errno())
{
echo("Nggak bisa konek !!!".mysqli_connect_error());
exit();
}

$hasil = $mysqli->query("select * from gb");
while ($data = $hasil->fetch_object())
{
echo "$data->nama
$data->email
$data->lokasi
";

}

}


?>

>
GuestBook


Isi Komentar :





Nama:
Email:
Lokasi:
Isinya:

style='color: #000000; border: 1px solid #000000; background-color: #DFDFDF'>





Dari situ, penulis akan mencoba menjelaskan script tersebut, namun hanya mengambil garis besarnya saja. Dimulai dengan script class.konek.db.php. Disarankan, untuk kedepannya dalam pembuatan kelas diletakan dalam file yang berbeda, hal ini sangat memudahkan dalam maintenance nantinya.
Yups, dalam file class.konek.db.php terdapat satu kelas konek_ke_database. Di dalamnya terdapat property :
$host, $username, $password, $koneksinya, dan $database. Lengkapnya seperti ini :

….
class konek_ke_database
{
private $host;
private $username;
private $password;
private $koneksinya;
private $database;
….

Ada keyword private disana, modifier private ini hanya dapat di akses oleh method yang berada dalam kelas ini, maupun turunannya. Private konsepnya hampir sama dengan hak akses suatu file, metodenya saja yang berbeda. Kita telusuri lagi lebih jauh, penggunaan seperti pengambilan isi atau pun assignment ( pengisian ) property dalam suatu method/fungsi, cukup dengan menggunakan keyword $this->property-nya.

Script contohnya :

function __construct($hostnya, $usernamenya, $passwordnya)
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;


Ini berarti isi property $host dengan isi variable $hostnya.

Sebagai Contoh :

function __construct("localhost", "root", "")
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;


echo $this->host ;

hasilnya menjadi

localhost

Gimana ? Gampang kan ! Ada satu lagi istilah aneh di sana. __construct.


function __construct($hostnya, $usernamenya, $passwordnya)
{


Ini merupakan method yang otomatis di eksekusi ketika pembuatan objek berlangsung. Penggunaanya seperti ini :

….

class displayDatabase
{

….

function __construct($hostnya, $usernamenya, $passwordnya)
{
$this->host = $hostnya ;
$this->username = $usernamenya ;
$this->password = $passwordnya ;
$this->koneksinya = mysql_connect($this->host, $this->username, $this->password) or die("mySQL Errorrojing !!!");
}

}

$mahasiswa = new displayDatabase("localhost","root","");

Yups, untuk selanjutnya cukup mudah dipelajari karena konsepnya sama saja dengan pemrogaman procedural yang biasanya.

Nah Selanjutnya kita pindah ke script class.isi.db.php :

require_once "class.konek.db.php";

class displayDatabase extends konek_ke_database
{
private $perintah;
private $nama;
private $email ;
private $lokasi ;
private $isikomentar;

public function filter_database($nm_user, $email_user, $lokasi_user, $komentar_user)
{
$this->nama = wordwrap(strip_tags($nm_user, ''), 80,"n",1);
$this->email = wordwrap(strip_tags($email_user, ''), 80,"n",1);
$this->lokasi = wordwrap(strip_tags($lokasi_user, ''), 80,"n",1);
$this->isikomentar = wordwrap(strip_tags($komentar_user, ''), 80,"n",1);
}


Di sini jelas terlihat jika class displayDatabase extends konek_ke_database, atau dengan kata lain kelas displayDatabase adalah subclass atau anak turunan dari kelas konek_ke_database. Dalam penggunaannya cukup dengan menggunakan modifier extends di tambah dengan class induk dibelakang kelas turunannya.

Nah penulis akan loncat lagi ke script index.php. Di sini beberapa kalimat yang diambil dari mySQLi api. Sebuah pustaka OOP pada PHP 5 dalam menghandle database. Caranya lebih cepat, mudah, dan tentunya efisien.

$mysqli = new mysqli("localhost", "root", "", "oop1");
if (mysqli_connect_errno())
{
echo("Nggak bisa konek !!!".mysqli_connect_error());
exit();
}

$hasil = $mysqli->query("select * from gb");
while ($data = $hasil->fetch_object())
{
echo "$data->nama
$data->email
$data->lokasi
";

}

Untuk membuat suatu koneksi cukup dengan membuat instance/objek baru.
$mysqli = new mysqli("localhost", "root", "", "oop1");

Kemudian berikan perintah dalam bentuk query.
$hasil = $mysqli->query("select * from gb");

Dan tampilkan isi databasenya
while ($data = $hasil->fetch_object())
{
echo "$data->nama
$data->email
$data->lokasi
";

}

Lebih mudah tentunya !! Yups, cukup sekian mengenai tutorial “Lebih dalam dengan OOP episode 1”. Anda bisa mengembangkan kelas-kelas tersebut dengan mudah tentunya.

Selanjutnya akan dijelaskan lebih jauh penggunaan OOP untuk menghandle database. Sekian. Terima Kasih.

File-file tersebut dapat di download disini.

No comments:

Post a Comment