Thursday 1 January 2015

Ini Penampakan Awan Cumolonimbus?


TELAH kita ketahui bersama bahwa kerap kali orang-orang bangga dengan kata “Nasionalisme”. Banyak sekali yang terpesona dengan seruan nasionalisme atau paham kebangsaan. Kita bisa lihat negara-negara di Timur termasuk Indonesia sangat bangga akan nasionalisme karena sama-sama merasakan penjajahan Barat. Di mana Barat melecehkan kehomartan suatu bangsa, mencoreng kemuliaannya, dan menahan suatu bangsa untuk berdiri di kaki sendiri dan merdeka atas namanya sendiri. Bahkan tidak tanggung-tanggung Barat telah memeras harta dan darah orang-orang yang ada di dalam daerah jajahannya.
Para tokoh, pemimpin, penguasa, di suatu negara pasti ingin mengusir penjajah yang telah merugikan negaranya. Mereka berjuang dengan gigih tanpa takut untuk membebaskan bangsanya dari penjajah. Mereka pun berkoar, bekomentar, berorasi, dan memekikan gaung pembebasan atas nama nasionalisme atau kebangsaan.
Apa yang dilakukan para pejuang kemerdekaan itu pada dasarnya baik. Namun, akan menjadi tidak baik ketika mengutarakan bahwa Islam itu tersendiri dan fikrah nasionalisme itu sendiri. Bahkan ada pemahaman yang mengatakan bahwa seruan kepada Islam justru akan memecah belah persatuan bangsa dan melemahkan ikatan bangsa. Bukan berarti aktivis muslim dan aktivis dakwah mengatakan nasionalisme itu salah. Namun yang perlu kita ketahui juga nilai-nilai yang ada di dalam nasionalisme sendiri juga memiliki persamaan di dalam ajaran Islam. Salah satu penjelasannya ada di dalam buku Risalah Dakwah Hasan Al Banna antara lain:
1. Nasionalisme Kerinduan
Jika yang dimaksud dengan nasionalisme oleh para penyerunya adalah cinta tanah air, rindu kepadanya, dan ketertarikan pada lingkungan di sekitarnya, nasionalisme seperti ini sebenarnya sudah tertanam dalam fitrah manusia di satu sisi, dan di sisi lain diperintahankan oleh Islam. Salah satu orang yang telah mengorbankan segalanya demi akidah dan agama, adalah Bilal yang mengungkapkan kerinduan pada Makkah melalui bait-bait syiar yang lembut dan indah. Sungguh, Rasulullah SAW pun mendengar gambaran tentang Makkah dari Ushail, tiba-tiba saja air mata beliau bercucuran, karena rindu padanya.
2. Nasionalisme Kebebasan dan Kehormatan
Jika nasionalisme yang dimaksud adalah keharusan bekerja serius untuk membebaskan tanah air dari penjajah, mengupayakan kemerdekaannya, serta menanamkan makna kehormatan di dalam masyarakat, maka para mujahidin yang berjuang membebaskan tanah airnya di Palestina, Suriah, Mesir, dan dunia Islam lainnya memiliki kesamaan dan mendukung nasionalisme sejenis ini.

Belajarlah, Bukan Menyalahkan


