Object-Oriented Programming
Post on 19-05-2009 10:24

Object-Oriented Programming

 

            “Object-Oriented Programming” adalah sebuah kumpulan kata yang tak asing lagi di kalangan orang yang menyibukkan dirinya di lingkungan Teknologi Informasi (IT). Apa sih sebenarnya kumpulan tiga kata itu? Mari kita bedah mulai dari asal katanya. “Object-Oriented Programming” berasal dari 3 kata, dua kata pertama merupakan sebuah satu kesatuan kata “Object-Oriented” dan yang lainnya adalah kata “Programming”. “Object-Oriented” berarti berorientasi pada object, dalam hal ini perhatian kita tertuju pada apa yang dimaksud dengan object. “Programming” adalah pemrograman atau cara kita membuat program. Apabila digabungkan maka akan berarti cara atau mekanisme pembuatan program dengan berorientasi atau menggunakan object. Object dalam paradigma OOP (Object-Oriented Programming) adalah sebagai tokoh utama dalam penyusunan sebuah sistem aplikasi. Dalam sebuah aplikasi terdiri dari banyak object yang saling berhubungan.

            Dalam OOP terdapat 5 konsep utama yaitu Object, Class, Encapsulation, Inheritance, dan Polymorphism.

  1. Object

Object seperti halnya sebuah procedure dalam pemrograman terstruktur, object adalah bahan utama untuk membangun sebuah aplikasi yang berorientasi object. Dalam sebuah object terdapat :

-          Data (Attribute), dalam object terdapat data yang menjelaskan/menerangkan object tersebut,

-          Perilaku yang terdefinisi (Method), object mempunyai sekumpulan perilaku yang sudah didefinisikan dan object mengetahui bagaimana cara untuk melakukan,

-          Identitas pribadi, ini sangat mungkin untuk mengidentifikasi satu object dengan object yang lain.

  1. Class

Kalau OOP dibangun dari yang namanya Object, Class apa dong? Itu pertanyaan yang sering dilontarkan beberapa orang. Sebenarnya agak susah membedakan yang namanya Class dengan Object, Class adalah blueprint atau ketentuan yang digunakan untuk membuat sebuah object. Kita belum menyadari bahwa dalam pembuatan object secara real kita tidak pernah menggunakan kata-kata object, yang kita pakai adalah sebuah pattern atau pola untuk membuat object. Perbedaan antara Class dan Object sangatlah halus, untuk memahami bagaimana hubungan antara Class denga Object adalah seperti hubungan antara Variable dengan Type datanya.

  1. Encapsulation

Encapsulation bukanlah seperti Class dan Object element dari bahasa Java, tapi encapsulation adalah sebuah teknik bagaimana membuat sebuah object dengan baik. Encapsulation adalah cara pengemasan aplikasi yang kita buat dalam sejumlah Class yang berbeda. Umumnya sebuah program dibagi menjadi 2 Class utama yaitu interface dan implementation. Lho katanya Class/Object itu terdiri dari Attribute dan Method? Lalu apakah interface dan implementation juga merupakan anggota baru dari Class/Object? Jawabannya adalah sama sekali bukan, atribut dan metode ada didalam object sewaktu kita buat, beberapa atribut dan metode didefinisikan secara public artinya dapat diakses dari luar (object lain) nah ini yang dinamakan interface, dan beberapa atribut dan metode hanya didefinisikan untuk konsumsi pribadi/private hanya dapat digunakan oleh object itu sendiri, nah ini yang dinamakan implementation.

  1. Inheritance

Inheritance adalah sebuah bentuk dari object yang dibuat dari object yang sudah ada, dengan mengambil sifat-sifat dan method yang ada dalam object pendahulunya. Sesuai dengan arti kata inherit sendiri yaitu mewarisi. Seperti halnya kita sebagai manusia, kita menjadi anak dari orang tua kita yang menuruni beberapa sifat dari orang tua kita. Misalnya Bapak dan Ibu Joni memiliki putra bernama Jono. Bapak Joni memiliki rambut keriting hidung pesek, dan Ibu Joni memiliki rambut lurus dan hidung mancung, lha si Jono memiliki rambut keriting dan hidung mancung. Nah disini Jono mewarisi sifat dari Ayah dan Ibunya, begitu juga sifat dari object yang ada pada paradigma OOP, object akan menuruni sifat dari object-parent (orang tua) nya.

  1. Polymorphism

Polumorphism apabila diartikan menurut katanya berarti “banyak bentuk”. Ketika sebuah object menerima pesan, object tersebut pastilah mempunyai method untuk menanggapi pesan yang datang tersebut. Apabila suatu object tersebut merupakan turunan dari object laen maka object tersebut pasti akan menuruni semua sifat dari induknya, termasuk juga method-method yang ada. Dalam hubungan induk dan anak ada sebutan superclass dan subclass, superclass sebagai class induk dan subclass sebagai class anak. Walaupun pesan datang dan ditanggapi oleh method yang sama dengan superclass namun behavior atau perilaku yang akan dilakukan subclass belum tentu sama dengan superclass nya. Subclass dapat mendefinisikan sendiri sebuah perilaku yang akan dilakukannya, ini yang dimaksud dengan “banyak bentuk” atau polymorphism.

 

