• Tidak ada hasil yang ditemukan

10_Object Oriented Programming

N/A
N/A
Protected

Academic year: 2017

Membagikan "10_Object Oriented Programming"

Copied!
10
0
0

Teks penuh

(1)

Pemrograman Berorientasi

Objek

Aryo Pinandito, ST, M.MT Fajar Pradana, S.ST, M.Eng Issa Arwani, S.Kom, M.Sc

1. PENDAHULUAN 1.1 Pengantar 1.2 Tujuan

2. PEMROGRAMAN BERORIENTASI OBJEK 2.1 Class dan Method 2.2 Constructor 2.3 Inheritance 2.4 Encapsulation

2.5 Abstract dan Interface 2.6 Polymorphism

1. PENDAHULUAN

1.1 Pengantar

Pada dasarnya, pemrograman berorientasi objek disusun berdasarkan sebuah konsep objek yang sangat sederhana, namun ketika diterapkan kedalam pemrograman dapat menjadi suatu elaborasi yang sangat rumit.

Pada pemrograman berorientasi objek (OOP), pendekatan pemrograman secara struktural disusun berdasarkan unit-unit konseptual yang berdasarkan jenis data dan fungsionalnya menjadi sebuah tipe data. Sehingga setiap objek dalam pemrograman berorientasi objek memiliki tipe datanya sendiri.

Efektivitas penerapan konsep pemrograman berorientasi objek pada pemrograman web saat ini masih menjadi perdebatan, karena pada dasarnya, pemrograman web adalah pemrograman yang sifatnya dijalankan dengan cepat lalu selesai. Resource-resource yang dibuat dengan menggunakan konsep pemrograman berorientasi objek akan disimpan dalam memory agar dapat digunakan secara berulang-ulang.

Sejauh mana pemrograman berorientasi objek diterapkan pada bahasa pemrograman PHP akan menentukan juga sejauh mana suatu permasalahan dapat diselesaikan dengan menggunakan konsep objek dengan PHP.

1.2 Tujuan

Tujuan pembelajaran pada bab ini adalah mahasiswa mengetahui, memahami, dan mampu mengimplementasikan konsep pemrograman berorientasi dengan bahasa pemrograman PHP dalam membuat aplikasi berbasis web. Elaborasi penerapan konsep OOP yang diharapkan mencakup, class dan method, inhertance, contsructor, encapsulation, abstract, interface, dan polymorphism.

(2)

2. PEMROGRAMAN BERORIENTASI OBJEK

2.1 Class dan Method

Sebuah class pada pemrograman berorientasi adalah sebuah definisi tipe data yang dibuat oleh programmer yang memasukkan fungsi-fungsi lokal sebuah objek beserta properti/atribut yang dimiliki objek tersebut. Class dapat dikatakan sebagai suatu template dari banyak instansiasi objek dengan jenis (class) tersebut.

Objek itu sendiri adalah instansiasi/perwujudan individu dengan struktur data yang didefinisikan dengan suatu class. Objek dapat dikatakan sebagai object instance, atau instance. Sebuah class dapat diinstansiasi menjadi banyak objek. Sekali mendefinisikan sebuah class dapat diinstansiasi menjadi banyak objek.

Variabel anggota adalah atribut, properti, atau instance variable yang menjadi komponen data dalam sebuah definisi class. Fungsi anggota atau dengan kata lain method. Suatu unit/fungsi fungsional yang dimiliki oleh class. Pada bahasa pemrograman PHP, instansiasi objek dilakukan dengan menggunakan keyword new dan operator yang digunakan untuk mengakses member variabel dan fungsi dari sebuah objek adalah operator panah (­>).

Konsep pemrograman berorientasi objek yang dapat diterapkan pada bahasa pemrograman PHP antara lain:

 Pewarisan tunggal (single inheritance), PHP memperbolehkan suatu kelas mewarisi properti dan method dari kelas lain yang sifatnya public dengan menggunakan klausa