KETIKA Anda bertemu atau melihat orang sukses dalam usahanya, sementara Anda belum sukses, apa yang akan Anda katakan? Apakah Anda akan berkata, “Pantas saja usahanya sukses. Orangtuanya kan pejabat.” Ataukah berkata, “Kalau dia bisa sukses, aku pasti juga bisa?” Jika Anda melakukan yang pertama berarti Anda sulit belajar dari orang lain. Anda adalah orang yang sukanya –meminjam istilahnya Tung Dasem Waringin- menyalahkan orang lain (blame), beralasan (excuse), dan menghakimi/ membenarkan (justify). Oleh Tung Jasem Waringin, ketiganya disebut BEJ.
Secara tidak sadar, banyak orang sering melakukan tiga hal tersebut, ketika ia tidak sukses atau melihat kesuksesan orang lain. Ketika usaha gagal, bangkrut, pailit, tanpa sadar ia sering menyalahkan pemerintah, lingkungan, atau bahkan menyalahkan presiden. Terkadang ia juga menyalahkan pasangan hidupnya, orangtua, ata saudara yang tidak ada sangkut pautnya dengan usahanya. Bahkan, ia menyalahkan dirinya sendiri, menyalahkan pendidikan atau seminar yang diikuti, menyalahkan umur, dan sebagainya.
Kalau tidak menyalahkan lingkungan, diri sendiri, atau orang lain, orang yang terjangkit BEJ akan berasalan ketika gagal. Misalnya, dengan berkata, “Saya kan masih muda. Masih belum berpengalaman.” Terkadang alasan ini ada benarnya, tetapi perlu diingat bahwa alasan itu tidak ada manfaatnya sama sekali. Mengapa? Sebab, alasan-alasan itu hanya akan membuat dia berhenti berusaha, berhenti belajar dan berhenti bertindak untuk menjadi lebih baik.
Orang BEJ saat bertemu orang yang lebih sukses darinya, ia akan mencibir dan berkata, “Pantas saja dia sukses, sekolahnya kan tinggi, orangtuanya saja sudah kaya, dan saudaranya banyak yang jadi pejabat.” Ia tidak menyadari dan tidak mengakui bahwa kesuksesan orang itu diperoleh dengan belajar. Nah, ketika ia dihadapkan pada contoh orang sukses yang orangtuanya miskin dan saudaranya tidak ada yang jadi pejabat, ia akan berkata, “Saya tahu kenapa ia sukses, orang miskin kan harus mempunyai daya juang yang kuat.”
Itulah pola pikir orang-orang yang tidak mau belajar. Alih-alih memikirkan pelajaran apa yang bisa dipetiknya dari orang lain yang sukses, ia justru mencari-cari alasan, menyalahkan atau menghakimi mereka. Nah, jika Anda ingin sukses, pola pikir seperti itu harus ditinggalkan. Ketika Anda merasa belum sukses, belajarlah. Ketika melihat orang lain yang lebih sukses, cobalah untuk bertanya, “Apa yang dapat saya pelajari dari kesuksesannya yang akan membuat saya lebih hebat, lebih kuat, lebih dahsyat, lebih kaya, lebih sukses dan sebagainya?” Dengan belajar, kita akan maju selangkah lebih banyak dibandingkan orang-orang yang selalu menyalahkan dan mencari-cari alasan.
Cobalah untuk bertanya kepada diri Anda sendiri dengan dua pertanyaan berikut setiap hari dan cobalah untuk emncari jawabannya.
1. Sudah belajar apakah saya hari ini?
2. Pelajaran apa yang akan membuat saya mnjadi lebih baik?
Dengan pertanyaan sederhana tersebut, dan jika Anda terus konsisten melakukan setiap hari, maka Anda akan mempunyai kebiasaan baru, yaitu kebiasaan belajar. Dengan terus belajar, apapun yang akan terjadi dalam hidup ini, kita telah memberi arti dengan menjadi orang yang lebih baik. [Sumber: Kebiasaan Orang-orang Hebat/Karya: Alvin Pratista/Penerbit: Sinar Kejora]

Bencana Akhir Zaman Terjadi Jika 15 Perkara Ini Sudah Dilakukan


PENJELASAN Rasulullah SAW mengenai bencana sering dikaitkan dengan pra-kondisi sebelum terjadinya bencana tersebut. Hadist riwayat Imam Atturmudzi, dan yang menghimpun hadis ini adalah ulama Alwalial annajdwi yang menghimpun 40 hadis yang menerangkan tentang bencana. Ketika dia metafsirkan hadis ini beliau memberi judul “Lima Kedurhakaan / Kemaksiatan yang Dapat Menyebabkan Datangnya Bencana.”
Dari Ibnu Ali bin Abi Thalib berkata, bahwa Rasulullah telah bersabda : “Bilamana umatku telah mengerjakan 15 perkara ini, maka bala bencana pasti akan turun menimpa mereka.” Sahabat bertanya., “Apa 15 perkara itu ya Rasulullah?” Rasulullah bersabda, “Bala akan datang bilamana :
1. Harta Negara hanya beredar (dipegang) di kalangan orang-orang tertentu.
2. Apabila amanah telah dijadikan sumber keuntungan.
3. Apabila zakat dijadikan hutang.
4. Bala akan datang bilamana suami menurut kemauan isteri.
5. Anak durhaka terhadap ibunya.
6. Sedangkan ia berbuat baik kepada teman sebayanya (pada kehidupan keluarga)
7. Menjauhkan diri dari ayahnya.
8. Suara-suara ditinggikan di dalam masjid
9. Pemimpin suatu kaum adalah orang yang terhina diantara mereka.(banyaknya pemimpin yang dipilih dari golonganya sendiri dengan dalih kebenaran menurut golongan mereka sendiri).
10. Seseorang dimuliakan karena ditakuti kejahatannya.
11. Khamer / arak (minuman beralkohol) sudah diminum segala tempat.
12. Kain sutra banyak digunakan oleh kaum laki-laki.
13. Penyanyi disanjung-sanjung.
14. Musik banyak dimainkan.
15. Generasi akhir umat ini melaknat / menyalahkan generasi pertama yakni para sahabat radiallahu anhum ajmain.
Akhir dari sabda Rasulallah SAW adalah : “Maka hendaklah mereka menanti angin merah atau gempa bumi atau mereka dirubah menjadi mahluk yang lain apabila mereka telah melakukan 15 perkara tersebut.”

