Anda di halaman 1dari 14

Apa itu OOP?

Pemrograman berorientasi objek atau dalam bahasa Inggrisnya disebut dengan Object Oriented
Programming (selanjutnya disingkat OOP) adalah teknik pemrograman yang menggunakan objek.
Pemrograman berorientasi objek ini memiliki kemampuan untuk menyembunyikan apa yang tidak
penting bagi penggunanya.

Pada tutorial singkat ini saya menggunakan PHP5 karena PHP5 telah memiliki fitur pemrograman
berorientasi objek yang lebih lengkap daripada versi sebelumnya.

Mengapa harus menggunakan OOP?

Jika anda membuat program skala kecil tentu saja manfaat yang jelas dari OOP ini kurang terasa.
Tetapi ketika membuat projek program skala menengah sampai besar maka akan terlihat betapa
pentingnya penggunaan OOP.

Mungkin anda berfikir toh sekarang ini baru pemula buat apa belajar OOP kalau OOP lebih
ditunjukan dalam projek pembuatan program skala menengah sampai besar. Mungkin untuk
sekarang bagi anda yang masih pemula dalam pemrograman belum terasa, tetapi jika anda dari
sekarang sudah memiliki pemahaman dasar yang baik mengenai OOP maka ketika tiba waktunya
bagi anda untuk memperdalam OOP anda sudah memiliki persiapan yang matang.

Oleh karena itu pada tutorial ini pun saya tidak membuat anda menjadi ahli dalam OOP. Tutorial ini
lebih ditunjukan supaya anda memiliki pemahaman yang baik mengenai OOP.

Membuat Objek

Langkah awal dalam OOP adalah pembuatan objek di mana objek itu sendiri berasal dari kelas. Oleh
karena itu pertama mari kita membuat kelas. Untuk membuat kelas di dalam PHP anda
menggunakan kata kunci class. Pada contoh berikut kita akan membuat sebuah kelas Emailer.

<?php

class Emailer {}

?>

Pada contoh di atas kita membuat sebuah kelas bernama Emailer. Dalam pembuatan kelas, pertama
kita menggunakan kata kunci class yang kemudian diikuti oleh nama kelas. Kemudian diakhiri dengan
kurung kurawal. Di dalam kurung kurawal kita menuliskan kode-kode supaya kelas tersebut bekerja
seperti yang kita inginkan. Seperti yang bisa anda lihat, pada contoh kode di atas kita belum
memasukan kode apa pun sehingga kelas Emailer tidak melakukan pekerjaan apa-apa.

Kode yang ada di dalam kelas terbagi menjadi dua kelompok, yaitu property dan method. Property
adalah suatu wadah penyimpanan di dalam kelas yang bisa menampung informasi. Sederhananya
property itu bisa disebut sebagai variabel di dalam kelas. Sedangkan method adalah fungsi yang ada
di dalam kelas. Sekarang mari kita berikan sebuah property dan dua buah method di dalam kelas
Emailer.

Sehingga kode akan terlihat menjadi seperti berikut:

PHP Code:

<?php

