Polimorfisme Dalam OOPS: Apa itu Polimorfisme [Penjelasan Mendetail]

Diterbitkan: 2020-11-24

Polimorfisme dalam OOP tidak dapat dipisahkan dan merupakan konsep penting dari setiap bahasa pemrograman berorientasi objek. Sebuah objek atau referensi pada dasarnya dapat mengambil beberapa bentuk dalam contoh yang berbeda. Seperti yang disarankan oleh kata tersebut, 'poli' berarti 'banyak' dan 'morf' menunjuk pada 'bentuk'; dengan demikian, polimorfisme secara keseluruhan akan berarti 'suatu sifat yang memiliki banyak bentuk.'

Bahasa pemrograman berorientasi objek memproses kelas dan objek dengan satu antarmuka. Ini mengimplementasikan konsep fungsi overloading, overriding, dan fungsi virtual. Juga, biasanya digunakan untuk instrumentasi pewarisan dalam pemrograman.

Baca: Polimorfisme vs Warisan

Daftar isi

Contoh Polimorfisme dalam OOP

Polimorfisme adalah metode dalam bahasa pemrograman berorientasi objek yang melakukan hal-hal berbeda sesuai kelas objek, yang menyebutnya. Dengan Polimorfisme, sebuah pesan dikirim ke beberapa objek kelas, dan setiap objek merespons dengan tepat sesuai dengan properti kelas tersebut.

Berikut adalah kode yang menjelaskan polimorfisme dengan jelas:

gunakan peringatan;
# Membuat kelas paket
paket A;
# Membuat Konstruktor
sub baru
{
# shift akan mengambil nama paket
# dan tetapkan ke variabel 'kelas'
$kelas saya = shift;
$diriku = {
'nama' => geser,
'roll_no' => geser
};
sub metode
{
print("Ini termasuk kelas A");
}
};
paket B;
# Array @ISA berisi daftar
# dari kelas induk kelas itu, jika ada
saya @ISA = (A);

submetode
{
print("Ini milik kelas B");
}
paket utama;
B->metode();
A->metode();

Keluaran:

Ini milik kelas B

Ini milik kelas A

Pelajari cara membuat aplikasi seperti Swiggy, Quora, IMDB, dan lainnya

Penjelasan

Untuk keluaran pertama, metode() yang didefinisikan di kelas B mengesampingkan definisi yang diwarisi dari kelas A dan sebaliknya untuk keluaran kedua. Properti ini berguna dalam memperluas fungsionalitas paket yang sudah ada sebelumnya tanpa menulis ulang seluruh definisi seluruh kelas. Dengan demikian, memudahkan pekerjaan programmer dan alasan untuk digunakan secara luas.

Jenis Polimorfisme di Ups

Dalam bahasa Object-Oriented Programming (OOPS), ada dua jenis polimorfisme seperti di bawah ini:

  1. Polimorfisme Pengikatan Statis (atau waktu Kompilasi), misalnya Metode Overloading
  2. Polimorfisme Pengikatan Dinamis (atau Waktu Proses), mis., Penggantian metode

Sumber

1. Waktu Kompilasi atau Polimorfisme Statis

Dengan Metode Overloading, polimorfisme statis dicapai dalam bahasa Pemrograman Berorientasi Objek yang memungkinkan programmer untuk mengimplementasikan berbagai metode. Nama yang mereka gunakan bisa sama, tetapi parameternya berbeda. Kondisi tertentu kondusif untuk polimorfisme statis seperti di bawah ini:

  • Jenis Semua Parameter harus berbeda.
  • Urutan Parameter bisa berbeda.
  • Jumlah parameter dari satu metode harus berbeda dari metode lainnya.

Dalam polimorfisme pengikatan statis , jenis dan jumlah argumen yang cocok memanggil fungsi kelebihan beban.

  • Karena semua informasi ini tersedia selama waktu kompilasi, kompiler memilih fungsi yang sesuai.
  • Fungsi overloading melakukannya, dan overloading operator juga disebut sebagai pengikatan statis atau pengikatan awal.

Program

kelas A // kelas dasar

{

dalam sebuah;

publik :

tampilan kosong ()

{

cout<< “Kelas A” ;

}

};

kelas B: publik A // kelas turunan

{

int b;

publik :

tampilan kosong ()

{

cout<< "Kelas B" ;

}

};

