Sabtu, 01 Desember 2012

PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK


OOP berputar pada konsep dari object sebagai dasar element dari program anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa objek disekitar kita, seperti mobil, singa, manusia dan seterusnya. Object ini dikarakterisasi oleh sifat / attributnya dan tingkah lakunya.

 Car                  type of transmission                        turning
                         manufacturer                                  braking
                         color                                              accelerating

Lion                 Weight                                            roaring
                        Color                                              sleeping
                        hungry or not hungry                        hunting
                        tamed or wild

Dengan deskripsi ini, objek pada dunia nyata dapat secara mudah dimodelisasi sebagai objek software menggunakan sifat sebagai data dan tingkah laku sebagai method. Data disini dan method dapat digunakan dalam pemrograman game atausoftware interaktif untuk menstimulasi objek dunia nyata. Contohnya adalah sebagai software objek mobil dalam permainan balap mobil atau software objek singadalam sebuah software pendidikan interaktif pada kebun binatang untuk anak anak.


•> Class:
     - konsep dan deskripsi dari sesuatu(rsw)
     - blueprint/cetakan
•> Object:
     - instance dari class, bentuk (contoh) nyata dari class(rsw)
     - hasil cetakan dari class

Perbedaan Class dan Object

Pada dunia software, sebuah objek adalah sebuah komponen software yang stukturnya mirip dengan objek pada dunia nyata. Setiap objek dibuat dari satu set data (sifat) dimana variable menjabarkan esensial karakter dari objek, dan juga terdiri dari satu set dari methode (tingkah laku) yang menjabarkan bagaimana tingkah laku dari objek. Jadi objek adalah sebuah berkas software dari variable dan method yg berhubungan. Variable dan methods dalam objek Java scara formal diketahui sebagai instance variable dan instance methods untuk membedakannya dari variable klas dan method klas, dimana akan dibahas kemudian.
Klas adalah sturktur dasa dari OOP. Dia terdiri dari dua tipe dari anggota dimana disebut dengan field (attribut/properti) dan method. Field mespesifikasi tipe data yang didefinisikan oleh class, sementara methode spesifikasi dari operasi. Sebuah objek adalah sebuah instance pada class. Ketika diinisialisi, tiap objek mendapat satu set baru dari state variable. Bagaimanapun, implementasi dari method dibagi diantara objek pada kelas yang sama.
Kelas menyediakan keuntungan dari reusability. Software programmers dapat digunakan dari sebuah kelas lagi dan lagi untuk membuat beberapa objek.

•> Atribut / Variable / State

     - Variable yang mengitari class, dengan nilai datanya bisa ditentukan di object
     - Variable digunakan untuk menyimpan nilai yang nantinya akan digunakan pada program
     - Sesuatu yang pasti dimiliki oleh class


Instansiasi Class

Untuk membuat sebuah objek atau sebuah instance pada sebuah kelas. Kita menggunakan operator baru. Sebagai contoh, jika anda ingin membuat instance dari kelas string, kita menggunakan kode berikut :

String str2 = new String(“Hello world!”);

or also equivalent to,


String str2 = "Hello";

Method

Sebuah method adalah bagian terpisah dari kode yang akan dipanggil oleh program utama dan beberapa method lainnya untuk menunjukkan beberapa fungsi spesifik.
Berikut adalah karakteristik dari method :
    1. dapat mengembalikan satu atau tidak ada nilai
    2. dia mungkin dapat diterima sebagai beberapa parameter yang dibutuhkan atau tidak ada arameter sama    
 
        sekali. Parameter juga disebut sebagai fungsi argument
    3. setelah method telah selesai dieksekusi, dia akan kembali pada method yang memanggilnya.

•> Method / Behaviour adalah urutan instruksi yang mengakses data dari object
•> Kegiatan yang dapat dilakukan/dikerjakan oleh class.
•> Method melakukan:
    1. Manipulasi data
    2. Perhitungan matematika
    3. Memonitor kejadian dari suatu event

Sekarang kita ilustrasikan bagaimana memanggil method, mari kita menggunakan kelas string sebagai contoh. Anda dapat menggunakan the Java API documentation untuk melihat semua method dalam kelas string yang tersedia. Selanjutnya, kita akan membuat method kita sendiri. Tapi sekarang mari kita menggunakan apa yang tersedia.
Untuk memanggil sebuah instance method, kita menuliskan :


