Jika Anda dapat mengendarai mobil komuter 4 pintu, Anda juga dapat mengendarai truk pickup. Jika Anda pernah mengendarai mobil dengan motor bakar, Anda juga bisa mengendarai mobil listrik.

Bentuk dan ukuran kendaraan penumpang mungkin berbeda antara satu dengan yang lainnya. Motor yang menjalankan kendaraan itu juga bisa sangat berbeda. Tapi itu tidak masalah bagi pengemudi.

Anda cukup masuk, memasang sabuk pengaman, menyalakan kendaraan, memasang gigi, dan mengemudi. Itu karena mobil, truk, dan van adalah polimorfik.

Polimorfisme: Memecahnya

Mari kita lihat kata polimorfisme. Anda dapat memecahnya menjadi poli, berubah, dan aliran.

poli berarti banyak, seperti bagaimana poligon berarti banyak sudut. Ketika digunakan sebagai kata benda, a berubah merupakan varian dari suatu spesies. Dan aliran dapat berarti sistem.

Jadi polimorfisme berarti sistem dengan banyak variasi. Itu masih tidak memberi tahu Anda banyak tentang bagaimana itu digunakan dalam pemrograman. Itu berikutnya.

Jika Berjalan Seperti Bebek... Mengapa Objek Polimorfik Itu Luar Biasa

instagram viewer

Saat Anda membuat kelas dalam kode Anda yang mewarisi dari kelas lain, Anda mengikat kelas baru ke sebuah kontrak. Kontrak menyatakan bahwa setiap variabel dan fungsi di induk juga akan ada di anak.

Setiap kendaraan memiliki roda kemudi, pedal gas dan rem, serta lampu sein. Anda tidak perlu membuka kap untuk mengendarai mobil. Yang penting itu mobil.

Hal yang sama berlaku untuk kelas yang mewarisi dari kelas lain. Berikut adalah contoh di TypeScript:


kendaraan kelas {
pribadi _engine: string;
_ban pribadi: nomor;
konstruktor (mesin: string = "pembakaran", ban: nomor = 4) {
this._engine = mesin;
this._tires = ban;
}
mempercepat (kecepatan: nomor) {
console.log("mempercepat dengan kecepatan " + kecepatan);
}
rem (tekanan: nomor) {
console.log("menerapkan " + tekanan + " tekanan");
}
belok kiri() {
console.log("belok kiri");
}
belok kanan() {
console.log("belok kanan");
}
}
kelas Mobil memanjang Kendaraan {
}
kelas Tesla memperluas Mobil {
konstruktor() {
super("listrik");
}
}

Dalam contoh ini, ada Kendaraan kelas. NS Mobil kelas mewarisi dari Kendaraan kelas. Dan Tesla mewarisi dari Mobil. Sekarang mari kita membuat beberapa objek dan melihatnya.

biarkan myCoupe: Mobil = Kendaraan baru();
console.log (myCoupe);
console.log (myCoupe.constructor.name);
biarkan mySedan: Kendaraan = Tesla baru();
console.log (mySedan);
console.log (mySedan.constructor.name);
myCoupe.turnLeft();
mySedan.turnLeft();

Anda dapat melihat bahwa kami menyatakan myCoupe untuk menjadi Mobil dan mySedan untuk menjadi Kendaraan. Kemudian kami instantiate myCoupe sebagai yang baru Kendaraan dan mySedan sebagai yang baru Tesla. Jika kamu kunjungi kotak pasir TypeScript dan jalankan kodenya, Anda akan melihat bahwa itu berfungsi tanpa kesalahan. Dan itu berperilaku seperti yang Anda harapkan, berdasarkan kontrak.

Dengan kata lain, semua kendaraan bisa belok kiri karena mewarisinya dari Kendaraan kelas. Kompilator mengetahui bahwa setiap anak dari Kendaraan menyetujui kontrak. Jadi itu mengasumsikan semuanya baik-baik saja, tidak peduli kelas apa objek diketik atau dipakai.

