Wednesday, April 18, 2012

Inheritance & Polimorfisme


Mau tau penjelasan mengenai Inheritance dan Polimorfisme pada bahasa pemrograman Java? Berikut penjelasanya…

Inheritance
Class dapat didefinisikan dengan referensi pada class yang lain yang telah terdefinisi. Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut atau biasa dikenal dengan pewarisan sifat. Setiap subclass akan mewarisi state ( variabel-variabel ) dan behaviour ( method-method ) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya. Dengan inheritance, pengembangan software dapat bekerja lebih efisien dan lebih cepat.

Keuntungan dari inheritance adalah :
  • Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
  • Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.

Istilah dalam inheritance yang perlu diperhatikan :
  • Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
  • Superclass
Superclass digunakan untuk menunjukkan hirarki class yang berarti class dasar  dari subclass/class anak.
  • Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.
  • Super
Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
  • Methode Overriding
Pendefinisian ulang method yang sama pada subclass.
·         Token
Token adalah elemen terkecil di program yang masih memiliki arti. Ada 5 token dalam bahasa Java yaitu identifier, keyword, literal dan tipe data, operator, serta separator.

Dalam inheritance, method overriding berbeda dengan method overloading. Kalau method overriding adalah mendefinisikan kembali method yang sama, baik nama method maupun signature atau parameter yang diperlukan dalam subclass, kalau method overloading adalah mendefinisikan method yang memiliki nama yang sama, tetapi dengan signature yang berbeda dalam definisi class yang sama.

Contoh program :
public class Question { //pendeklarasian kelas question
   public static void main (String args[]) { ////fungsi main di Java
                                    Hobi h = new Hobi();
                                    h.answer1();
                                    Hobilain hl = new Hobilain();
                                    hl.answer2();
                                    }
                        }

            class Hobi {
                        public Hobi() { //pendeklarasian kelas Hobi menggunakan modifier publik
                                    System.out.println("Hobi kamu apaan?"); //mencetak output
                                    }
                        public void answer1() { //membuat method pertama
                                    System.out.println("Menari");
                                    }
                        }

            class Hobilain extends Hobi { // extends adalah coding untuk pewarisan                                             public void answer2() { //membuat method kedua
                                    System.out.println("Menyanyi");
                                    }
                        }

 Output :
  

 Polimorfisme
Kata polimorfisme yang berarti satu objek dengan banyak bentuk yang berbeda, adalah konsep sederhana dalam bahasa pemrograman berorientasi objek yang berarti kemampuan dari suatu variabel referensi objek untuk memiliki aksi berbeda bila method yang sama dipanggil, dimana aksi method tergantung dari tipe objeknya. Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :
  • Method yang dipanggil harus melalui variabel dari basis class atau superclass.
  • Method yang dipanggil harus juga menjadi method dari basis class.
  • Signature method harus sama baik pada superclass maupun subclass.
  • Method access attribute pada subclass tidak boleh lebih terbatas dari basis class.
Polimorfisme melalui pengiriman pesan. Tidak teragantung kepada pemanggilan subrutin. Bahasa orientasi objek dapat mengirim pesan. Metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu dimana pesan tersebut dikirim.

Contoh program :
public class Animal { //pendeklarasian kelas animal menggunakan akses modifier public
            public static void Binatang1() { //pendeklarasian method untuk superclass
                        System.out.println("Beruang merupakan binatang buas"); }
            public void Binatang2() { //membuat method kedua
                        System.out.println("Beruang merupakan binatang jinak");
}}
class Cat extends Animal { //extends adalah coding untuk pewarisan
            public static void Binatang1() {
                        System.out.println("Kucing adalah binatang buas"); }
            public void Binatang2() {
                        System.out.println("Kucing adalah binatang jinak"); }
            public static void main(String[] args) { //fungsi main di Java
                        Cat myCat = new Cat(); //pendeklarasian baru untuk kelas Cat
                        Animal myAnimal = myCat; //pendeklarasian objek Animal di Cat
                        Animal.Binatang1(); //memanggil method subclass dengan overriding method superclass
                        myAnimal.Binatang2();
}}

Output :



Sumber : - www.google.com

Thursday, April 12, 2012

Enkapsulasi pada Java & Contohnya

Apaan sih maksudnya enkapsulasi dalam pemrograman?
Konsep Enkapsulasi dalam pemrograman adalah pengkombinasian/pembungkusan antara data dan prosedur ataupun fungsi (method) yang memanipulasinya ke dalam sebuah object pada bagian yang terlindungi sehingga data-datanya tidak mudah diakses langsung dari luar. Manfaat dari enkapsulasi ialah kode sumber dari sebuah object dapat dikelola secara independen dari kode object yang lain. Selain itu, dengan enkapsulasi kita bisa menyembunyikan informasi-informasi yang tidak perlu diketahui oleh object lain. Enkapsulasi merupakan salah satu karakteristik utama dalam konsep OOP.
Konsep ini menentukan tingkat aksesibilitas dari masing-masing data dan method serta menyembunyikan detail implementasi dari luar yang dikenal dengan Information Hiding. Ada beberapa keuntungan menerapkan prinsip enkapsulasi, yaitu:
  1. Memiliki sifat bebas, sehingga dapat digunakan pada bagian manapun dari program tidak terkait pada bagian tertentu program.
  2. Memiliki sifat transparan, bila melakukan modifikasi maka perubahan akan dirasakan oleh bagian program yang menggunakan modul tersebut.
  3. Menghindari efek diluar perencanaan, dengan demikian akan mereduksi kemungkinan adanya hasil imbas pemrosesan yang di luar perencanaan semula.