class Emailer {

private $EmailAddress; //property

public function getEmailAddress() { //method

echo $this->$EmailAddress;

public function setEmailAddress() {

$this->$EmailAddress;

?>

Untuk sekarang abaikan dulu kata kunci public, private, serta $this yang terlihat pada kode di atas.
Kita akan membahasnya nanti. Pada contoh di atas kita menambahkan sebuah property bernama
EmailAddress yang nantinya digunakan untuk menampung alamat email. Kemudian kita juga
menambahkan dua buah method, yang pertama bernama getEmailAddress yang berfungsi untuk
menampilkan isi property EmailAddress. Yang kedua adalah setEmailAddress yang berfungsi untuk
memasukan alamat email ke property EmailAddress.
Menggunakan Kelas

Kode-kode kelas harus berada di dalam script PHP yang menggunakan kelas tersebut. Seringkali
kelas yang dibuat disimpan dalam file yang berbeda dan kemudian disisipkan dengan menggunakan
kata kunci include ketika diperlukan di dalam script PHP.

Untuk menggunakan objek, pertama-tama anda harus membuat objek dari suatu kelas. Pada
konteks ini kelasnya adalah Emailer. Membuat objek dari sebuah kelas dalam bahasa Inggrisnya
disebut instantiating. Untuk membuat objek di dalam PHP, kita menggunakan kata kunci new. Tata
kalimatnya adalah sebagai berikut:

$NamaObjek = new NamaKelas();

Pada kode berikut kita akan membuat objek dari kelas Emailer

PHP Code:

<?php

class Emailer {

private $EmailAddress; //property

public function getEmailAddress() { //method

$this->$EmailAddress;

public function setEmailAddress() {

return $this->$EmailAddress;

//contoh membuat objek di PHP

$emailerObject = new Emailer();

?>
Menggunakan Objek

Kita telah membuat sebuah kelas dan membuat objek dari kelas tersebut. Sekarang mari kita
bereksperimen sedikit dengan objek yang telah kita buat. Pada kode yang baru saja dibuat, kita telah
membuat sebuah property dan dua buah method pada kelas Emailer. Untuk menggunakan method
yang ada pada suatu objek maka harus digunakan operator -> yang kemudian dikuti dengan nama
method yang hendak digunakan. Berikut adalah contoh untuk menggunakan method:

PHP Code:

<?php

class Emailer {

private $EmailAddress; //property

public function getEmailAddress() { //method

return $this->$EmailAddress;

public function setEmailAddress($emailName) {

$this->$EmailAddress = $emailName;

//contoh membuat objek di PHP

$emailerObject = new Emailer();

//menggunakan method

$emailerObject->setEmailAddress("username@example.com");

echo $emailerObject->getEmailAddress();

?>
Ketika kode dijalankan maka akan memunculkan teks username@example.com pada layar web
browser anda. Ini adalah salah satu contoh pemrograman berorientasi objek yang paling sederhana.
Di mana anda menggunakan sebuah objek pada script PHP anda.

Public & Private

Mungkin dari sebelumnya anda sudah bertanya-tanya apa itu public & private yang ada pada kelas
Emailer. Property dan method yang ada pada kelas dapat memiliki sifat public atau private (masih
terdapat satu lagi yaitu protected).

Apa perbedaan di antara keduanya? Private berarti method atau property yang ada di dalam suatu
kelas hanya bisa diakses di dalam kelasnya. Sedangkan pada method atau property yang bersifat
public berarti method atau property tersebut bisa diakses di dalam dan di luar kelas. Pada contoh
kode sebelumnya, kita lihat property EmailAddres bersifat private. Sekarang kita coba property
tersebut diakses dari luar objek emailerObject, sehingga kodenya akan terlihat seperti berikut:

PHP Code:

<?php

class Emailer {

private $EmailAddress; //property

public function getEmailAddress() { //method

return $this->$EmailAddress;

public function setEmailAddress($emailName) {

$this->$EmailAddress = $emailName;

//contoh membuat objek di PHP

$emailerObject = new Emailer();

//mengakses property dari luar objek

$emailerObject->EmailAddress = "username@example.com";
?>

Ketika kode di atas dijalankan maka akan muncul pesan kesalahan sebagai berikut:

Coba ubah property EmailAddress menjadi public, kemudian jalankan kembali kode, maka pesan
kesalahan tidak akan muncul.

Enkapsulasi

Enkapsulasi atau dalam bahasa Inggrisnya disebut sebagai encapsulation adalah mekanisme untuk
mengikat kode dengan data yang dimanipulasinya sehingga kode dan data yang ada di dalamnya
aman dari gangguan luar. Menggabungkan data dan method ke dalam sebuah kelas disebut
enkapsulasi. Pada contoh kode sebelumnya anda baru saja melakukan enkapsulasi:

PHP Code:

<?php

class Emailer

private $EmailAddress; //property

public function getEmailAddress() { //method

return $this->$EmailAddress;

public function setEmailAddress($emailName) {

$this->$EmailAddress = $emailName;

}
//contoh membuat objek di PHP

$emailerObject = new Emailer();

?>

Ket: Bagian enkapsulasi adalah script dengan background kuning.

$this

Sekarang kita berada pada bagian akhir dari tutorial singkat ini. Pembahasan terakhir adalah
operator $this. Di dalam sebuah kelas, $this adalah sebuah variabel istimewa untuk mengakses
property yang ada di dalam kelas yang sedang digunakan. $this tidak bisa digunakan di luar kelas.
Format penggunaan $this adalah sebagai berikut:

$this->namavariabel

Pada kode contoh sebelunya, kelas Emailer memiliki property EmailAddress. Anda dapat mengakses
property EmailAddress seperti berikut:

$this->EmailAddress

Dengan menggunakan $this untuk mengakses property, anda bisa melakukan berbagai operasi
terhadap EmailAddress seperti berikut:

$this->EmailAddress = "example@example.com";

$this->EmailAddress = $UserEmail;

ArrayEmail[$this->EmailAddress] = $UserEmail;

Perhatikan tanda dolar ($), ketika menggunakan variabel anda mengawali nama variabel dengan
tanda dolar. Pada contoh di atas $UserEmail. Tetapi ketika menggunakan $this-> maka variabel atau
property tidak boleh menggunakan tanda dolar. Kesalahan seperti ini seringkali terjadi pada
programmer PHP yang masih pemula. Tetapi dengan latihan secara konsisten, kesalahan dasar
seperti ini akan hilang dengan sendirinya.

Method

Method mendefinisikan apa yang bisa dikerjakan oleh objek. Method ini dibuat di dalam kelas.
Mudahnya Method itu adalah fungsi (function) di dalam kelas atau objek. Pada contoh kode
sebelumnya anda telah membuat dua buah method yaitu getEmailAddress dan setEmailAddress.

Untuk menggunakan method, sama seperti property anda harus menggunakan operator -> sehingga
pada contoh kode sebelumnya ketika anda menggunakan method getEmailAddress dan
setEmailAddress, kode yang anda ketikan adalah sebagai berikut:

$emailerObject->setEmailAddress("username@example.com");

echo $emailerObject->getEmailAddress();

Polimorfisme

Polimorfisme (atau dalam bahasa Inggrisnya ditulis polymorphism) berasal dari dua kata Yunani
kuno yaitu poly yang berarti banyak dan morph yang berarti bentuk. Sehingga menurut asal katanya
polimorfisme berarti banyak bentuk.

Seringkali programmer pemula dibingungkan dengan banyaknya istilah-istilah yang ada pada Object
Oriented Programming. Hal ini membuat topik Object Oriented Programming terkesan sulit untuk
dipahami. Tidak terkecuali untuk polimorfisme.

Polimorfisme pada dasarnya sederhana, bahkan sadar atau tidak sadar dari tutorial sebelumnya
anda telah berkali-kali melakukan apa yang dinamakan sebagai polimorfisme. Seperti yang telah
dijelaskan sebelumnya polimorfisme adalah sebuah proses membuat satu atau lebih objek dari kelas
tertentu. Pada tutorial sebelumnya anda pernah membuat sebuah kelas bernama Produk, masih
ingat? Anggaplah anda telah membuat sebuah kelas Produk. Kemudian anda membuat objek dari
kelas tersebut, katakanlah 3 buah objek seperti berikut:

$keyboard = new Produk();


$mouse = new Produk();

$monitor = new Produk();

Maka anda telah melakukan apa yang dinamakan sebagai polimorfisme. Konsep pewarisan yang
telah dibahas pada tutorial sebelumnya pun bisa kita sebut sebagai polimorfisme. Karena anda
membuat objek yang baru beserta property & method tambahan tetapi masih tetap memiliki
property & method dari kelas orang tua.

Constructor & Destructor

Dalam pemrograman berorientasi objek, anda tidak akan pernah lepas dari yang namanya
Constructor dan padanannya yaitu Destructor. Apa sih Constructor itu? Constructor adalah blok
penyataan khusus (bisa juga disebut method khusus) yang dibuat ketika sebuah objek dibuat. Ketika
anda tidak membuat constructor & destructor di dalam kelas yang anda buat, maka constructor &
destructor akan dibuat secara otomatis. Ketika anda membuat objek $keyboard, $mouse, dan
$monitor pada contoh sebelumnya, secara otomatis dibuatlah constructor untuk ketiga objek
tersebut.

Oke, sekarang pengertian constructor sudah dipahami, lalu untuk apa constructor itu? Umumnya
constructor digunakan untuk memberi nilai awal property pada objek yang dibuat. Tata kalimat
untuk membuat constructor adalah sebagai berikut:

function __construct(parameter)

kode

Kata construct sebelumnya harus diawali dengan dua kali tanda garis bawah pada keyboard.
Kemudian diberi kurung buka & tutup. Di antara kurung bisa diberikan parameter jika anda memang
merasa perlu untuk ditambahkan parameter. Kemudian anda bisa masukan kode di dalam
konstruktor.

Sebagai contoh, misalkan anda membuat kelas produk. Di dalam kelas produk tersebut terdapat
property harga yang nilai awalnya haruslah 0, maka potongan kodenya akan terlihat sebagai berikut:
class produk

private nama;

private harga;

private foto;

private deskripsi;

function __construct()

$this->harga = 0;

...

...

...

Jika constructor dibuat serta digunakan pada saat objek dibuat, maka destructor adalah
kebalikannya. Destructor dibuat serta digunakan saat objek akan dihapus. Pada pemrograman PHP
destructor akan otomatis dipanggil pada saat akhir pengerjaan script PHP anda.

Sama seperti constructor, anda juga dapat memberikan pengaturan tersendiri pada destructor. Tata
kalimat untuk membuat constructor sendiri adalah sebagai berikut:

function __destruct(parameter)

kode

Sama seperti constructor, kata kunci destruct diawali dengan dua garis bawah pada keyboard.
Berikut adalah contoh sederhana lainnya mengenai constructor dan destructor supaya lebih jelas
lagi:
<?php

class MyClass {

function __construct() {

echo "Memanggil constructor<br>";

function __destruct() {

echo "Memanggil destructor<br>";

$Test = new MyClass();

?>

Ketika kode PHP di atas anda jalankan maka anda akan melihat dua teks, yaitu "Memanggil
constructor" dan "Memanggil destructor". Padahal anda tidak memasukan kode memanggil method
__construct() dan method __destruct(). Hal ini terjadi karena seperti yang sudah saya jelaskan
sebelumnya, ketika anda mulai membuat sebuah objek, maka PHP secara otomatis akan membuat
constructor dari objek tersebut. Kemudian ketika objek sudah selesai digunakan dan akan dihapus
dari memori maka secara otomatis destructor dari objek tersebut akan dipanggil.

UML

Bagian ini merupakan tambahan sebagai penutup tutorial singkat Object Oriented Programming
dengan PHP5. Alasan saya menambahkan UML ini karena dalam pemrograman berorientasi objek,
ketika anda mulai membuat program maka anda membuat objek, kelas, dan sebagainya. Sedangkan
sebelum mulai membuat program, terlebih untuk program skala besar, anda harus membuat
perancangan yang baik. Nah, UML adalah teknik analisa & desain program berorientasi objek
sebelum anda mulai membuat program.

Pada bagian ini saya hanya memberikan gambaran singkat mengenai UML. Sehingga anda kelak akan
memiliki persiapan yang baik ketika akan mulai memperdalam UML. Mari kita mulai pembahasan
mengenai UML

Apa itu UML?


UML adalah bahasa pemrograman visual untuk menggambarkan model sistem yang akan dibuat
serta menjelaskan seperti apa sistem yang akan dibuat kelak dengan menggunakan diagram dan
teks. UML menganalisa dan mendesain program berorientasi objek dengan menggunakan sejumlah
diagram, di antaranya adalah sebagai berikut:

Diagram struktur:

Diagram kelas.

Diagram objek.

Diagram komponen.

Diagram deployment.

Diagram perilaku:

Diagram use-case.

Diagram urutan/sekuen.

Diagram kolaborasi.

Diagram statechart.

Diagram aktivitas.

Pada kesempatan ini, saya tidak membahas keseluruhan diagram di atas. Saya hanya membahas
beberapa di antaranya. Apakah semua diagram di atas harus dibuat dalam perancangan program?
Menurut saya pribadi, UML sama seperti bahasa pemrograman lainnya, hanya berupa alat untuk
membantu pekerjaan kita, oleh karena itu jika dalam proyek pemrograman yang dibuat memerlukan
semua diagram di atas maka bisa kita buat. Namun tidak jarang juga kita cukup membuat beberapa
di antaranya saja jika program yang kita buat masih dalam skala kecil.

Saya termasuk orang yang percaya bahwa contoh konkrit jauh lebih mudah dipahami dan berarti
dibandingkan dengan teori yang panjang lebar. Oleh karena itu mari kita mulai belajar mengenai
UML dengan contoh konkrit.

Misalkan anda akan membuat sebuah sistem informasi pada suatu perpustakaan berbasis web
dengan menggunakan PHP, maka perancangan berorientasi objek yang bisa anda lakukan pertama
adalah dengan membuat diagram use-case.
Diagram Use-Case

Diagram use-case digunakan untuk memperlihatkan hubungan antara aktor dan kebutuhan
fungsional di dalam sistem. Maksud dari kebutuhan fungsional adalah apa yang harus dilakukan di
dalam sistem tersebut. Misalkan anda adalah seorang programmer yang akan membuat program
komputer untuk perpustakaan, tentu saja sebelum anda mulai membuat program, anda harus mulai
menganalisa dan membuat perencanaan yang baik.

Program yang akan anda buat misalkan akan digunakan oleh petugas perpustakaan. Kemudian anda
juga dari hasil analisa di lapangan mengetahui bahwa kelak petugas perpustakaan ini akan
menggunakan program anda untuk:

Memasukan data buku yang masuk.

Memasukan data buku yang keluar dipinjam.

Membuat laporan buku masuk.

Membuat laporan buku keluar.

Sehingga dapat dibuat diagram use-case sederhana sebagai berikut:

Dari contoh tersebut bisa kita lihat bahwa user (petugas perpustakaan) adalah aktor, sedangkan
kebutuhan fungsionalitas seperti input buku masuk dan input buku ke luar adalah kebutuhan
fungsionalitas (use-case). Use-case menggambarkan hubungan antara aktor dan kebutuhan
fungsionalitas. Seperti contoh di atas terlihat aktor berhubungan dengan kebutuhan fungsionalitas
yang dihubungkan dengan tanda panah.

Pada diagram use-case, aktor digambakan dengan simbol orang yang kemudian dibawahnya diberi
nama aktor tersebut, sedangkan use-case digambarkan dengan simbol elips di mana di dalamnya
dituliskan kebutuhan fungsionalitasnya. Use-case ini dibuat sebagai gambaran besar seperti apa
program yang akan kita buat sebelum mulai pembuatan program.

Diagram Kelas

Setelah anda mulai memiliki gambaran apa saja yang harus dilakukan program anda melalui diagram
use-case, maka anda mulai membuat diagram kelas. Dalam diagram kelas ini anda merancang kelas-
kelas apa saja yang dibutuhkan dari program yang akan dibuat berdasarkan pada setiap use-case.
Misalkan anda mulai merancang untuk bagian use-case input buku masuk. Anda mulai
memprakirakan kelas apa saja yang perlu untuk dibuat. Dalam contoh kasus ini, misalkan anda
membutuhkan 2 kelas saja, yaitu:

Kelas Buku yang digunakan untuk mengetahui informasi buku.

Kelas BukuMasuk yang digunakan untuk mengetahui buku apa saja yang masuk.

Diagram kelasnya akan terlihat sebagai berikut:

Dari gambar di atas bisa kita lihat pada kotak paling atas merupakan nama kelas, kotak kedua
(tengah) adalah kumpulan property kelas, kotak terakhir (paling bawah) adalah kumpulan method
kelas. Pada gambar di atas terdapat dua kelas yang tersambung dengan sebuah garis. Garis yang
menyambungkan kedua kelas ini, menggabarkan bahwa ada hubungan antara kelas Buku dengan
kelas BukuMasuk.

Pada tutorial sebelumnya, saya sudah menjelaskan mengenai protected, private, dan public. Pada
diagram kelas ini, setiap property atau method bisa bersifat protected, private, atau public. Tanda ‘+’
menunjukan bahwa property/method tersebut bersifat public, sedangkan tanda ‘-‘ menunjukan
bahwa property/method tersebut bersifat private. Adapun untuk property/method yang bersifat
protected menggunakan tanda ‘#’. Namun pada contoh kasus ini saya berusaha menjelaskan
diagram kelas secara sederhana, sehingga property/method yang bersifat protected tidak saya
cantumkan.

Dari perancangan ini saya yakin, anda sudah mulai mengira-ngira apa saja yang harus ada pada
program anda dan kemudian bagaimana langkah-langkah untuk memulai program. Inilah fungsi
utama dari UML. Ketika anda membuat program di mana, jumlah orang yang terlibat di dalamnya
cukup banyak, penggunaan UML seperti ini akan sangat membantu dibandingkan dengan membuat
daftar tugas dengan anggota tim lainnya.

Banyaknya diagram yang dibuat bergantung pada kebutuhan program yang akan dibuat. Semakin
besar dan banyak orang yang terlibat dalam pembuatan program, tentu saja semakin banyak
diagram UML yang akan digunakan.

Anda mungkin juga menyukai