Java Dan Object-Oriented Programming

            Dalam programming kita mengenal adanya bahasa pemrograman tingkat tinggi yang bernama “Java”. Java adalah bahasa pemrograman turunan bahasa C, oleh karena itu secara sintak mirip sekali dengan sintak C. Namun Java bisa dibilang merupakan perbaikan atau penyempurnaan dari bahasa beberapa bahasa pemrograman. Java adalah Object-Oriented Language, dalam awal pengembangannya java mengusung misi berorientasi object.

            Berikut beberapa sintak yang merupakan implementasi dari sifat atau karakteristik dari paradigma Object-Oriented Programming dalam bahasa Java.

  1. Object, Class dan Inheritance

Seperti yang dijelaskan sebelumnya bahwa untuk membedakan class dan object dalam Java adalah sulit, untuk memahaminya mari kita bayangkan bahwa class adalah variable dan object adalah type datanya. Berikut contoh bagaimana implementasi sebuah class dalam Java.

Untuk mendifinisikan sebuah class shape kita menggunakan sintak public abstract class shape, dimana shape akan didaulat menjadi class abstract (class yang menjadi pattern class untuk subclass-nya).

shape.java

public abstract class shape {

     abstract void getLuas();

}

 

segiempat.java

public class segiempat extends shape {

     private int panjang = 0;

     private int lebar = 0;

    

     // Konstruktor

     public segiempat(int p, int l)

     {

          this.panjang = p;

          this.lebar = l;

     }

    

     // Method turunan

     void getLuas() {

          countLuas();

     }

    

     // Private Method

     private void countLuas()

     {

          int Luas = 0;

          Luas = this.panjang * this.lebar;

          System.out.println(“Luasnya : ”+Luas);

     }   

}

 

Class shape akan mempunyai method getLuas yang akan diturunkan pada turunannya misalnya segiempat.

Dalam Java untuk menandakan bahwa suatu class merupakan turunan dari superclass kita menggunakan sintak extends pada pendefinisian class. Pada contoh ini class segiempat menuruni sifat dari class shape. Method milik shape akan menjadi milik segiempat juga.

Bagaimana cara menggunakan class tersebut ? Apabila pendefinisian sebuah class telah dilaksanakan, selanjutnya class bisa digunakan dalam aplikasi java yang kita banguna.

 

cobashape.java

public class cobaShape {

     public static void main(String[] args) {

          segiempat sg4 = new segiempat(5,6);

         

          sg4.getLuas();

     }

}

 

Dalam program cobashape.java class segiempat di-instansiasi menjadi sebuah object yang bernama sg4. Proses instansiasi biasanya ditandai dengan kata new dan menjalankan method kontruktor milik class segiempat, dalam class segiempat kita harus mendefinisikan parameter yang diminta yaitu panjang dan lebar. sg4 mempunyai method seperti orang tuanya yaitu getLuas(), dengan menuliskan sg4.getLuas() berarti kita memanggil method getLuas milik sg4 untuk dijalankan. Dan hasilnya adalah :

 

Luasnya : 30

 

  1. Encapsulation

Pada contoh diatas kita mendefinisikan class segiempat yang merupakan turunan dari class shape. Dalam pendifinisian class segiempat terdapat method yang bersifat public dan private. Class segiempat mempunyai dua method selain konstruktor yaitu getLuas yang merupakan turunan dari superclass-nya dan countLuas yang merupakan method milik pribadi dari segiempat. getLuas bersifat public dan countLuas bersifat private artinya hanya getLuas saja yang bisa dipanggil dari luar object, untuk countLuas hanya bisa dipanggil didalam segiempat sendiri. Disini terdapat pembagian mana yang menjadi interface dan mana yang menjadi implementasi.

  1. Polimorphism

“Banyak bentuk” itu artinya bagaimana implementasi sifat ini dalam OOP pada Java? Nah mari kita lihat pada contoh diatas. Sewaktu class segiempat menuruni sifat shape (getLuas) apa perbedaannya? Dalam class shape, pada method getLuas tidak didefinisikan apa yang harus dia lakukan, berbeda dengan getLuas pada segiempat disini ada pendefinisian bahwa apabila apabila getLuas dari segiempat dipanggil maka akan menjalankan method private countLuas. Disini bisa kita garis bawahi bahwa proses menurunkan sifat dari superclass ke subclass bisa saja tidak identik. Subclass bisa mendefinisikan sendiri apa yang ingin dilakukan ketika suatu method sedang dipanggil. Dengan OOP kita bisa memperbanyak sebuah bentukan object dengan sifat yang secara garis besar menuruni sifat superclass nya. Polimorphism diharapkan memperkaya teknis coding para programmer Java.

 

Daftar Pustaka

Gilbert, Stephen et al. Mitchell Waite Signature Series: Object-Oriented Design in Java. Sams. 1998.

http://www.wikipedia.com