Ini kadang-kadang disebut "mengetik bebek." Kompilator berasumsi bahwa jika ia berjalan seperti bebek dan berbicara seperti bebek, ia mungkin juga seekor bebek. Jadi kompiler tidak khawatir tentang detailnya dan hanya memperlakukan objek seperti bebek.

Polimorfisme Membuat Kode Anda Antipeluru

Keuntungan lain dari kontrak polimorfisme adalah jaminan bahwa kode Anda akan berfungsi. Jika Anda telah mengetik dengan kuat semua variabel Anda dan apa yang dikembalikan oleh setiap fungsi, Anda tahu bahwa setiap turunan akan selalu cocok dengan variabel, fungsi, dan tipe.

Itu berarti Anda dapat menambah dan mengubah kode di kelas Anda tanpa merusak program Anda. Setiap objek yang mereferensikan Kendaraan objek akan selalu mendapatkan data dan fungsionalitas yang memenuhi harapan, tidak peduli seberapa banyak Mobil perubahan.

Kode di dalam fungsi mungkin tidak memberikan hasil yang benar. Tapi itu masalah yang berbeda. Selama fungsi mengikuti kontrak dan mengembalikan tipe variabel yang diharapkan, itu tidak akan menghasilkan kesalahan pemecahan kode.

Polimorfisme sangat besar, dan berikut adalah 10 prinsip pemrograman yang harus Anda ketahui.

Praktek Polimorfisme

  • Gunakan tautan kotak pasir di atas untuk membuat Kapal kelas.
  • Buat instance objek perahu baru sedemikian rupa sehingga Kendaraan jenis, tapi masih terlihat seperti perahu.
  • Pastikan perahu masih berperilaku seperti kendaraan.

Satu Contoh Terakhir Polimorfisme

Polimorfisme bisa menjadi konsep yang sulit untuk dipahami pada awalnya. Tapi begitu Anda mendapatkannya, Anda telah mengambil langkah besar untuk memahami apa sebenarnya pemrograman berorientasi objek itu. Konsepnya mungkin masih tampak teoretis. Jadi, inilah contoh dunia nyata yang solid untuk membantu Anda melihat betapa bergunanya itu.

Bayangkan Anda sedang membangun aplikasi web yang terhubung ke database MySQL. Kemudian bos memutuskan untuk beralih ke database PostgreSQL. Apakah itu berarti Anda harus menulis ulang semua panggilan database Anda?

Tidak. Jika aplikasi Anda menggunakan a Akses data kelas dengan sub-kelas yang benar-benar mengacaukan data, Anda beruntung. NS Akses data class mendefinisikan bagaimana aplikasi Anda berinteraksi dengan data, bukan bagaimana aplikasi berinteraksi dengan database.

Anda memiliki sub-kelas seperti Akses MySQL dan Akses PostgresQLA yang melakukan semua pekerjaan kotor. Tetapi jika aplikasi Anda hanya memiliki Akses data objek, Anda dapat menukar database tanpa menulis ulang satu baris kode aplikasi.

MembagikanMenciakSurel
Cara Mengatur Kode Berorientasi Objek Anda Dengan Warisan

Mendapatkan pemrograman berorientasi objek dengan benar berarti Anda perlu tahu tentang pewarisan dan bagaimana hal itu dapat menyederhanakan pengkodean dan mengurangi kesalahan.

Baca Selanjutnya

Topik-topik terkait
  • Pemrograman
  • Pemrograman
  • Pemrograman berorientasi objek
Tentang Penulis
Lee Nathan (19 Artikel Diterbitkan)

Lee adalah seorang nomaden penuh waktu dan polymath dengan banyak gairah dan minat. Beberapa dari gairah itu berkisar pada produktivitas, pengembangan pribadi, dan menulis.

More From Lee Nathan

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan