Rabu, 14 September 2011

Creating class dalam Pemrograman Berbasis Objek (PBO)

Kelas digunakan untuk membuat objek, dan berperan sebagai tipe data dari objek. Kelas merupakan sarana pengkapsulan kumpulan data dan kumpulan method yang mengoperasikan kumpulan data tersebut.
Pembuatan kelas di dalam java :

class <classname>
{
                                                //declaration of data member
                                                //declaration of methods
}

Pembuatan kelas lengkap dengan access specifier :

                                class <classname>
{
                                                <access specifier> <deklarasi atribut>
                                                <access specifier> <deklarasi method>
}
                Karena dasar pemrograman OOP adalah obyek, sehingga class yang sudah dibuat akan dibuat obyeknya atau diinstansiasi, cara pembuatan obyek dari kelas adalah :

<class name> <object name>;
<object name> = new <class name>();

Untuk menjalankan program dibutuhkan sebuah method main(). Method main() dapat dideklarasikan di kelas manapun tetapi nama kelas tempat method main() berada harus sama dengan nama file .java nya. Deklarasi mehod main :

public static void main(String[] args)
{
                                //code for the main method
}

Berikut adalah contoh pembuatan kelas dan obyek secara lengkap, berikut dengan main method-nya :

           class  book
           {
                     int price;
                     int pages;
                     public void set(int price,int pages)
                     {
                                this.price=price;
                                this.pages=pages;
                     }
                     public void show()
                     {
                                System.out.println("Books Information");
                                System.out.println("Books Price : "+price);
                                System.out.println("Number of pages : "+pages);
                     }
           }

           public class MainBook
           {
                     public static void main(String[] args)
                                {
           book javabook=new book();
                                javabook.set(60000,100);
                                javabook.show();
                     }
           }

Constructor
           Constructor merupakan metode khusus yang memiliki nama sama dengan kelasnya. Jika kita tidak mengkodekan sebuah constructor, JAVA akan membuat sebuah constructor default untuk kita. Constructor default tidak melakukan apa-apa, namun memungkinkan semua variabel yang tidak diinisialisasi dalam deklarasi diberi suatu nilai default. Pada prinsipnya constructor adalah method yang tidak memiliki return value (secara implisit adalah instant dari kelasnya), hanya saja namanya sama dengan nama kelas, dan dapat diberi modifier akses (public, protected, default, private). Tujuan constructor dibuat adalah untuk melakukan inisialisasi yang diperlukan objek baru.
           Contoh Constructor :

                     class Mahasiswa { 
                                private String nama = "";
                                private int nim = 0;
                                private static int NIM = 0;
                                private double ipk = 0.0;
                                public Mahasiswa() { this.nim = ++NIM; }
                                public Mahasiswa(String na, double i) {
                                           this.nama = na;
                                           this.ipk = i;
                                           this.nim = ++NIM; }
                                public void LihatData() {
                                           System.out.println("Nama : " + nama + "\tNIM : " + nim +
                                           "\tIPK : " + ipk ); }
                     }
                     public class MahasiswaInfo {
                                public static void main(String args[]) {
                                           Mahasiswa mhs1 = new Mahasiswa( "Dinda“ , 3.4 );
                                           Mahasiswa mhs2 = new Mahasiswa( "Ninda“ , 3.25 );
                                           Mahasiswa mhs3 = new Mahasiswa();
                                           mhs1.LihatData();
                                           mhs2.LihatData();
                                           mhs3.LihatData();
                                }
                     }

Class relation
Dalam Object Oriented Programming, kelas-kelas yang terbentuk dapat memiliki hubungan satu dengan yang lainnya, sesuai dengan kondisi dari kelas-kelas yang bersangkutan. Ada beberapa jenis hubungan yang dapat terjadi antara kelas yang satu dengan kelas yang lainnya, antara lain :

1.       Asosiasi
           Asosiasi merupakan hubungan antara dua kelas di yang merupakan hubungan struktural yang menggambarkan himpunan link antar obyek. Contoh dari hubungan asosiasi ini adalah:
                               

2.       Agregasi
           Agregasi merupakan hubungan antara dua kelas di mana kelas yang satu merupakan bagian dari kelas yang lain namun kedua kelas ini dapat berdiri sendiri-sendiri. Agregasi sering juga disebut relasi “part of” atau relasi “whole-part”. Contoh hubungan agregasi ini adalah :
                                         

3.       Komposisi
           Komposisi merupakan bentuk khusus dari agregasi di mana kelas yang menjadi part (bagian) baru dapat diciptakan setelah kelas yang menjadi whole (seluruhnya) dibuat dan ketika kelas yang menjadi whole dimusnahkan, maka kelas yang menjadi part ikut musnah. Contoh hubungan komposisi adalah sebagai berikut:
                                                   
                                                 

4.       Generalisasi

  5.   Spesialisasi

Definisi Pemrograman Berorientasi Objek (PBO)

Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.
Konsep dari object oriented programming (OOP) adalah lebih dari sekedar sebuah konsep pemrograman, Object oriented programming adalah cara berpikir tentang aplikasi yang mempelajari untuk berpikir bahwa aplikasi bukan sekedar prosedur melainkan sebagai object. Object yang dimaksud disini memiliki pengertian suatu modul yang mengkombinasikan antara data dan kode program yang bekerja sama dalam program dengan melewatkan proses satu sama lain. Jadi object oriented programming merupakan cara yang paling efisien untuk menulis program komputer yang sangat mudah untuk di kombinasikan dan untuk dipergunakan kembali.
Object oriented programming lebih memfokuskan kepada manipulasi object. Kenapa seorang programmer harus mempelajari object oriented programming bahkan seorang programmer yang tidak pernah bekerja dengan object oriented programing pun harus mempelajarinya juga. Hal ini dikarenakan pada suatu hari nanti semua bahasa pemrograman akan menambahkan kemampuan object oriented programming pada bahasanya.

Pemrograman berorientasi Objek  mempunyai karakterisitik sebagai berikut:

A.     Abstraksi (abstraction)
Abstraksi adalah suatu cara melihat suatu objek dalam bentuk yang sederhana. Sebagai contoh jika kita melihat sepeda motor. Kita tidak perlu melihat susunan komponen mesin dan dukungan elektriknya yang cukup kompleks dan rumit, namun kita bisa melihat sepeda motor itu sebagai sebuah entitas / satuan tunggal (single entity) yang merupakan sebuah objek yang mempunyai sifat dan karakteristik tersendiri.
Dengan pemikiran yang sederhana ini maka ketika kita mengendarai sepeda motor tersebut kita tidak perlu tahu betapa rumit komponen dan rangkaian yang menyusun sepeda motor. Karena untuk mengendarai sepeda motor yang perlu diketahui adalah bagaimana sepeda motor itu bisa dikendalikan. Sehingga dengan konsep abstraksi ini kita bisa melihat suatu sistem yang kompleks yang terdiri dari subsistem-subsistem yang rumit dan banyak bisa dipandang menjadi sebuah paket sistem yang sederhana.
Pemahaman objek disekitar kita inilah yang akan mendasari pemahaman tentang pemrograman berorientasi objek. Yang paling penting adalah bagaimana mentransformasikan apa yang anda ketahui tentang suatu objek menjadi suatu program.
Contoh Abstraksi:
Contoh berikut  akan menjelaskan penggunaan class abstrak dalam pemrograman Objek dalam Java. Kelas abstrak yang dibuat adalah kelas Animal, kemudian  dengan dua jenis variabel, jumlah kaki dan warna. Ditambahkan method berdasarkan cara jalan dan suaranya
public abstract class Hewan {
private int jmlKaki;
private Color warna;
public abstract void jalan();
public abstract void suara();
{

B.     Pembungkusan (encapsulation)
Selain dengan menggunakan metoda abstraksi dalam menyembunyikan method pada super class, maka juga dapat dilakukan dengan proses pembungkusan suatu fungsi. Dengan kata lain, sebenarnya proses pembungkusan  itu sendiri merupakan salah satu metoda atau mekanisme untuk melakukan abstraksi. Dalam pemrograman tradisional, proses semacam ini sering juga disebut dengan penyembunyian informasi (information hiding).
Dalam melakukan pembungkusan kode dan data dalam java terdapat tiga tingkatan akses data yang perlu diketahui  yaitu:
1.       Tingkat akses Private
2.       Tingkat akses Protected
3.       Tingkat akses Public

C.      Pewarisan (inheritence)
Dalam penggunaan konsep pewarisan antara lain : pertama kita dapat menggunakan kelas - kelas yang kita buat ( sebagai superkelas ) dan membuat kelas - kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behavior umum yang dimiliki superkelas. kedua, kita dapat membuat superkelas yang hanya mendefinisikan behavior namu tidak memberi implementasi dari metode - metode yang ada. Hal ini berguna jika kita ingin membuat semacam template kelas. Kelas seperti ini disebut kelas abstrak.Subkelas - subkelas dari kelas semacam ini disebut kelas konkret. Kelas abstrak hanya memiliki satu atau lebih metode abstrak. Subkelas dari kelas ini bertanggung jawab untuk memberikan implementasi untuk metode – metode abstrak tersebut.


D.     Polimorfisme (polymorphism)
Polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu  superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan.

OBJEK DAN KELAS (CLASS AND OBJECT)
Yang pertama dan paling dasar dari konsep OOP terlebih dahulu adalah :

1.     OBJECT
Objek adalah sebuah benda. Meskipun objek memang tidak harus sebuah benda, namun cara paling cepat untuk memahami tentang objek adalah membayangkannya sebagai sebuah benda. Yang luar biasa dari cara berpikir berorientasi objek adalah kita dapat melihat sebuah benda secara sederhana sebagai sebuah objek saja, atau kita dapat melihat sebuah benda sebagai wujud dari kumpulan banyak objek yang bekerja sama bergabung menjadi satu.
Contoh : di mata seorang penumpang bus, melihat bus hanyalah sebuah objek yang mengantarkan dia dari satu kota ke kota yang lain, berbeda halnya dengan seorang montir yang sama-sama melihat bus namun dia melihat lebih banyak objek bus seperti mesin, suspensi, hidrolik, dsb dibanding dengan penumpang bus tadi. Di dalam konsep OOP, kumpulan kode program dibuat pada objek, sehingga fungsinya dapat di pisahkan antara satu objek dengan objek yang lainnya, sehingga apabila terdapat BUG (kesalahan kode), pembetulannya dapat dilokasikan pada objek tertentu dengan mudah tanpa merusak tatanan kode yang lain. Seperti pada bus tadi, apabila terjadi kerusakan misalkan lampu depan mati, prosesnya membetulkannya tinggal mengganti lampu atau mengecek kabelnya saja, tidak perlu membongkar mesin atau melepas roda.

2.     CLASS
Class atau Kelas merupakan kumpulan dari objek yang mempunyai sifat sejenis. Di dalam dunia pemrograman, class digunakan untuk menciptakan objek. Satu class dapat digunakan untuk membuat banyak object. Seumpama kita membangun rancangan rumah yang digunakan untuk mebangun ratusan rumah, hal ini bisa dilakukan karena semua object rumah yang dibangun memiliki karakteristik yang sama, sehingga dapat dibuatkan semacam blueprintnya, tetapi object yang dibangun tetap akan memiliki bentuk fisik tertentu. Kelas dapat didefinisikan menjadi sebuah blueprint yang mendefinisikan variabel dan metode yang sama untuk semua objek sejenis.
          Ada juga variable kelas, variable kelas sebenarnya sama dengan variable instans. Bedanya setiap object berbagi satu dan hanya satu variable kelas, tapi masing - msing memiliki salinan dari varibale instans. Disamping variable terdapat juga metode kelas, Metode jenis ini dapat langsung dipanggil melalui kelas dan bukan dari intans kelas tersebut.