Object-Oriented Programming PHP
OOP
atau Programming Berorientasi Objek adalam konsep pemgrograman yang
berorientasikan kepada ‘Objek’, dimana struktur data yang berisi karakteristik
dalam bentuk sebuah data, sering disebut sebagai ‘Atribut’ dan kode yang berisi
prosedur, sering disebut sebagai ‘Metode’. Konsep OOP memungkinkan pengembang
program untuk mengelompokan prosedur yang sama ke dalam sebuah Class, hal ini
membantu menjaga proses koding agar tidak menulis kode yang banyak dengan
prosedur yang sama.
Disini saya
akan memberikan sebuah contoh dari penerapan OOP, yaitu sebuah penerapan dalam
Matematika dimana Bangun Datar sebagai sebauh Class dan objecknya
terdiri dari Persegi, Segitiga, Jajar Genjang dan bangun datar lainnya
Struktur
Class
Class adalah
merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant dari
object. class juga merupakan grup suatu object dengan kemiripan
attributes/properties, behaviour dan relasi ke object lain. Misalnya ketika
kita mencari luas maupun keliling sebuah persegi yang menjadi class adalah
bangun datar, karena persegi merupakan salah satu dari bangun datar.
1
2
3
|
<?php
class Trapesium
implements BangunDatar {}
?>
|
Struktur
Object
Object atau Objek
adalah hasil cetak dari class, atau hasil ‘konkrit’ dari class.
Jika diasumsikan apabila classnya adalah bangun datar, maka objectnya bisa
berupa : persegi, persegi panjang, trapesium, segitiga dan lain-lain.
1
2
|
// Membuat
objek baru dengan menggunakan class Persegi
$persegi =
new Persegi(35);
|
Struktur
Method
Method adalah
merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu
object. Method didefinisikan pada class akan tetapi dipanggil melalui object.
Bila diasumsikan method merupakan cara yang digunakan untuk mencari
luas/keliling dari sebuah bangun datar(rumus).
1
2
3
4
|
public function
hitungLuas()
{
return
($this->sisiAtas + $this->sisiBawah)*$this->tinggi /2;
}
|
Struktur
Properti
Property (atau
disebut juga dengan atribut) adalah data yang terdapat dalam sebuah class/objek.
Contohnya properti dari sebuah persegi panjang adalah memiliki panjang lebar,
dan diagonal.
1
2
3
|
public $sisiAtas;
public $sisiBawah;
public $tinggi;
|
Selain
memiliki beberapa struktur, OOP juga memliki sifat-sifat sebagai berikut :
Inheritance
Inheritance atau Pewarisan/Penurunan
adalah konsep pemrograman dimana sebuah class dapat ‘menurunkan’ property
dan method yang dimilikinya kepada class lain.
Konsep inheritance digunakan untuk memanfaatkan fitur ‘code
reuse’ untuk menghindari duplikasi kode program. Contohnya sifat yang
terdapat pada bangun datar dimiliki oleh bangun ruang.
1
2
3
|
class Balok
extends PersegiPanjang {}
class Kotak
extends Persegi{}
class Piramid
extends Segitiga {}
|
Enkapsulasi
Enkapsulasi (encapsulation)
adalah sebuah metoda untuk mengatur struktur class dengan cara
menyembunyikan alur kerja dari class tersebut.
Struktur
class yang
dimaksud adalah property dan method. Dengan enkapsulasi,
kita bisa membuat pembatasan akses kepada property dan method,
sehingga hanya property dan method tertentu saja yang bisa
diakses dari luar class. Enkapsulasi juga dikenal dengan istilah ‘information
hiding’.
Prosedur
yang terjadi di dalam program seperti ini :
1
2
3
4
|
public function
hitungKeliling()
{
return $this->sisi * 4;
}
|
Sedangkan
pengguna/user hanya melihat output dari program diatas tanpa menampilkan
prosedur yang di lakukan program :
Polimorfism
Dari segi
bahasa, Polimorfisme (bahasa inggris: Polymorphism)
berasal dari dua kata bahasa latin yakni poly dan morph.
Poly berarti banyak, dan morph berarti bentuk. Polimorfisme
berarti banyak bentuk
Polimorfisme adalah konsep dimana terdapat
banyak class yang memiliki signature method yang sama. Implementasi dari
method-method tersebut diserahkan kepada tiap class, akan tetapi cara
pemanggilan method harus sama. Agar kita dapat ‘memaksakan’ signature method
yang sama pada banyak class, class tersebut harus diturunkan dari sebuah abstract
class atau object interface.
Contohnya :
Class bangun datar memiliki method hitungLuas maka pada class turunan(bangun
ruang) harus mempunya method yang sama, pada bangun ruang hitungLuas sama
dengan luasPermukaan.
1
|
class Persegi
implements BangunDatar {}
|
Berikut
adalah potongan koding dari program yang kami buat :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?php
// Membuat
konsep dari class Bangun Datar yang akan diturunkan
// Membuat
Interface (Polymorphism) Bangun Datar dan membuat method yang harus ada pada
class yang diturunkan
interface BangunDatar
{
public
function hitungLuas();
public
function hitungKeliling();
}
// Memuat
file-file class yang diturunkan Class Bangun Datar
require "class.trapesium.php";
require "class.jajargenjang.php";
require "class.persegi.php";
require "class.segitiga.php";
require "class.persegipanjang.php";
require "class.lingkaran.php";
require "class.belahketupat.php";
echo "Program
OOP Menghitung Luas dan Keliling Bangun Datar";
echo "<br><br>";
// Membuat
objek baru dengan menggunakan class Persegi
$persegi =
new Persegi(35);
//
Menjalankan Method yang ada untuk menghitung keliling dari Persegi
echo "Keliling
Persegi dengan sisi ". $persegi->sisi ." adalah ". $persegi->hitungKeliling();
|
Dan output
dari program di atas sebagai berikut :
Kesimpulan
Dengan
menggunakan OOP, kita dapat melakukan prosedur yang sama dengan cara memanggil
Method yang di buat sebelumnya, dan prosedur yang dilakukan oleh masing-masing
Class yang di panggil berbeda dengan lainnya, tapi dengan cara memanggil method
yang sama, yaitu hitungLuas(); dan hitungKeliling();
Sumber
Tidak ada komentar:
Posting Komentar