extends.

 PHP tidak memperbolehkan pewarisan dari banyak kelas seperti pada bahasa pemrogaman Java. Walaupun pada bahasa pmerograman PHP sebuah class dapat mengimplementasikan banyak antarmuka (interfaces).

 Setiap kelas dapat memiliki sebuah fungsi constructor, yaitu sebuah fungsi yang secara otomatis dijalankan ketika kelas tersebut diinstansiasi ke dalam sebuah objek. Nama fungsi constructor dalam PHP adalah __construct(), walaupun PHP masih memperbolehkan penamaan fungsi yang menjadi constructor dengan nama yang sama dengan nama kelas, namun hal ini tidak disarankan.

 PHP5 memiliki fungsi destructor yang dijalankan ketika suatu objek dihilangkan. Desctructor pada PHP diberi nama __destruct().

 Selain itu, PHP juga menerapkan konsep encapsulation untuk kontrol akses terhadap member atribut atau method, polymorphism, dan namespaces. Khusus namespace baru diimplementasikan pada PHP versi 5.3.

Kode PHP berikut ini memperlihatkan definisi sebuah class dan bagaimana sebuah class dapat diinstansiasi menjadi beberapa objek:

<?php // filename: manusia.class.php

// definisi class manusia class manusia {

  public $nama; // variabel / properti   public function menyapa() { // method     echo $this­>nama . ' bilang Halo!';   }

(3)

// instansiasi objek $susan

// $susan adalah instansiasi dari kelas manusia $susan = new manusia;

// pemberian nilai pada atribut objek $susan­>nama = 'Susan';

// pemanggilan method yang dimiliki oleh objek $susan­>menyapa(); // output: "Susan bilang Halo!"

// instansiasi objek lain dengan class yang sama $joko = new manusia;

$joko­>nama = 'Joko';

$joko­>menyapa(); // output: "Joko bilang Halo!"

?>

2.2 Constructor

Seperti yang pernah dijelaskan sebelumnya, bahwa constructor adalah sebuah fungsi atau method yang secara otomatis dipanggil ketika sebuah class diinstansiasi menjadi sebuah objek. Constructor tidak memiliki tipe data yang menjadi return value-nya secara eksplisit. Constructor tidak dapat diwarisi, walaupun pada banyak bahasa pemrograman yang menerapkan konsep pemrograman berorientasi objek memiliki fitur yang digunakan untuk mengakses method constructor yang dimiliki oleh class parent-nya. PHP memiliki fitur untuk melakukan hal tersebut.

Constructor banyak dimanfaatkan untuk melakukan hal yang selalu dilakukan ketika suatu kelas diinstansiasi. Pada contoh pada class manusia berikut ketika diinstansiasi menjadi sebuah objek properti nama objek tersebut belum memiliki nilai, atau nilainya NULL.

<?php // filename: manusia.class.php

// definisi class manusia class manusia {

  public $nama; // variabel / properti   public function menyapa() { // method     echo $this­>nama . ' bilang Halo!';   }

}

?>

Agar method menyapa() tidak menampilkan properti yang kosong maka sebelum method menyapa() dipanggil, nilai properti $nama harus diisi dengan suatu nilai terlebih dahulu. Dengan memanfaatkan method constructor, maka properti nama dapat langsung diisikan dengan memberikan suatu nilai pada saat class tersebut diinstansiasi. Contoh penerapan method constructor pada class manusia diperlihatkan dalam kode PHP berikut:

<?php // filename: manusia.class.construct.php

(4)

  public $nama; // atribut / properti nama manusia   // method constructor untuk kelas manusia

  public function __construct( $arg ) {     $this­>nama = $arg;

  }

  // method menyapa pada kelas manusia   public function menyapa() { 

    echo $this­>nama . ' bilang Halo!';   }

}

?>

