Gunadarma University

Welcome For World Class University

Bannerad

Kamis, 19 April 2012

Inharitance dan Polimorfisme

Hai bloggers, pada kesempatan kali ini saya mau sharing tentang pengertian dari Inheritance dan Polimorfisme beserta program + outputnya. Berikut merupakan penjelasannya, semoga bermanfaat :)

Inheritance

Pengertian Inheritance secara umum (Pewarisan)
Yaitu salah satu bentuk penggunaan kembali perangkat lunak dimana suatu kelas baru dibuat dari kelas yang sudah ada dengan memakai variabel data fungsi (method) dari kelas yang sudah ada tersebut serta menambah atribut/pelaku yang baru, kelas baru otomatis memiliki variabel atau fungsi yang dimiliki kelas asal.
Pengertian dasar inheritance :
  1. Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP.
  2. Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan.
  3. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
  4. Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
  5. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class.
  6. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
  7. Karena suatu subclass dapat mewarisi apaapa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa saja yang ia warisi dari class parent-nya.
  8. Boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.
Deklarasi inheritance : 
  1. Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya.
  2. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class. 
public class B extends A {

}

     3.  Semua class di dalam Java adalah merupakan subclass dari class super induk yang bernama Object.
      4.  Misalnya saja terdapat sebuah class sederhana :
public class A {

}

      5.  Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class Object.
public class A extends Object {

}

Istilah dalam inheritance yang perlu diperhatikan :
  1. Extends, Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
  2. Superclass, digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
  3. Subclass, yaitu class anak atau turunan secara hirarki dari superclass.
  4. Super Keyword, digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass. 
Catatan : Setiap class, hanya dapat memiliki satu superclass, tapi dapat memiliki banyak subclass

Keuntungan menggunakan Inheritance:
Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.

Contoh dari hierarki class :
  1. Superclass adalah class yang letaknya di atas class tertentu di dalam hierarki.
  2. Subclass adalah class yang letaknya di bawah class tertentu   di dalam hierarki.
Keuntungan penggunaan Inheritance dalam OOP :
Reusability, ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass Jadi, Anda dapat meng-enkode method hanya sekali dan method tersebut dapat digunakan oleh seluruh subclass. Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya. Untuk mengambil sebuah class, gunakan keyword extends.

Polimorfisme

Polimorfisme suatu 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. Polymorphic 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. Polimorfisme juga merupakan fungsi yang pengembangan dari Inheritence. Dalam pemrograman, polimorfisme dapat diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour (tingkah laku) yang berbeda sehingga listing code implementasinya juga berbeda.
Metode yang digunakan polimorfisme untuk menyatakan satu nama yang merujuk ke beberapa fungsi berbeda, Java mengimplementasikan polimorfisme dengan 2 cara, yaitu:
  1. Methode overloading : penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
  2. Methode overriding dengan pewarisan : terjadi ketika deklarasi method subclass dengan nama dan parameter yang sama dengan method dari superclassnya overloading
Berikut adalah hirarki class polimorfisme :
Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya. Sebagai contoh :
public static main( String[] args ) {
Person  ref;
Student studentObject = new Student();
Employee employeeObject = new Employee();
ref = studentObject; //titik referensi Person kepada       // sebuah object Student
}

Keuntungan menggunakan Polimorfisme : 
Dengan menggunakan konsep polimorfisme, dengan mudah dapat diperpanjang, menyediakan objek baru yang sesuai. Hanya  perlu menunjukkan perubahan baru bersama dengan aplikasi lama. Dalam bahasa pemrograman, selalu ada kebutuhan untuk menambahkan dan mengubah. Dengan memanfaatkan konsep polimorfisme, waktu dan tenaga kerja berkurang di samping perawatan membuat masa depan lebih mudah.
  1. Helps in reusability of code =  Membantu dalam usabilitas kode.
  2. Provides easier maintenance of applications = Menyediakan lebih mudah pemeliharaan aplikasi.
  3. Helps in achieving robustness in applications = Membantu dalam mencapai ketahanan dalam aplikasi.