nameOfObject.nameOfMethod( parameters );

•> Jenis Method:
    - Method dengan return value
    - Method tanpa return value


Menggunakan method :
    String str1 = "Hello";
    char x = str2.charAt(0); //will return the character H
    //simpan pada variabel x
            String str2 = "hello";
    //return boolean
    boolean result = str1.equalsIgnoreCase( str1 );


•> Method yang identifier/namanya sama dengan nama Class
•> Method yang pertama kali di panggil pada proses instansiasi/pembuatan object


Karakteristik Pemrograman Berorientasi Objek

Enkapsulasi

•> Mekanisme menyembunyikan suatu proses dan data dalam sistem untuk menghindari interferensi, dan menyederhanakan penggunaan proses itu sendiri
•> Pembungkusan attribut untuk menghindari akses illegal

•> Enkapsulasi data juga dapat dilakukan dengan cara:
    1. mendeklarasikan instance variable sebagai private
    2. mendeklarasikan method yang sifatnya public untuk mengakses variable tersebut

Inheritance (Pewarisan)
Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya butuh mengimplementasikan perbedaannya sendiri dan induknya.

•> Suatu class dapat mewariskan atribut dan method kepada class lain (subclass), serta membentuk class
 
     hierarchy
•> Tujuan : Reusability, Perluasan Attitude
•> Java Keyword: extends

Polymorfisme

Kemampuan dari referensi untuk mengubah sifat menurut object apa yang dijadikan acuan dinamakan polimorfisme. Polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya.
Contoh lain yang menunjukkan properti polimorfisme adalah ketika kita mencoba melalui referensi ke method. Misalkan kita punya method statis printInformation yang mengakibatkan object Person sebagai referensi, kita dapat me-referensi dari tipe Employee dan tipe Student ke method ini selama itu masih subclass dari class Person.

•> Implementasi konsep polymorphism:
     1. Overloading: Kemampuan untuk menggunakan nama yang sama untuk beberapa method yang berbeda
          parameter (tipe dan atau jumlah)
      2. Overriding: Kemampuan subclass untuk menimpa method dari superclass, yaitu dengan cara
          menggunakan nama dan parameter yang sama pada method


public static main( String[] args )
{
         Person ref;
         Student studentObject = new Student();
         Employee employeeObject = new Employee();
         ref = studentObject; //Person menunjuk kepada object Student
                                         //beberapa kode di sini
}

Array

Pengenalan Array


Dibagian sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian variabel, kita sering menggunakan sebuah tipe data beserta nama variabel atau

identifier yang unik, dimana untuk menggunakan variabel tersebut, kita akan memanggil dengan nama identifier-nya. Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki
identifier yang berbeda untuk tiap variabel.



int number1;
int number2;
int number3;
number1 = 1;
number2 = 2;
number3 = 3;


Seperti yang dapat Anda perhatikan pada contoh diatas, hanya untuk menginisialisasi dan menggunakan variabel terutama pada saat variabel-variabel tersebut memiliki tujuan yang sama, dirasa sangat membingungkan. Di Java maupun di bahasa pemrograman yang lain, mereka memiliki kemampuan untuk menggunakan satu variabel yang dapat menyimpan sebuah data list dan kemudian memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut sebagai
array.
Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama didalam sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa slot. Bayangkanlah array adalah sebuah variabel – sebuah lokasi memori tertentu yang memiliki satu nama sebagaiidentifier, akan tetapi ia dapat menyimpan lebih dari sebuah value.

Pendeklarasian Array


Array harus dideklarasikan seperti layaknya sebuah variabel. Apabila Anda mendeklarasikan array, Anda harus membuat sebuah list dari tipe data, yang diikuti oleh tanda kurung buka dan kurung tutup, yang diikuti oleh nama
identifier. Sebagai contoh,

int []ages;

atau Anda dapat menempatkan kurung buka dan kurung tutupnya setelah
identifier. Sebagai contoh,

int ages[];

Setelah pendeklarasian, kita harus membuat array dan menentukan berapa panjangnya dengan sebuah konstruktor. Proses ini di Java disebut sebagai instantiation ( Kata dalam Java yang berarti membuat ). Untuk meng-instantiate sebuah obyek, kita membutuhkan sebuah konstruktor. Kita akan membicarakan lagi mengenai instantiate obyek dan pembuatan konstruktor pada bagian selanjutnya. Perlu dicatat, bahwa ukuran dari array tidak dapat diubah setelah Anda menginisialisasinya. Sebagai contoh,