Wednesday 31 December 2014

Abstractions dalam java

Abstraksi merupakan cara paling dasar dalam menangani kompleksitas. Abstraksi adalah kemampuan manusia untuk mengenali keserupaan antara object-object, situasi-situasi atau proses-proses yang berbeda di dunia nyata dan keputusan untuk berkonsentrasi pada keserupaan-keserupaan itu dan mengabaikan yang disebut sebagai perbedadan-perbedaan kecil yang ada.

Abstraksi adalah : Prinsip untuk mengabaikan aspek-aspek dari subyek yang tidak relevan untuk maksud tertentu untuk berkonsentrasi lebih penuh padanya.
Penerapan abstraksi berarti bahkan bila analis mengetahui banyak hal, dia memilih hal-hal tertentu yang relevan.
Manusia dapat membuat abstraksi dengan cara-cara berbeda bergantung kebutuhan penyelesaian yang dikehendaki. Manusia dalam penanganan persoalan penentuan kecepatan dan waktu benda yang jatuh dari langit (atas) saat mencapai tanah, maka entah benda itu pensil, batu, mobil, pesawat terbang yang terkena rudal, bulu ayam dan sebagainya diasumsikan di ruang tidak menghambat dan benda-benda itu sebagai titik massa. Dan ajaib, kita dapat menentukan saat dan letak benda tersebut jatuh serta dengan kecepatan berapa benda tersebut menabrak bumi.
Kita tidak berhubungan dengan pensil, batu, mobil, pesawat terbang, bulu ayam melainkan semuanya diabstraksikan menjadi titik massa. Abstraksilah yang membuata kemajuan pesat manusia meninggalkan makhluk-makhluk hidup lain.
Seringkali masalah yang berbeda membutuhkan sejumlah informasi yang berbeda pula pada areal yang sama. Sebagai contoh kasus sebuah TV. Ketika kita membuat program komputer untuk mengatur volume suara, perubahan channel dan pengaturan kontras, kita mungkin harus membuang atribut nomor seri karena tidak terlalu berguna. Akan tetapi ketika kita akan menelusuri transaksi penjualan TV, maka kita butuh nomor seri dari setiap TV yang kita jual.

