Pemrograman | Pemrograman Berorientasi Obyek (PBO) atau Object Oriented Programming (OOP) adalah salah satu paradigma pemrograman yang berusaha menyederhanakan problem yang diselesaikan sebagai kumpulan dari obyek-obyek. Selain paradigma OOP, masih ada beberapa paradigma pemrograman lainnya, seperti Pemrograman Imperative, Pemrograman Procedural, Pemrograman Functional, dan lain-lain. Namun artikel ini tidak akan membahas semua paradigma tersebut. Artikel ini akan mencoba menjelaskan secara ringkas beberapa konsep penting dalam OOP dan menerapkan konsep tersebut menjadi sebuah program Hello World sederhana.
UPDATE: Karena ada permintaan program Hello World dalam versi PHP, silakan buka spoiler di bagian akhir dari artikel ini
Interface
Interface sering digunakan untuk mendefinisikan sebuah tipe abstrak yang tidak berisi data, dan memaparkan perilaku obyek dalam bentuk kumpulan function atau method. Sebuah class yang memiliki semua function atau method yang sama dikatakan mengimplementasikan interface tersebut. Selain itu, class dapat mengimplementasikan beberapa interface sekaligus. Contoh Interface dalam sebuah code VB.net adalah sebagai berikut
''' Interface Printer ''' Mendifinisikan behavior printer Public Interface Printer Sub PrintOut(ByVal message As String) End Interface
Class
Class adalah template atau pola yang digunakan untuk membuat objek, biasanya berisikan sejumlah nilai awal untuk variable dan implementasi perilaku (behavior) dari sebuah interface. Berikut ini contoh implementasi sebuah Interface Printer dan contoh Class Message yang akan kita gunakan untuk menyimpan pesan yang ingin kita cetak ke printer dalam sebuah code VB.net adalah sebagai berikut,
''' implementasi interface Printer ''' class untuk mencetak ke console Public Class SystemOutPrinter Implements Printer Public Sub PrintOut(message As String) Implements Printer.PrintOut Console.WriteLine(message) End Sub End Class ''' Class berisi pesan yang ingin ditampilkan Public Class Message Private message As String ' constructor Public Sub New(ByVal message As String) Me.message = message End Sub ' fungsi untuk menampilkan pesan Public Sub PrintOut(printer As Printer) printer.PrintOut(Me.ToString()) End Sub ' fungsi untuk mengubah pesan menjadi string Public Overrides Function ToString() As String Return Me.message End Function End Class
Inheritance
Inheritance adalah ketika suatu obyek atau kelas didasarkan pada objek atau class lain. Inheritance adalah sebuah mekanisme penggunaan kembali kode (code reuse). Hubungan inheritance menimbulkan sebuah hubungan hirarki antara parent class dengan child class, dengan child class akan mewariskan semua property/variable dan method yang ada di parent class. Contoh penerapan abstract class dan inheritance menggunakan VB.net adalah sebagai berikut,
''' contoh class abstract ''' harus dibuat object inheritance kalau mau pake Public MustInherit Class AbstractPrinterFactory Public Shared Function GetFactory() As AbstractPrinterFactory ' return default printer factory Return New SystemOutPrinterFactory() End Function Public MustOverride Function GetPrinter() As Printer End Class ''' hasil turunan abstract class Public Class SystemOutPrinterFactory Inherits AbstractPrinterFactory Public Overrides Function GetPrinter() As Printer Return New SystemOutPrinter() End Function End Class
Abstract Class vs. Interface
Jika kita perhatikan di atas, Inheritance dapat berupa extend/inherits class lain, atau implements sebuah interface. Keduanya sama-sama mewariskan semua method ke child class. Namun ada perbedaan yang perlu diperhatikan. Sebuah class hanya bisa extend/inherits dari satu class saja, sedangkan sebuah class bisa implements banyak Interface. Untuk memudahkannya. Inherits menggambarkan hubungan “adalah”, artinya Class Tiger inherits Animals, sama artinya Tiger adalah Animals, Sedangkan Implements artinya “bisa melakukan sesuatu”, misalkan Tiger Implements Running, Swimming. Artinya Tiger bisa Running dan Swimming.
Hello World!
Akhirnya setelah semua siap, sekarang kita buatkan method Main untuk memanggil Hello World kita, seperti di bawah ini
''' module utama Module HelloWorld Public Sub Main() Dim message As New Message("Hello World!") Dim factory As AbstractPrinterFactory Dim printer As Printer ' create printer factory = SystemOutPrinterFactory.GetFactory() printer = factory.GetPrinter() ' display message ' menggunakan printer yang di buat di atas message.PrintOut(printer) End Sub End Module
Dan hasil tampilannya seperti dibawah ini
Source code lengkap menggunakan Visual Studio 2012 silakan unduh di sini.
[collapsed title=Source Code Lengkap versi VB.net]
'''
”’ Class berisi pesan yang ingin ditampilkan ”’
Public Class Message Private message As String ‘ constructor Public Sub New(ByVal message As String) Me.message = message End Sub ‘ fungsi untuk menampilkan pesan Public Sub PrintOut(printer As Printer) printer.PrintOut(Me.ToString()) End Sub ‘ fungsi untuk mengubah pesan menjadi string Public Overrides Function ToString() As String Return Me.message End Function End Class ”’
”’ Interface Printer ”’
Public Interface Printer Sub PrintOut(ByVal message As String) End Interface ”’
”’ implementasi interface Printer ”’
Public Class SystemOutPrinter Implements Printer Public Sub PrintOut(message As String) Implements Printer.PrintOut Console.WriteLine(message) End Sub End Class ”’
”’ contoh class abstract ”’ harus dibuat object inheritance kalau mau pake ”’
Public MustInherit Class AbstractPrinterFactory Public Shared Function GetFactory() As AbstractPrinterFactory ‘ return default printer factory Return New SystemOutPrinterFactory() End Function Public MustOverride Function GetPrinter() As Printer End Class ”’
”’ hasil turunan abstract class ”’
Public Class SystemOutPrinterFactory Inherits AbstractPrinterFactory Public Overrides Function GetPrinter() As Printer Return New SystemOutPrinter() End Function End Class ”’
”’ module utama ”’
Module HelloWorld Public Sub Main() Dim message As New Message(“Hello World!”) Dim factory As AbstractPrinterFactory Dim printer As Printer ‘ create printer factory = SystemOutPrinterFactory.GetFactory() printer = factory.GetPrinter() ‘ display message ‘ menggunakan printer yang di buat di atas message.PrintOut(printer) Console.ReadLine() End Sub End Module
[/collapsed]
Versi PHP
UPDATE: Karena ada permintaan program Hello World dalam versi PHP, silakan buka spoiler di bawah ini untuk lebih jelasnya
[collapsed title=Source Code Lengkap versi PHP]
/* * contoh interface */ interface Printer { public function printOut($message); } /* * class Message * berisi pesan string yang ingin ditampilkan */ class Message { private $message; public function __construct($message) { $this->message = $message; } public function printOut($printer) { $printer->printOut($this->toString()); } public function toString() { return $this->message; } } /* * contoh class abstract * harus dibuat object inheritance kalau mau pake */ abstract class AbstractPrinterFactory { public static function getFactory(){ return new SystemOutPrinterFactory(); } public abstract function getPrinter(); } /* * contoh inheritance dari class abstract */ class SystemOutPrinterFactory extends AbstractPrinterFactory { public function getPrinter() { return new SystemOutPrinter(); } } /* * contoh implementasi interface */ class SystemOutPrinter implements Printer { public function printOut($message) { print $message; } } /* * program utama :) */ class HelloWorld { public static function run($arg) { $message = new Message($arg); $factory = AbstractPrinterFactory::getFactory(); $printer = $factory->getPrinter(); $message->printOut($printer); } } /* * Sekarang jalankan aplikasi */ HelloWorld::run("Hello, World!");
[/collapsed]
Selamat Belajar!