//deklarasi
int ages[];

//instantiate obyek
ages = new int[100];

atau bisa juga ditulis dengan,

//deklarasi dan instantiate obyek
int ages[] = new int[100];


Pada contoh diatas, deklarasi akan memberitahukan kepada compiler Java, bahwa identifier ages akan digunakan sebagai nama array yang berisi data-data integer, dan kemudian untuk membuat atau meng-instantiate sebuah array baru yang terdiri dari 100 elemen.

Selain menggunakan sebuah keyword baru untuk meng-instantiate array, Anda juga dapat secara otomatis mendeklarasikan array, membangunnya, kemudian memberikan sebuah value.

Sebagai contoh,
//membuat sebuah array yang berisi variabel-variabel //boolean pada sebuah identifier. Array ini terdiri dari 4 //elemen yang diinisilisasikan sebagai value //{true,false,true,false}

boolean results[] ={ true, false, true, false };

//Membuat sebuah array yang terdiri dari penginisialisasian //4 variabel double bagi value {100,90,80,75}

double []grades = {100, 90, 80, 75};

//Membuat sebuah array String dengan identifier days. Array //ini terdiri dari 7 elemen.

String days[] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};

Pengaksesan sebuah elemen array
Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian dari array, Anda harus menggunakan sebuah nomor atau yang disebut sebagai
index atau subscript.

Sebuah
nomor index atau subscript telah diberikan kepada tiap anggota array, sehingga program dan programmer dapat mengakses setiap value apabila dibutuhkan. Index selalu dalam integer. Dimulai dari nol, kemudian akan terus bertambah sampai list value dari array tersebut berakhir. Perlu dicatat, bahwa elemen-elemen didalam array dimulai dari 0 sampai dengan (ukuranArray-1).

Sebagai contoh, pada array yang kita deklarasikan tadi, kita mempunyai,
//memberikan nilai 10 kepada elemen pertama array

ages[0] = 10;

//mencetak elemen array yang terakhir System.out.print(ages[99]);

Perlu diperhatikan bahwa sekali array dideklarasikan dan dikonstruksi, nilai yang disimpan dalam setiap anggota array akan diinisialisasi sebagai nol. Oleh karena itu, apabila Anda menggunakan tipe data reference seperti String, ia tidak akan diinisalisasi ke string kosong "", sehingga Anda tetap harus membuat String array secara eksplisit.

Berikut ini adalah contoh, bagaimana untuk mencetak seluruh elemen didalam array. Dalam contoh ini digunakanlah loop, sehingga kode kita menjadi lebih pendek.
     public class ArraySample{

        public static void main( String[] args ){

             int[] ages = new int[100];

             for( int i=0; i<100; i++ ){

        System.out.print( ages[i] );

             }

        }

     }




Panjang Array

Untuk mengetahui berapa banyak element didalam sebuah array, Anda dapat menggunakan
length (panjang) field dalam array. Panjang field dalam array akan mengembalikan ukuran dari array itu sendiri. Sebagai contoh,

arrayName.length

Pada contoh sebelumnya, kita dapat menuliskannya kembali seperti berikut ini,

       public class ArraySample {

          public static void main( String[] args ){

              int[] ages = new int[100];

              for( int i=0; i<

                  ages.length; i++ ){

          System.out.print( ages[i] );

                  }

           }

        }
 
Array Multidimensi

Array multidimensi diimplementasikan sebagai array didalam array. Array multidimensi dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array. Sebagai contoh,

// Elemen 512 x 128 dari integer array

int[][] twoD = new int[512][128];

// karakter array 8 x 16 x 24

char[][][] threeD = new char[8][16][24];

// String array 4 baris x 2 kolom

String[][] dogs = {{ "terry", "brown" },

{ "Kristin", "white" },

{ "toby", "gray"},

{ "fido", "black"}

};

Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array satu dimensi. Misalnya saja, untuk mengakses element pertama dari baris pertama didalam array dogs, kita akan menulis,
 
System.out.print( dogs[0][0] );
Kode diatas akan mencetak String "terry" di layar.