Dapat diketahui bahwa pada method constructor kelas manusia menerima sebuah argumen untuk disimpan dalam atribut nama. Maka untuk menginstansiasi kelas manusia menjadi sebuah objek, sekaligus memberikan nilai terhadap atribut nama yang diberikan melalui method constructor dengan cara:

<?php // filename: manusia.construct.php

// menyertakan class manusia pada kode PHP ini include "manusia.class.construct.php"; 

// instansiasi dengan argumen untuk method constructor $susan = new manusia("Susan");

$susan­>menyapa(); // output: Susan bilang Halo!

$joko = new manusia("Joko");

$joko­>menyapa(); // output: Joko bilang Halo!

?>

Dengan method constructor, hal-hal yang sifatnya perlu dilakukan secara otomatis ketika sebuah kelas diinstansiasi menjadi objek dapat dimasukkan pada method constructor. Sehingga pada contoh tersebut di atas, pemberian nilai terhadap properti nama dapat disingkat dengan dilakukan secara langsung melalui method constructor pada saat instansiasi objek.

2.3 Inheritance

Suatu definisi kelas dapat mewarisi definisi kelas lainnya (parent class) melalui keyword

extends. Contoh syntax dari pewarisan pada bahasa pemrograman PHP adalah sebagai berikut:

<?php // filename inheritance.php

class ChildClass extends ParentClass {   // definisi method dan properti kelas }

(5)

Dengan inheritance (pewarisan), kelas yang mewarisi secara otomatis memiliki seluruh member (method dan properti) dari kelas parent-nya. Method dan properti yang diwarisi memiliki fungsional yang sama dengan parent-nya. Sebagai tambahan, kelas child dapat menambahkan properti dan method diluar dari method dan properti yang dimiliki oleh parent class. Contoh penerapan inheritance pada bahasa pemrograman php adalah sebagai berikut:

 <?php // file inheritance.manusia.php

 // menyertakan file manusia.class.php tempat definisi kelas manusia berada  include "manusia.class.php";

 // definisi kelas mahasiswa yang mewarisi kelas manusia  class mahasiswa extends manusia {

      // definisi constructor

  public function __construct($nama){   $this­>nama = $nama;

  }

      // properti yang dimiliki oleh kelas manusia   public $tugas = 'belajar';

 }  

 // instansiasi kelas mahasiswa  $susan = new mahasiswa('Susan');

 echo $susan­>menyapa() 

  . ' ketika sedang ' . $susan­>tugas;  

 // Output: Susan bilang Halo! ketika sedang belajar

 ?>

Dari contoh tersebut di atas dapat diketahui bahwa properti nama diwarisi dari kelas manusia

dan dapat digunakan langsung oleh kelas yang mewarisinya (mahasiswa). Selain itu, kelas

mahasiswa juga memiliki properti $tugas yang tidak dimiliki oleh kelas parent, yaitu kelas

manusia.

2.4 Enkapsulasi

Enkapsulasi merupakan suatu metode untuk menyembunyikan representasi internal sebuah objek dari luar, sehingga tidak dapat digunakan secara langsung dari luar. Mekanisme enkapsulasi dengan metode abstraksi juga merupakan salah satu cara untuk melindungi properti dari luar.

Berikut ini adalah contoh enkapsulasi dengan menggunakan subclass dengan bahasa pemrograman PHP:

<?php // filename: enkapulasi.php

