Konsep OOP di Java
Java adalah bahasa pemrograman yang berorientasi Objek, maka dari itu seorang mahasiswa maupun developer java dituntut wajib untuk menyelami konsep OOP dengan sangat dalam, tiap hari kita diharuskan bermimpi tentang inheritance dan hirarki kelas java, kekuatan polymorphism menjadi senjata pamungkas kode yang kita buat, enkapsulasi menjadi napas anda pertama bangun tidur, dan coding menjadi sarapan anda di pagi hari. #eaaa lebay ![:D](http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif?m=1129645325g)
![:D](http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif?m=1129645325g)
Soalnya terkadang banyak juga denger kasus dimana seorang developer java yang sudah berpengalaman bertahun-tahun tapi konsep OOPnya sangat lemah, sehingga kode java malah mirip C atau Pascal dimana banyak method static dan tidak ada design pattern yang diimplementasikan sama sekali. atau programmer java yang awalnya adalah programmer visual basic, menulis kode sama persis seperti ia menulis kode di VB, yaitu dengan meletakkan semua code program dalam satu blok action suatu tombol. enak sih, cuma kelihatan campur aduk, ruwet, berantakan dan berceceran.
Salah satu keunggulan dalam konsep OOP yang kita gunakan ini adalah aplikasi kita buat menjadi cukup modular, dalam beberapa kasus kita bisa mengganti satu class saja untuk melakukan enhancement terhadap aplikasi tanpa perlu mengotak-atik class lainya. Misalnya suatu perhitungan diletakkan dalam sebuah interface, ketika dalam development kita mengimplementasikan sebuah class dengan perhitungan tertentu. Ketika beberapa saat aplikasi berjalan, ternyata ada perhitungan yang berbeda, nah kita tinggal mengimplementasikan interface yang sama dan menginisialisasi perhitungan dengan menggunakan class yang kedua. Hoplaaa, maka aplikasi akan menghitung dengan menggunakan class kedua ini.
Implementasi OOP yang baik akan menawarkan dua kualitas ke dalam aplikasi kita : modular (modularity) dan mudah dipelihara (maintenability). Tetapi kualitas tersebut tidak datang begitu saja, anda harus berusaha keras dengan disiplin tinggi untuk mencapainya. Java memberi anda landasan yang kuat dengan feature OOP, tetapi Java tidak bisa mencegah anda menulis kode yang tidak berkualitas baik, anda masih tetap bisa menulis kode Java dengan gaya prosedural ataupun gaya spagetti.
Dalam OOP ada unsur2 yang harus dipahami antara lain :
1. Objek
Untuk mempermudah pemahaman, maka disini akan dijelaskan melalui analogi. Pada dasarnya semua benda yang adadi dunia nyata dapat dianggap sebagai objek. Misalnya rumah, mobil, sepeda, motor, gelas, komputer, meja, sepatu, dll. Setiap objek memiliki atribut sebagai status (state) dan tingkah laku sebagai behavior.
Contoh objek : Motor. Maka atribute (state) nya adalah pedal, roda, jeruji, speedometer, warna, jumlah roda. Sedangkan tingkah laku (behavior) nya adalah kecepatan menaik, kecepatan menurun, dan perpindahan gigi motor.
Analogi pemrograman berorientasi objek sama dengan penggambara pada dunia nyata seperti contoh di atas. Dalam OOP, state disimpan pada variabel dan tingkah laku disimpan pada method.
2. Class
Definisi class yaitu template untuk membuat objek. Class merupakan prototipe atau blue prints yang mendefinisikan variabel-variabel dan method-method secara umum. Objek merupakan hasil instansiasi dari suatu class. Proses pembentukan objek dari suatu kelas disebut sebagai instantiation. Objek disebut juga sebagai instances.
Misalnya kita dapat analogikan dari seorang manusia, Tuhan menciptakan Class manusia, nah lalu dari Class manusia tersebut dibuatlah objek-objek seperti saya, anda, orang barat, timur, China dsb.
3. Propherty
Propherty merupakan atribut dari sebuah Class, misalnya saja kita ambil contoh lagi Class manusia, nah maka propherty / atribut yang terdapat pada manusia bisa seperti tinggi badan, berat badan, warna kulit, dsb. atau bisa juga diambil contoh sebuah Class segitiga, maka segitiga tersebut pastinya mempunyai propherty / atribut yang digunakannya, seperti misalnya, tinggi, alas, dll.
4. Behaviour / Tindakan
Behaviour / Tindakan di dalam Pemrograman berorientasi Object bisa dikatakan suatu aksi / tindakan yang dilakukan pada suatu objek yang didefinisikan di dalam sebuah Class berupa method.
Disini kita bisa ambil contoh misalnya saja manusia, nah salah satu aksi yang biasa dilakukan seorang manusia adalah menangis dan tertawa.
Konsep2 / Tekhnik yang ada di dalam OOP :
Dalam pemrograman berorientasi Objek 3 hal pokok yang harus dikuasai adalah Inheritance (Pewarisan), Polymorpisme (Banyak Bentuk), dan Encapsulation (Pembungkusan), nah disini saya akan coba sedikit menerangkan 3 pengertian di atas ![:)](http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g)
![:)](http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g)
1. Inheritance ( Pewarisan )
Inheritance (Pewarisan) merupakan suatu konsep dimana suatu Class diwariskan / diturunkan oleh Class lain, yang menyebabkan Class yang mewariskan tersebut dapat mengakses / memiliki seluruh Propherty maupun method / aksi yang ada di dalam Class yang diwariskan tersebut (Class induknya). Dalam java cara untuk melakukan inheritance ini adalah dengan menggunakan keyword extends pada saat pendefinisan classnya.
contoh : public class ayam extends hewan
maka class ayam akan mewarisi seluruh propherty maupun method yang ada pada class hewan, class ayam tersebut juga dapat merubah / mengoveride method yang ada pada class hewan sesuai dengan kegunaannya.
2. Polymorphisme
Polymorphisme (banyak bentuk) merupakan sebuah istilah dalam OOP dimana kita dapat membuat banyak method / aksi dengan nama yang sama, namun dengan parameter yang berbeda.
3. encapsulation
Encapsulation adalah suatu teknik pembungkusan suatu propherty dalam sebuah Class, agar propherty tersebut tidak dapat digunakan secara sembarangan oleh Class lain, teknik enkapsulasi ini berkaitan dengan hak akses suatu variabel, misalnya seperti penggunaan hak akses private, protected, dll.
Sebenarnya fungsi dari enkapsulasi ini sendiri agar propherty yang ada dalam suatu Class dapat terlindungi dari perubahan-perubahan / penggunaan oleh Class lain, biasanya untuk mengakses propherty tersebut kita harus membuat method getter dan setter dari propherty tsb.
Contoh penerapannya di Java :public class Burung {String nama; //atribut namaString jenis; //atribut jenisString warna; //atribut warnaString sayap; //atribut sayap//method terbangpublic void terbang(){this.sayap = “mengepak”;System.out.println(“Burung “+this.nama+” Sedang Terbang”);}//method tidurpublic void tidur(){this.sayap = “diam”;System.out.println(“Burung “+this.nama+” Sedang Tidur”);}}Dari contoh diatas bisa diambil pengerian Attribute adalah Berbagai variable yang mengitari class, dengan nilai datanya bisa ditentukan di object. nama, warna, sayap, dan jenis adalah atribute dari class Burung. Method adalah implementasi dari bagaimana aktifitas / bekerjanya sebuah class. terbang dan tidur adalah method atau behaviour dari class BurungAda 3 Konsep Dasar OOP pada Java :A. EncapsulationEncapsulation adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain.Dalam OOP Encapsulation di wujudkan dalam bentuk “class”. Seperti yang telah dijalaskan sebelumnya dalam sebuah class terdapat property dan method yang memiliki hak akses tertentu terhadap environment/lingkungan-nya, hak akses ini biasa di sebut Access Modifier, access modifier terdiri dari private, protected, dan public.• privatememberikan hak akses hanya kepada anggota class tersebut untuk menggunakan dan/atau mengubah nilai dari property atau method tersebut.• protectedmemberikan hak akses kepada anggota class nya dan anggota class hasil inheritance (penurunan sifat) dari class tersebut.• publicmemberikan hak akses kepada property dan method agar dapat digunakan diluar class tersebut.Contoh Program Encapsulation:public class Siswa {public String nama;public String nrp;public void Info() {System.out.println(“Saya adalah”);System.out.println(“Nama ” + nama);System.out.println(“Nrp ” + nrp);}}// Setelah itu kita buat New Class lagi dengan nama IsiDatapublic class IsiData {public static void main(String[] args) {Siswa IT = new Siswa();IT.nama = “Mirna”;IT.nrp = “0320110013″;IT.Info();}}B. Inheritanceinheritance adalah pewarisan yang artinya sebuah class dapat mewarisi atribut dan metho dari class lain. untuk mendeklarasikan suatu class sebagai subclass dilakukan dengan cara menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.Contoh Programnya :public class Mamalia () {System.out.println(“Ciri umum mamalia adalah bernapas dengan paru-paru, ” +“berkembang biak dengan cara beranak”);}class () Paus extends Mamalia () {String x = “Ikan Paus”;System.out.println(“Mamalia yang Anda pilih adalah “+ x );System.out.println(“Mamalia ini berada di laut”);System.out.println(“Paus termasuk jenis mamalia terbesar”);}class Sapi () extends Mamalia (){String x = “Sapi”;System.out.println(“Mamalia yang Anda pilih adalah “+ x );System.out.println(“Mamalia ini berada di darat”);System.out.println(“Sapi termasuk jenis mamalia pemamah biak”);}C. Polymorismsuatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.Polymorism dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.Contoh program java nya :Simpan dengan nama BeautyfullMahasiswa.javapublic class BeautyfullMahasiswa extends Mahasiswa{public void printNama(){System.out.println(“Hallo, saya Mahasiswa yg cantik n baik”);Super.printNama();}}Simpan dengan nama Main.javapublic class Main{public static void main(String[] args]) {BeautyfullMahasiswa mhs = new BeautyfullMahasiswa();mhs.setNim(“0320110013”);mhs.setNama(“Mirna Puji Rahayu”);mhs.printNim();mhs.printNama();}}Kemudian compile dan run.C:\>javac BeautyfullMahasiswa.javaC:\>javac Main.javaC:\>java MainKontruksi objek mahasiswaNim:0320110013Hallo, saya Mahasiswa yg cantik n baikNama: Mirna Puji RahayuC:\>Terlihat bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa teks tambahan, sehingga method printNama(), pada class BeautyfullMahasiswa, memiliki perilaku yang berbeda dengan class Mahasiswa.
Tidak ada komentar:
Posting Komentar