Absraksi berorientasi Object
Abstraksi merupakan pemeriksaan yang selektif terhadap aspek-aspek tertentu pada suatu persoalan. Abstraksi berarti memfokuskan pada aspek-aspek esensi, inheren dan mengabaikan properti-properti yang merupakan akibatnya. Pada pendekatan orientasi object, abstraksi yang digunakan berfokus pada apa object itu. Ini dilakukan sebelum memutuskan bagaimana cara object itu diimplementasikan. Penggunaan abstraksi melindungi kebebasan untuk membuat keputusan-keputusan pokok penyelesaian persoalan dengan sejauh mungkin menghindari rincian-rincian yang terlalu dini.
Tujuan abstraksi adalah melakukan isolasi aspek-aspek penting untuk suatu maksud dan menindas aspek-aspek yang tidak penting. Abstraksi harus selalu mempunyai maksud, karena maksud yang menentukan apa yang penting. Model yang bagus adalah yang dapat menangkap aspek-aspek paling penting persoalan dan menghilangkan aspek-aspek lain yang tidak penting.
Abstraksi prosedural/fungsional/algoritmik adalah salah satu bentuk abstraksi yang digunakan pada analisis yang dicirikan dengan "function/subfunction". Prinsip ini menyatakan bahwa operasi yang mempunyai dampak tertentu di sistem dengan dinyatakan sebagai satu operasi tunggal meskipun kenyataanyan dapat sebarisan langkah di dalamnya.
Misalnya:
Kita menyatakan operasi/fungsi "pembelian barang" meski sebenarnya kita operasi itu sendiri dari pemeriksaan jumlah barang di persediaan, melakukan pendaftaran barang yang dipesan, pengiriman ke produsen dan sebagainya.
Pada level tertentu, kita mengabaikan rincian-rincian sehingga dalam konteks level itu persoalan menjadi jelas. Setelah itu, kita mendekomposisi operasi menjadi abstraksi-abstraksi lebih rinci, menjadi lebih rinci lagi dan seterusnya sampai diperoleh abstraksi atomik yang dapat diterapkan sebagai solusi.
Dekomposisi adalah berdasarkan object. Dikaitkan dengan pendekatan orientasi object maka abstraksi dapat dinyatakan sebagai berikut :
Abstraksi menunjukkan karakteristik-karakteristik esensi jenis object yang membedakannya dari jenis-jenis object yang lain dan memberikan batasan konseptual yang didefinisikan dengan tegas, relatif terhadap perspektif pengamat.
Pernyataan berfokus terhadap object. Terdapat beragam jenis abstraksi object tapi yang paling penting adalah abstraksi entitas (entity abstaction) yaitu object yang merepresentasikan model berguna entitgas domain persoalan atau domain solusi. Dengan abstraksi, beragam fitur berbeda banyak object secara selektif diabaikan sehingga memungkinkan kita konsentrasi pada fitur-fitur bersama (shared).


Prinsip Pengapsulan
Abstraksi tidak memperdulikan implementasi. Implementasi apapun tidak menjadi persoalan asalkan memenuhi kontrak di abstraksi. Abstraksi harus mendahului keputusan implementasi. Begitu implementasi dipilih maka implementasi itu seharusnya merupakan rahasia dan tersembunyi dari pemakai. Abstraksi membantu orang berfikir mengenai apa yang dilakukan, sementara pengapsulan memungkinkan program berubah dengan usaha terbatas, tidak menyebabkan propagasi perubahan

Konsep Interface Dalam Pemrograman Java

Interface adalah jenis khusus dari blok yang hanya berisi method signature (atau constant).  Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface.
Untuk memahami lebih mudah, interface sekumpula dari method-method yang dibuat tapi belum ada operasi di dalam tubuh method tersebut, interface ini bisa diturunkan atau diwariskan kepada class yang ingin memakai method yang ada dalam masing-masing interface tersebut dengan keyword extends [interface yang didefinisikan]. Dan juga sebuah class mengimplementasi 1 interface yang sudah dibuat dengan keywordimplements.

Ciri-ciri dari interface adalah sebagai berikut..
  • Method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa lainnya, mereka didefinisikan secara independent.
  • Tidak bisa membuat instance atau objek baru dari sebuah interface.
  • Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method. Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class memiliki salah satunya.
1public interface [InterfaceName]
2{
3//beberapa method tanpa isi
4}

Seperti penggunaan interface pada salah satu class interface berikut.
01public interface RemoteAllInOne {
02 
03 public void pindahChannel(int channel);
04 
05 public void perbesarVolume(int kpsts);
06 
07 public void perkecilVolume(int kpsts);
08 
09 public void perkecilZoom(int kpsts);
10 
11 public void perbesarZoom(int kpsts);
12}

Setelah itu kita menggunakan class yang akan mengimplementasi setiap method yang ada pada class interface RemoteAllInOne.
01public class BenQ implements RemoteAllInOne {
02 
03 String[] menuTV = {"ANTV""INDOSIAR""TRANS-TV""TPI""RCTI","SCTV""GLOBAL-TV"};
04 
05 public void pindahChannel(int channel) {
06 System.out.println("LCD BENQ Pindah Channel ke - " +this.menuTV[channel]);
07 }
08 
09 public void perbesarVolume(int kpsts) {
10 System.out.println("LCD BENQ Perbesar Vol : " +kpsts);
11 }
12 
13 public void perkecilVolume(int kpsts) {
14 System.out.println("LCD BENQ Pekecil Vol : " + kpstss);
15 }
16 
17 public void perkecilZoom(int kpsts) {
18 System.out.println("LCD BENQ Pekecil Zoom : " + kpsts);
19 }
20 
21 public void perbesarZoom(int kpsts) {
22 System.out.println("LCD BENQ Pebesar Zoom : " + kpsts);
23 }
24}

Setelah itu kita membuat class yang berfungsi sebagai perantara pemanggil method sebelum kita masuk ke class main, atau pembuatan instance baru sebuah objek supaya dapat digunakan setiap interface yang dibuat tadi.
01public class MyRemoteAllInOne {
02 public void sendRequest(int aksi, RemoteAllInOne rmt, int tombol){
03 switch(aksi){
04 case 1:
05 rmt.pindahChannel(tombol);
06 break;
07 case 2 :
08 rmt.perkecilVolume(tombol);
09 break;
10 case 3 :
11 rmt.perbesarVolume(tombol);
12 break;
13 case 4 :
14 rmt.perkecilZoom(tombol);
15 break;
16 case 5 :
17 rmt.perbesarZoom(tombol);
18 break;
19 }
20 }
21}

Dan berikut adalah class main yang dipakai waktu pengeksekusian program.
01public class Tester {
02 
03 /**
04 * @param args the command line arguments
05 */
06 public static void main(String[] args) {
07 Ephson ep = new Ephson();
08 BenQ bq = new BenQ();
09 Mitshubishi mt = new Mitshubishi();
10 MyRemoteAllInOne my = new MyRemoteAllInOne();
11 my.sendRequest(1, mt, 4);
12 my.sendRequest(1, ep, 5);
13 my.sendRequest(1, bq, 6);
14 my.sendRequest(2, mt, 4);
15 }
16}

Polymorphism dalam Java

Polymorphism adalah salah satu dari tiga kemampuan yang mendasar yang dimiliki oleh OOP, setelah data abstraction dan inheritance.
Polymorphism menyediakan cara yang berbeda pada pemisahan interface dari implementasinya, untuk memasangkan ulang apa dari bagaimana. Polymorphism memberikan organisasi kode yang lebih baik dan kode menjadi lebih mudah dibaca, juga memberikan suatu kemampuan pada program untuk berkembang secara terus menerus baik pada tahap pengembangan awal ataupun pada saat ingin menambahkan kemampuan-kemampuan yang baru.
Encapsulation membuat tipe data yang baru dengan mengkombinasikan karakteristik-karakteristik dan perilaku-perilaku. Dengan menggunakan kata kunci private kita dapat menyembunyikan interface dari implementasi. Cara yang seperti ini dapat memudahkan para programmer yang mempunyai background prosedural. Tetapi polymorphism menangani decoupling dalam bentuk types. Kita mengetahui kalau inheritance memperbolehkan perlakuan yang sama pada object turunan maupun object asal. Kemampuan ini sangat penting karena memperbolehkan beberapa tipe yang ada (turunan dari tipe asal yang sama) mendapat perlakuan seperti kalau mereka itu satu tipe, dan hanya dibutuhkan satu kode saja untuk mengakses keseluruhan tipe yang ada. Metode polymorphism ini memperbolehkan untuk memanggil satu tipe untuk mengekspresikan perbedaannya dari tipe yang lainnya, yang sejenis, selama mereka diturunkan dari tipe asal yang sama. Perbedaan ini diekspresikan melalui perbedaan-perbedaan dalam perilaku dari metoda-metoda yang dapat kita panggil dari class asal.
Dalam pembahasan ini kita akan menjelaskan tentang polymorphism (juga disebut sebagaidynamic binding atau late binding atau run-time binding) mulai dari yang paling dasar, dengan contoh yang membeberkan tentang pengaruh polymophism dalam program yang akan dibuat.
Sebelumnya kita mengetahui kalau sebuah object dapat digunakan sebagai tipenya sendiri atau sebagai object dari tipe asalnya. Mengambil handle sebuah object dan memperlakukannya sebagai handle dari tipe asal disebut sebagai upcasting karena urutan dari cabang-cabang inheritance digambarkan class asal terletak yang paling atas.
Kita juga akan menemui sebuah masalah seperti yang tertera dari kode berikut ini:
//: Music.java
// Inheritance & upcasting
package c07;
 
class Note {
  private int value;
  private Note(int val) { value = val; }
  public static final Note
    middleC = new Note(0), 
    cSharp = new Note(1),
    cFlat = new Note(2);
} // Etc.
 