class pakaian {

(6)

class manusia {

// private properti baju yang menjadi objek kelas pakaian private $baju; 

public function __construct() { $this­>baju = new pakaian; $this­>baju­>warna = 'biru'; }

public function warnaBaju() { return $this­>baju­>warna; }

}

// instansiasi kelas manusia $susan = new manusia(); 

// mengakses properti warna dari method warnaBaju()

echo 'Susan memakai baju berwarna ' . $susan­>warnaBaju();

Dari kode PHP tersebut di atas properti warna pada kelas pakaian dienkapsulasi dengan menggunakan method warnaBaju() pada kelas manusia. Sehingga properti warna pada kelas

pakaian hanya bisa dibaca nilainya melalui method warnaBaju(), namun tidak dapat diganti nilainya dari instance objek kelas manusia, dalam hal ini objek dari kelas manusia adalah

susan. Dalam contoh ini, properti warna pada kelas pakaian dienkapsulasi menjadi read-only melalui public method warnaBaju() pada kelas manusia.

2.4 Abstract dan Interface

Abstract

Abstract adalah sebuah kelas yang tidak dapat diinstansiasi menjadi sebuah objek. Kelas abstract agar dapat digunakan harus diwarisi terlebih dahulu. Method yang didefinisikan dalam kelas abstract dapat berupa method yang juga abstract dan method biasa (method yang ada implementasi/definisinya). Sebuah kelas dapat mewarisi sebuah kelas abstract. Contoh penggunaan kelas abstract adalah sebagai berikut:

<?php // filename: abstract.class.php

// definisi kelas abstract abstract class manusia {

public $nama; }

// kelas mahasiswa yang mewarisi kelas abstract class mahasiswa extends manusia{

// definisi constructor pada kelas mahasiswa public function __construct($nama){

(7)

$this­>nama = $nama; }

}

// instansiasi kelas

$susan = new mahasiswa('Susan');

// akses properti yang dimiliki oleh kelas abstract echo 'Nama mahasiswa: ' . $susan­>nama;

?>

Jika kelas abstract dicoba untuk diinstansiasi maka interpreter PHP akan menghasilkan pesan kesalahan.

Interface

Interface dapat didefinisikan dan dianalogikan sebagai sebuah kontrak. Dimana setiap kelas yang mengimplementasikan interface harus mengikuti definisi yang ditentukan dalam interface. Jika kelas yang mengimplementasikan interface tidak mengikuti aturan definisi yang sama persis dengan signature yang ditentukan dalam interface, interpreter PHP akan menghasilkan pesan kesalahan fatal (fatal-error). Semua method yang didefinisikan dalam interface harus bersifat public. Kelas-kelas yang dibuat dalam bahasa pemrograman PHP dapat mengimplementasikan lebih dari satu interface.

Contoh penggunaan interface dalam bahasa pemrograman PHP adalah sebagai berikut:

<?php // filename: interface.php

// definisi interface interface manusia {

// signature sebuah method 

      // memerlukan sebuah argumen lauk dengan nama method makan public function makan($lauk);

}

// class yang mengimplementasikan interface manusia class mahasiswa implements manusia {

public $nama;

public function __construct($nama){ $this­>nama = $nama;

}

// implementasi method makan($lauk) yang dibuat

      // harus sama persis dengan signature yang didefinisikan       // dalam interface

public function makan($lauk){

echo $this­>nama . ' makan ' . $lauk; }

}

(8)

Dari contoh penggunaan interface pada bahasa pemrograman PHP tersebut, dapat diketahui bahwa didefinisikan sebuah interface manusia yang memiliki method makan() dengan argumen $lauk. Dengan demikian seluruh kelas yang mengimplementasikan interface

manusia harus memiliki sebuah method dengan nama method makan() dan method tersebut memiliki sebuah argumen dengan nama $lauk. Jika signature dalam interface tidak diimplementasikan sesuai dengan signature yang didefinisikan dalam interface, maka interpreter PHP akan menghasilkan pesan kesalahan fatal.

Jika aturan dalam pendefinisian kelas harus dibuat dengan teratur dan ketat, maka penggunaan interface dalam mendefinisikan sangat dianjurkan untuk menjaga konsistensi penamaan method dan argumennya di semua kelas yang mengimplementasikan interface yang sama.

2.6 Polymorphism