Program Polimorfisme dan Inheritance

class Hewan {
private String jenis;
private int kaki;
Hewan (){
}
Hewan (String jenis, int kaki){
this.jenis = jenis;
this.kaki = kaki;
}
public void bersuara() {
System.out.print("suara hewan "+jenis+" berkaki"+kaki);
}
}

class Anjing extends Hewan {
Anjing() {
super();
}
public void bersuara() { //overriding method
System.out.println("guk guk guk....");
}
}

class Kucing extends Hewan {
Kucing(String jenis, int kaki) {
super(jenis, kaki);
}
public void bersuara() { //overriding method
super.bersuara();
System.out.println("miaowwww....");
}
}

class DemoPoli {
public static void main(String args[]) {
Anjing doggy = new Anjing();
Kucing tom = new Kucing("Kucing", 4);
doggy.bersuara();
tom.bersuara();
}}


Output Program







Program diatas adalah program yang berisi tentang fungsi polimerfisme, yang mana pada setiap program polimerfisme juga terdapat fungsi Inheritance yang juga ditandai extends.

My Partner Andi Shahreza Harahap

Sumber
  • lecturer.eepis-its.edu/~riyanto/oop8.pdf
  • viyan.staff.gunadarma.ac.id/Downloads/files/15930/5_Pewarisan.pdf
  • http://dewiqsweets.blogspot.com/2009/06/pengertian-dan-contoh-polimorfisme.html

Selasa, 10 April 2012

Java - Enkapsulasi

Enkapsulasi

Enkapsulasi merupakan salah satu konsep dari pemrograman berbasis objek (PBO) Java. Dimana Java memiliki lima macam konsep, yaitu :
  1. Kelas (class)
  2. Abstraksi (Abstraction)
  3. Enkapsulasi/Pengkapsulan (Encapsulation)
  4. Polimorfisme, dan
  5. Inheritas.
Enkapsulasi memilik fungsi sebagai mekanisme untuk menyembunyikan informasi, ketika ada sesuatu akan merubah informasi yang bersangkutan, sesuatu itu harus melewati jalur yang di tentukan. Yang bertujuan kepada maintainability  dan extensibility. Dimana maintainability memprediksi, segala sesuatu yang akan merubah informasi harus melalui jalur yang telah ditentukan. Dengan mengikuti jalur tersebut maka proses maintain nya lebih mudah. Dan Extensibilitiy berfungsi ketika sesuatu membuat info tidak bisa di update sesuai dengan prosedur yang ada, maka yang di lakukan adalah meng extend fungsional yang ada. Ini akan mudah ketika segala sesuatunya telah di “bungkus” .. pembungkusan inilah yang dinamakan encapsulation.
Dari sisi implementasi pada java, informasi yang akan di update nilainya dalam kasus di atas mengacu pada instance variable/field/class attribute/properties class (sama aja). Dan pembungkusnya dinamakan class. Procedure-procedure untuk mengupdate informasi tersebut tersimpan dalam method.


Dibawah ini saya akan menampilkan contoh program enkapsulasi beserta sedikit logikannya :


  1. Program dengan class andi