class Instrument {
  public void play(Note n) {
    System.out.println(\"Instrument.play()\");
  }
}
 
// Wind objects are instruments
// because they have the same interface:
class Wind extends Instrument {
  // Redefine interface method:
  public void play(Note n) {
    System.out.println(\"Wind.play()\");
  }
}
 
public class Music {
  public static void tune(Instrument i) {
    // ...
    i.play(Note.middleC);
  }
  public static void main(String[] args) {
    Wind flute = new Wind();
    tune(flute); // Upcasting
  }
} ///:~
Metode diatas Music.tune() menerima sebuah handle Instrument, tetapi juga segala sesuatunya yang diturunkan dari Instrument. Didalam main(), kita dapat melihat semua ini terjadi sebagai sebuah handle Wind dilewatkan ke tune(), dengan tanpa cast sama sekali. Ini semua masih dapat diterima, interface dari Instrument harus muncul didalamWind, karena Wind diturunkkan dari InstrumentUpcasting dari Wind ke Instrumentbisa membuat �narrow� pada interface tersebut, tapi semua ini tidak dapat mengurangi interface keseluruhan dari Instrument.
Program berikut ini mungkin akan tampak aneh. Mengapa kita secara sengaja melupakan tipe dari sebuah object ? Ini semua dapat terjadi bila kita melakukan upcast, dan menjadikannya kelihatan seperti kalau tune() secara langsung mengambil handle dariWind sebagai sebuah argumen. Ini semua membuat sesuatu yang mendasar : Kalau kita melakukannya, kita harus menuliskan tune() yang baru untuk setiap Instrument didalam system kita. Anggap saja kita mengikuti alasan ini dan menambahkan instrument Stringeddan Brass :
//: Music2.java 
// Overloading instead of upcasting
 
class Note2 {
  private int value;
  private Note2(int val) { value = val; }
  public static final Note2
    middleC = new Note2(0), 
    cSharp = new Note2(1),
    cFlat = new Note2(2);
} // Etc.
 
class Instrument2 {
  public void play(Note2 n) {
    System.out.println(\"Instrument2.play()\");
  }
}
 
class Wind2 extends Instrument2 {
  public void play(Note2 n) {
    System.out.println(\"Wind2.play()\");
  }
}
 
class Stringed2 extends Instrument2 {
  public void play(Note2 n) {
    System.out.println(\"Stringed2.play()\");
  }
}
 
class Brass2 extends Instrument2 {
  public void play(Note2 n) {
    System.out.println(\"Brass2.play()\");
  }
}
 
public class Music2 {
  public static void tune(Wind2 i) {
    i.play(Note2.middleC);
  }
  public static void tune(Stringed2 i) {
    i.play(Note2.middleC);
  }
  public static void tune(Brass2 i) {
    i.play(Note2.middleC);
  }
  public static void main(String[] args) {
    Wind2 flute = new Wind2();
    Stringed2 violin = new Stringed2();
    Brass2 frenchHorn = new Brass2();
    tune(flute); // No upcasting
    tune(violin);
    tune(frenchHorn);
  }
} ///:~
Kode diatas dapat dijalankan, tetapi disana ada kekurangan terbesar. Kita harus menuliskan metoda tipe yang spesifik untuk setiap class Instrument2 yang baru kita tambahkan. Ini semua berarti makin banyak kode yang akan kita tulis, tetapi juga berarti kalau kita ingin menambahkan sebuah metoda baru seperti tune() atau sebuah tipe baru dari Instrument, kita mendapatkan kalau perkerjaan kita makin banyak. Dengan menambahkan fakta bahwa kompiler tidak akan memberikan pesan-pesan kesalahan kalau kita lupa meng overload salah satu dari metoda-metoda kita dan seluruh proses pekerjaan dengan tipe menjadi tidak dapat ditangani.
Bukankah dapat menjadi lebih menyenangkan kalau kita hanya menuliskan satu metoda saja yang dapat mengambil class asal sebagai argumennya, dan bukan dari semua class-class turunannya. Itulah memang lebih memudahkan bila kita melupakan adanya class-class turunan, dan menuliskan kode yang hanya berkomunikasi dengan class asal?
Itulah apa yang disediakan oleh polymorphism. Walau bagaimanapun kebanyakan programmer (yang berasal dari latar belakang prosedural) mempunyai sedikit kesulitan untuk beradaptasi dengan polymorphism.
Kesimpulan
Dengan polymorphism pekerjaan seorang programmer dapat dimudahkan dengan menuliskan kode yang lebih sedikit. Untuk mengakses class-class turunan tidak dibutuhkan penulisan kode yang berlainan.