Dalam program di atas, prototipe fungsi display() adalah sama di kelas dasar dan kelas turunan. Oleh karena itu, pengikatan statis tidak dapat diterapkan di sini. Program ini akan berjalan paling baik saat dijalankan dengan pilihan fungsi yang sesuai.

  • Selama waktu berjalan, kompiler bahasa mengidentifikasi berbagai metode dengan mengidentifikasi tanda tangan dari metode tersebut.
  • Kompiler pertama-tama mengidentifikasi tanda tangan metode dan memutuskan metode untuk pemanggilan metode tertentu selama kompilasi program.
  • Eksekusi untuk waktu Kompilasi Polimorfisme jauh lebih cepat tetapi prosesnya tidak begitu fleksibel.

Baca Juga: Pertanyaan Wawancara OOPS

Runtime atau Polimorfisme Dinamis

Dalam Polimorfisme Dinamis, panggilan ke satu metode yang diganti diselesaikan selama runtime program. Metode overriding adalah salah satu contoh menonjol dari Runtime Polymorphism. Dalam proses ini, override dilakukan melalui pointer dan fungsi virtual.

  • Dalam Metode Overriding, satu metode dideklarasikan dalam sub-kelas yang ada di kelas induk. Kelas anak memperoleh metode untuk implementasi.
  • Selama Polimorfisme Runtime, kelas menawarkan spesifikasinya sendiri ke metode turunan lainnya. Transfer antar metode ini dicapai tanpa memodifikasi kode objek kelas induk.

Program

#sertakan <iostream>

menggunakan namespace std;

kelas Hewan { // kelas dasar

publik :

warna string = “Coklat” ;

};

class Anjing: Hewan publik // mewarisi kelas Hewan.

{

publik :

warna string = “Hijau” ;

};

int utama( kosong ) {

Hewan d= Anjing();

cout<<d.warna;

}

Keluaran:

cokelat

  • Dalam polimorfisme waktu proses, metode objek dipanggil pada waktu proses, bukan waktu kompilasi.
  • Hal ini dimungkinkan dengan metode overriding, yang juga disebut sebagai dynamic binding atau late binding.
  • Proses polimorfisme dinamis relatif lebih lambat tetapi fleksibel daripada polimorfisme waktu kompilasi.

Perbedaan B/W Compile-Time dan Run-Time Polimorfisme

Polimorfisme Waktu Kompilasi Polimorfisme Waktu Jalan
Memanggil Fungsi Fungsi dipanggil pada waktu kompilasi. Fungsi dipanggil pada saat run time.
Istilah Umum Ini dikenal sebagai overloading, early binding, dan static binding. Ini dikenal sebagai overriding, late binding, dan dynamic binding.
Nama Metode dan Parameter Pada Overloading, lebih dari satu metode memiliki nama yang sama tetapi dengan jumlah atau jenis parameter yang berbeda. Dalam Overriding, lebih dari satu metode memiliki nama, nomor, dan jenis parameter yang sama.
operator Hal ini dicapai dengan fungsi dan kelebihan beban operator. Hal ini dicapai dengan fungsi virtual dan pointer.
Waktu eksekusi Ini dieksekusi lebih cepat daripada polimorfisme run-time pada waktu kompilasi. Ini dieksekusi lebih lambat daripada polimorfisme waktu kompilasi pada waktu proses.
Fleksibilitas Ini kurang fleksibel karena semuanya dijalankan pada waktu kompilasi. Ini lebih fleksibel karena semuanya dijalankan pada saat run time.

Kata-kata Terakhir

Polimorfisme adalah konsep yang harus dipelajari dari OOP karena menawarkan beberapa keuntungan saat pemrograman. Dengan Polimorfisme, pengguna dapat merombak kelas dan kode yang diuji. Hal ini berguna dalam memperluas pemrograman dengan sendirinya. Ini juga memungkinkan pengguna untuk menyimpan beberapa variabel tipe yang berbeda seperti double, Float, Int, atau Long dalam satu variabel untuk mempermudah pencarian dan penerapannya.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang OOP, pengembangan perangkat lunak full-stack, lihat PG Diploma dalam Pengembangan Perangkat Lunak Full-stack upGrad & IIIT-B yang dirancang untuk profesional yang bekerja dan menawarkan 500+ jam pelatihan yang ketat, 9+ proyek dan penugasan, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Menjadi Pengembang Tumpukan Penuh

UPGRAD DAN DIPLOMA PG IIIT-BANGALORE DALAM PENGEMBANGAN PERANGKAT LUNAK
Belajarlah lagi