import java.io.*;
class andi{
    public static void main(String[] args) throws Exception {


int keluar = 0;
do
{
DataInputStream a = new DataInputStream(System.in);
int pilih;


System.out.println("Selamat Mengenal Program Java Enkapsulasi");
System.out.println("Kami menyediakan 4 menu program Enkapsulasi Pada Java yang dapat anda pilih : \n");
    System.out.println(" 1. Nama Kelompok");
    System.out.println(" 2. Pengertian Enkapsulasi");
    System.out.println(" 3. Program 1 \n");
System.out.println(" 4. Keluar");
System.out.print("Silahkan masukkan pilihan anda : ");
pilih = Integer.parseInt(a.readLine ());




switch(pilih){


case 1:
System.out.println();
kelompok klmpk=new kelompok();
       klmpk.daftar();
       klmpk.reza();
       klmpk.pita();
System.out.println();


break;


case 2:


pengertian def=new pengertian();
        def.enkapsulasi();
System.out.println();     
       
break;


case 3:
lingkaran roda=new lingkaran();
System.out.println("\nMenghitung Luas dan Keliling Lingkaran");
System.out.print("\nMasukkan Nilai Jari-jari lingkran yang anda miliki : ");
int r = Integer.parseInt(a.readLine ());
System.out.println("\nluas lingkaran* ");
System.out.println(roda.luas(r));
System.out.println("keliling lingkaran* ");
System.out.println(roda.keliling (r)); 
System.out.println();       


 break;


case 4:


keluar = 1;
       
break;
    default:
    System.out.println("Maaf ! Terjadi Kesalahan pada saat anda input, silahkan coba kembali");
System.out.println();
   
}
    }while(keluar==0);
}}    
     2.  Program 2 dengan class kelompok
class kelompok {


public void daftar(){


System.out.println("Daftar Kelompok : \n");
}


public void reza(){


System.out.println("1. Andi Shahreza Harahap \n   50410696 \n   2IA07 \n");


}


public void pita(){


System.out.println("2. Dwinita Puspitasari \n   52410222 \n   2IA07");
}
}


Logika
 
Dari dua program diatas, program di susun pada class berbeda dan file berbeda. Masing masing program di compile dahulu dan hanya pada program 1 class andi yang akan di jalankan. Program diatas saya menggunakan percabangan switch, sehingga pengeksekusi program harus memilih pilihan yang akan dijalankan, pada postingan kali ini saya hanya mengaktifkan pilihan nomer 1, dimana memiliki nama class kelompok.


Unsur enkapsulasi terdapat pada kedua program diatas ketika program satu di jalankan maka akan memanggil program 2 dengan memanggil nama classnya seperti "kelompok klmpk=new kelompok();". 


ScreenShot Program




My Partner Andi Shahreza Harahap
Download Program Full Version 
 
Sumber 
http://bengkeljava.posterous.com/encapsulation-enkapsulasi

Rabu, 04 April 2012

Perbedaan Pemrograman Berorientasi Objek dengan Pemrograman Terstruktur

Pada kesempatan kali ini gw akan menjabarkan perbedaan Bahasa Pemrograman Berorientasi Objek dan Bahasa Pemrograman Terstruktur. Sebelum masuk pada topik yang bakal dijelaskan, tidak ada salahnya untuk mengenal apa defenisi dari Bahasa Pemrograman.

Bahasa Pemrograman

Bahasa pemrograman, atau sering disebut juga dengan bahasa komputer, adalah teknik komando/instruksi standar untuk memerintah komputer. Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantik untuk mendefinisikan program komputer. Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data mana yang akan diolah oleh komputer, bagaimana data tersebut akan disimpan/diteruskan, dan jenis langkah apa yang akan diambil pada data tersebut. Menurut tingkattannya Bahasa pemrograman terdiri dari :
  1. Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa biner, contohnya 01100101100110
  2. Bahasa Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-kode singkat (kode mnemonic), contohnya MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
  3. Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>, &&, ||, dsb.
  4. Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb.
Setelah mengenal apa defenisi dari Bahasa Pemrograman langsung saja kita ke TKP untuk membahas perbedaan Pemrograman Berorientasi Objek dengan Pemrograman Terstruktur :

Pemrograman Berorientasi Objek

Pemrograman berorientasi objek (PBO) atau object-oriented programming disingkat (OOP) merupakan 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 dasar dari Pemrograman Berorientasi Objek Pemrograman orientasi-objek menekankan konsep berikut:
  • Kelas — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
  • Objek - membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
  • Abstraksi - Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
  • Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
  • Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
  • 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. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.

    Kemudian Bahasa Pemrograman yang berorientasi objek adalah :
  1. Visual Foxpro
  2. Java
  3. C++
  4. Pascal (bahasa pemrograman)
  5. Visual Basic.NET
  6. SIMULA
  7. Smalltalk
  8. Ruby
  9. Python
  10. PHP
  11. C#
  12. Delphi
  13. Eiffel
  14. Perl
  15. Adobe Flash AS 3.0
Pemrograman Terstruktur

Pemrograman Terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program.
Selain pengertian diatas Pemrograman Terstruktur adalah suatu aktifitas pemrograman dengan memperhatikan urutan langkah-langkah perintah secara sistematis, logis , dan tersusun berdasarkan algoritma yang sederhana dan mudah dipahami.

Prinsip dari pemrograman terstruktur adalah Jika suatu proses telah sampai pada suatu titik / langkah tertentu , maka proses selanjutnya tidak boleh mengeksekusi langkah sebelumnya / kembali lagi ke baris sebelumnya, kecuali pada langkah – langkah untuk proses berulang (Loop).

Prinsip pemrograman terstruktur:
  1. Gunakan rancangan pendekatan dari atas ke bawah (top down design).
  2. Bagi program ke dalam modul-modul logika yang sejenis,
  3. Gunakan sub-program untuk proses-proses sejenis yang sering digunakan.
  4. Gunakan pengkodean terstruktur: IF ... THEN, DO ... WHILE dan lain-lainnya.
  5. Gunakan nama-nama bermakna (mnemonic names), dan
  6. Buat dokumentasi yang akurat dan berarti.
Pemrograman terstruktur dapat dirsancan dengan bahasa program Pascal, C, dan Delphi.

Dilihat dari pengertian di atas, pemrograman terstruktur memilki beberapa sifat – sifat  seperti :
  • Memuat teknik pemecahan masalah yang logis dan sistematis
  • Memuat algoritma yang efisien, efektif dan sederhana
  • Program disusun dengan logika yang mudah dipahami
  • Tidak menggunakan perintah GOTO
  • Biaya pengujian program relatif rendah
  • Memiliki dokumentasi yang baik
  • Biaya perawatan dan dokumentasi yang dibutuhkan relatif rendah
Perbedaan Pemrograman Berorientasi Objek dengan Pemrograman Terstruktur

Berdasarkan penjelasan diatas, sangat jelas sekali bahwa pemrograman tersktruktur unggul dalam melakukan pemrograman sederhana karena lebih efisien dan lebih murah dalam hal perawatannya tetapi permodelan ini lebih susah untuk dipahami oleh orang – orang selain pembuat program itu sendiri (contohnya ketika dlakukan tracing program ).

Sementara itu pemrograman berorientasi objek memliki beberapa keuntungan seperti :
  • Maintenance; program lebih mudah dibaca dan dipahami, dan pemrograman berorientasi obyek mengontrol kerumitan program hanya dengan mengijinkan rincian yang dibutuhkan untuk programmer.
  • Pengubahan program (berupa penambahan atau penghapusan fitur tertentu); perubahan yang dilakukan antara lain menyangkut penambahan dan penghapusan dalam suatu database program misalnya.
  • Dapat digunakannya obyek-obyek sesering yang diinginkan, kita dapat menyimpan obyek-obyek yang yang dirancang dengan baik ke dalam sebuah tolkit rutin yang bermanfaat yang dapat disisipkan kedalam kode yang baru dengan sedikit perubahan atau tanpa perubahan pada kode tersebut.
Dalam menarik kesimpulan, bahwa pemrograman berorientasi objek sangat cocok sekali digunakan dalam kasus pembuatan software yang rumit dan kompleks karena memberikan berbagai kemudahan kepada pemrogram seperti yang telah disebutkan diatas.

permodelan yang mana yang lebh bagus? itu tergantung dari kebutuhan dan dari sudut pandang mana anda melihatnya. Yang perlu anda ingat adalah tujuan dari pemodelan itu sendiri, yang mana agar pada akhir proyek sistem dapat diperoleh sistem informasi yang memenuhi kebutuhan pemakai, tepat waktu dan sesuai anggaran, serta mudah digunakan, dimengerti dan dipelihara.

Sumber