Dua hal yang mendasar dalam enkapsulasi yakni :
Information hiding
Sebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah 'public'. Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol 'private' ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.

Interface to access data
Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.

              Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut. Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
           Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.

Contoh program:
class Anggota{  //kelas anggota berisi atribut yang memiliki modifier sehingga kelas main memiliki akses langsung ke atribut kelas anggota
 private String nama;  //private digunakan suppaya objek tidak diakses sembarangan
             private String hobby;
 public Anggota(String n, String hobby) {  //menginisialisasi isi dari atribut dalam kelas anggota
 this.nama = n;
 this.hobby = hobby;
             }
 public String tampilkanNama() {
 return nama;
 }
 public String tampilkanHobby() {
 return hobby;
 }
 public void usia() {
 System.out.println("Usia : 20");
 }
 public void JK() {
 System.out.println("Jenis Kelamin : Perempuan");
 }}

public class main{
             public static void main(String[] args) {
             System.out.println("======Biodata Anggota=====");
             Anggota Diny = new Anggota("Diny", "Bermain Keyboard");  //bentuk inisialisasinya, memanggil nama kelas Anggota dengan nama Diny diikuti dengan menjalankan method Anggota untuk mengisi variabel nama dan hobby
 System.out.println("Nama \t : " + Diny.tampilkanNama()); 
 System.out.println("Hobby \t : " + Diny.tampilkanHobby());  //perintah mencetak diikuti variabel yang telah dideklarasikan dan memanggilnya
 Diny.usia();
 Diny.JK();
 System.out.println();

 Anggota Dyas = new Anggota("Dyas", "Menyanyi");
 System.out.println("Nama \t : " + Dyas.tampilkanNama());
 System.out.println("Hobby \t : " + Dyas.tampilkanHobby());
 Dyas.usia();
 Dyas.JK();
 System.out.println();
 System.out.println("======Maacih yaaaa=====");
 }}  //untuk memanggil dan mencetak

Kalau mau lihat outputnya, di bawah ini yaa….

 Output :

Monday, April 2, 2012

PERBEDAAN ANTARA PEMRROGRAMAN TERSRUKTUR DENGAN PEMROGRAMAN BERBASIS OBJEK (PBO/OOP)

Dalam bahasa pemrograman, kita pasti mengetahui dan mengenal yang namanya pemrograman terstruktur dan pemrograman berbasis objek atau dikenal dengan OOP. Berikut pengenalan singkatnya…

Pemrograman Terstruktur itu apa sih? Pemrograman Terstruktur adalah suatu aktifitas pemrograman dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami. Selain itu juga mendukung abstraksi data, pengkodean terstruktur dan juga kontrol program terstruktur. Ada tiga bentuk yang digunakan dalam pemrograman terstruktur, yaitu Sequence Structure, Loop Structure dan Selection Structure. Bahasa pemrograman yang mendukung antara lain Cobol, C, Delphi, dll.

Kalau OOP apa sih? Pemrograman berbasis objek (OOP) merupakan pemrograman yang berbasis objek, jadi semua data dan fungsi di dalamnya berbentuk kelas-kelas atau objek-objek. Konsep dasar OOP ada tiga, yaitu pewarisan (inheritance), pengkapsulan (encapsulation) dan polimerfisme. Bahasa pemrograman yang mendukung antara lain Java, C++, Pascal, Ruby, Python, PHP, dll.

Keduanya memiliki perbedaan, antara lain :
  • ü  Untuk tata penamaan, keduanya memiliki tatanan yang sama walaupun memiliki pengertian tersendiri:


·         OOP menggunakan “method” sedangkan terstruktur menggunakan “function”.
·         Bila di OOP sering didengar mengenai “objects” maka di terstruktur kita mengenalnya dengan ”modules”.
·         “message” pada OOP dan “argument” pada terstruktur.
·         “attribute” pada OOP juga memiliki tatanan nama yang sepadan dengan “variabel” pada pemrograman terstruktur.
  • ü  Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sedangkan untuk pemrograman terstruktur,  menggunakan prosedur/tata cara yang teratur untuk mengoperasikan data struktur.
  • ü  Biasanya Pemrograman Terstruktur digunakan untuk menyelesaikan program yang simpel/sederhana karena lebih singkat dan mudah tanpa banyak perubahan yang penting, sedangkan OOP digunakan untuk menyelesaikan program yang lebih rumit/kompleks.
  • ü  Pada OOP terdapat kelas dan objek, sedangkan pada Pemrograman Terstruktur tidak ada kelas dan objek.
  • ü  Dalam OOP terdapat pula pewarisan (inheritance) yang berbentuk objek dan kelas, sedangkan pada Pemrograman Terstruktur tidak ada.
  • ü  Pada OOP dapat dilakukan sebuah programming yang lebih baik daripada Pemrograman Terstruktur.
             Mungkin perbedaannya tidaklah banyak, namun itulah perbedaan yang ada…Kalau ditanya lebih mudah menggunakan yang mana, itu semua tergantung apa yang diinginkan oleh programmer.


Referensi :