Polymorphism adalah suatu teknik pemrograman dengan mengimplementasikan suatu interface yang sama untuk tipe data kelas yang berbeda. Sehingga sebuah objek yang merupakan instansiasi dari kelas dapat "berubah" tipe datanya sesuai dengan kelas yang didefinisikan dengan method dan properi yang sama. Sebagai contoh, pada kode PHP berikut:

<?php // filename: polymorphism.php

// definisi kontrak "binatang" interface class binatang {

  // memiliki method bicara()   public function bicara(); }

// class kucing yang mengimplementasikan interface binatang class kucing implements binatang {

  // harus memiliki method bicara, sesuai kontrak interface   public function bicara() {

    echo "Meong..."; // definisi method bicara class kucing   }

}

// class anjing yang mengimplementasikan interface binatang class anjing implements binatang {

  // juga harus memiliki method bicara, sesuai kontrak interface   public function bicara() {

    echo "Guk... Guk..."; // dengan definisi yang berbeda dengan class kucing   }

}

// contoh penggunaan polymorphism

$hewan = new kucing; // saat ini hewan adalah objek kucing $hewan­>bicara(); // akan menghasilkan output "Meong..." $hewan = new anjing; // hewan berubah menjadi objek anjing

(9)

?>

(10)

REFERENSI

Suehring, Steve. 2009. PHP6 and MySQL 6 Bible. Wiley Publishing, Inc. USA

John C. Mitchell, Concepts in programming languages, Cambridge University Press, 2003 Wm. Paul Rogers, Encapsulation is not information hiding, JavaWorld.com, 05/18/01

PROPAGASI

A. Latihan dan Diskusi (Propagasi Vertikal dan Horizontal)

1. Buatlah kelas yang menganalogikan konsep objek kendaraan! Susunlah kelas tersebut sedemikian rupa sehingga pewarisan (inheritance) diantara kelas-kelas tersebut terlihat dalam penggunaannya!

B. Tugas (Evaluasi mandiri)

1. Jelaskan apa yang dimaksud dengan kelas, objek, properti, dan method! 2. Apa yang dimaksud dengan abstract dan interface?

3. Jelaskan mengenai inheritance, encapsulation, dan polymorphism! Berikan contoh programnya dengan mengambil contoh dalam kehidupan sehari-hari!

Referensi

Dokumen terkait

• Masuk dalam lingkup hukum privat (perdata).. Apabila konflik antara per-UU-an yang bersifat dwingenrecht dengan hukum adat atau hukum kebiasaan:. • PER-UU-AN MENGENYAMPINGKAN

Ruangan yang cukup baik untuk digunakan sebagai tempat pengasapan ikan adalah ruangan yang mempunyai suhu dan kelembaban yang rendah.. Suhu dan kelembaban yang rendah

ABSTRAK' Penelitian ini bertujuan untuk mengetahui pengaruh Lokasi, Harga dan Label Halal Terhadap Keputusan Pembelian Produk Wardah Malang. Jenis penelitian ini adalah

Plant Growth Promoting Rhizobacteria (PGPR) pertama kali didefinisikan oleh Kloepper dan Schroth (1978) untuk mendeskripsikan bakteri tanah yang berkumpul di akar setelah

Dalam kaitannya dengan motivasi kerja, bahwa sasaran jelas, terstruktur, dan sedang akan meningkatkan kemungkinan seseorang untuk mencapainya, Victor vroom dalam teori motivasi

Pada era globalisasi yang penuh cabaran di mana ilmu tersebar luas dan datang dari pelbagaipunca, negara memerlukan modal insan yang bukan sahaja memiliki pengetahuan

Rapat Koordinasi Protokol adalah rapat yang diselenggarakan oleh Biro Protokol dan Persidangan, Sekretariat Wakil Presiden bersama-sama dengan Direktorat Jenderal Protokol

Kemudian plastik panas terus diinjeksikan kedalam cetakan, material dengan suhu yang lebih rendah tadi terdorong terus kedalam dan meniggalkan bekas aliran..