Python

Polimorfisme dalam Python

Polimorfisme dalam Python
Polimorfisme berarti "banyak bentuk".Polimorfisme merupakan fitur penting dari Pemrograman Berorientasi Objek (OOP).  Ketika metode yang sama dideklarasikan beberapa kali, untuk beberapa tujuan, dan di kelas yang berbeda, maka itu disebut polimorfisme. Fitur lain dari OOP adalah warisan, di mana kelas anak dapat dibuat dengan mewarisi fitur kelas induk parent. Terkadang, pemrogram harus mendeklarasikan metode dengan nama yang sama di kelas induk dan anak untuk berbagai tujuan. Jenis tugas ini juga dapat diimplementasikan dengan menggunakan polimorfisme. Artikel ini menjelaskan bagaimana polimorfisme dapat didefinisikan dalam pemrograman berorientasi objek (OOP).

Contoh 1: Polimorfisme dengan Fungsi dan Objek

Script berikut menunjukkan penggunaan polimorfisme antara dua kelas yang berbeda. Sebuah fungsi digunakan untuk membuat objek dari kelas-kelas tersebut. Nilai dari variabel bernama warna diinisialisasi dalam __init__() metode keduanya 'Burung beo' dan 'Burung unta' kelas pada saat pembuatan objek. Itu fitur() metode didefinisikan di kedua kelas, tetapi output dari metode untuk setiap kelas sedikit berbeda. Itu Buat_Objek() fungsi digunakan untuk membuat objek kelas. Fungsi ini dijalankan dua kali untuk membuat objek di 'Burung beo' kelas dan  di 'Burung unta' kelas. Masing-masing akan memanggil metode features() dari kedua kelas dan mencetak hasilnya.

#!/usr/bin/env python3
# Tentukan kelas Parrot
kelas burung beo():
def __init__(diri,warna):
diri.warna = warna
fitur def (diri):
print("Warna burung beo adalah %s" %self.warna)
print("Burung beo bisa terbang")
# Tentukan kelas Burung Unta
kelas burung unta():
def __init__(diri,warna):
diri.warna = warna
fitur def (diri):
print("Warna burung unta adalah %s" %self.warna)
print("Burung unta tidak bisa terbang")
# Tentukan fungsi untuk memanggil metode kelas
def Buat_Objek(Objek):
Obyek.fitur()
# Buat objek kelas Parrot
Buat_Objek(Burung Beo('Hijau'))
# Buat objek kelas Burung Unta
Create_Object(Ostrich('Hitam dan Putih'))

Keluaran

Output berikut menunjukkan bahwa objek 'Burung beo' kelas dibuat dengan 'hijau' sebagai warna nilai. Fungsi mencetak output dengan memanggil fitur() metode 'Burung beo' kelas. Selanjutnya, objek 'Burung unta' kelas dibuat dengan 'Hitam dan putih' sebagai warna nilai. Fungsi mencetak output dengan memanggil fitur() metode 'Burung unta' kelas.

Contoh 2: Polimorfisme dalam Metode Kelas yang Tidak Terkait

Seperti pada contoh sebelumnya, skrip berikut menunjukkan penggunaan polimorfisme di dua kelas yang berbeda, tetapi tidak ada fungsi kustom yang digunakan untuk mendeklarasikan objek. Itu __init__() metode keduanya 'Pengelola' dan 'petugas' kelas akan menginisialisasi variabel yang diperlukan. Polimorfisme diimplementasikan di sini dengan membuat detail_post() dan gaji() metode di dalam kedua kelas. Isi dari metode ini berbeda untuk masing-masing kelas ini. Selanjutnya, variabel objek dibuat untuk kedua kelas dan diulang oleh a untuk sebuah lingkaran. Dalam setiap iterasi, detail_post() dan gaji() metode dipanggil untuk mencetak output.

#!/usr/bin/env python3
# Tentukan kelas bernama Manajer
manajer kelas:
def __init__(diri, nama, departemen):
diri.nama = nama
diri.posting = 'Manajer'
diri.departemen = departemen
# Tentukan fungsi untuk mengatur detail
def post_details(sendiri):
jika diri sendiri.departemen.atas() == 'HR':
diri.dasar = 30000
lain:
diri.dasar = 25000
diri.sewa rumah = 10000
diri.transportasi = 5000
print("Postingan %s adalah %s" %(self.nama, diri sendiri.pos))
# Tentukan fungsi untuk menghitung gaji
def gaji (sendiri):
gaji = diri sendiri.dasar + diri sendiri.sewa rumah + diri sendiri.mengangkut
kembali gaji
# Tentukan kelas bernama Clerk
petugas kelas:
def __init__(diri sendiri, nama):
diri.nama = nama
diri.pos = 'Petugas'
# Tentukan fungsi untuk mengatur detail
def post_details(sendiri):
diri.dasar = 10.000
diri.transportasi = 2000
print("Postingan %s adalah %s" %(self.nama, diri sendiri.pos))
# Tentukan fungsi untuk menghitung gaji
def gaji (sendiri):
gaji = diri sendiri.dasar + diri sendiri.mengangkut
kembali gaji
# Buat objek untuk kelas
manajer = Manajer("Kabir", "jam")
petugas = Clerk("Robin")
# Panggil fungsi yang sama dari kelas yang berbeda
untuk obj in (manajer, petugas):
obj.post_detail()
print("Gajinya adalah ",obj.gaji())

Keluaran

Output berikut menunjukkan bahwa objek 'Palungan' kelas digunakan dalam iterasi pertama dari untuk loop dan gaji manajer dicetak setelah perhitungan. Objek dari 'petugas' kelas digunakan dalam iterasi kedua dari untuk loop dan gaji petugas dicetak setelah perhitungan.

Contoh 3: Polimorfisme dalam Metode Kelas Terkait

Skrip berikut menunjukkan penggunaan polimorfisme antara dua kelas anak. Di sini, keduanya'Segi tiga' dan 'Lingkaran' adalah kelas anak dari kelas induk bernama 'Geometris_Bentuk.' Menurut warisan, kelas anak dapat mengakses semua variabel dan metode dari kelas induk. Itu __init__() metode 'Geometris_Bentuk' kelas digunakan di kedua kelas anak untuk menginisialisasi variabel nama dengan menggunakan super() metode. Nilai-nilai dari mendasarkan dan tinggi dari 'Segi tiga' kelas akan diinisialisasi pada saat pembuatan objek. Dengan cara yang sama, nilai jari-jari dari 'Lingkaran' kelas akan diinisialisasi pada saat pembuatan objek. Rumus untuk menghitung luas segitiga adalah ½ × mendasarkan × tinggi, yang diimplementasikan dalam daerah() metode  'Segi tiga' kelas. Rumus untuk menghitung luas lingkaran adalah 3.14 × (radius)2, yang diimplementasikan dalam daerah() metode 'Lingkaran' kelas. Nama kedua metode itu sama, di sini, tetapi tujuannya berbeda. Selanjutnya, nilai string akan diambil dari pengguna untuk membuat objek dan memanggil metode berdasarkan nilai tersebut. Jika pengguna mengetik 'segitiga', maka objek dari 'Segi tiga' kelas akan dibuat, dan jika pengguna mengetik 'lingkaran', maka objek dari 'Lingkaran' kelas akan dibuat. Jika pengguna mengetik teks apa pun tanpa 'segitiga' atau 'lingkaran', maka tidak ada objek yang akan dibuat, dan pesan kesalahan akan dicetak.

#!/usr/bin/env python3
# Tentukan kelas induk
kelas Geometric_Shape:
def __init__(diri sendiri, nama):
diri.nama = nama
# Tentukan kelas anak untuk menghitung luas segitiga
kelas Segitiga(Geometric_Shape):
def __init__(diri,nama,dasar,tinggi):
super().__init__(nama)
diri.dasar = dasar
diri.tinggi = tinggi
daerah def (sendiri):
hasil = 0.5 * diri sendiri.dasar * diri.tinggi
print("\nLuas %s = %5.2f" %(sendiri.nama, hasil))
# Tentukan kelas anak untuk menghitung luas lingkaran
kelas Lingkaran(Geometric_Shape):
def __init__(diri,nama,radius):
super().__init__(nama)
diri.jari-jari = jari-jari
daerah def (sendiri):
hasil = 3.14 * diri sendiri.radius**2
print("\nLuas %s = %5.2f" %(sendiri.nama, hasil))
cal_area=input("Area mana yang ingin Anda hitung?? segitiga/lingkaran\n")
jika cal_area.atas()== 'SEGITIGA':
base = float(input('Masukkan alas segitiga : '))
tinggi = float(input('Masukkan tinggi segitiga: '))
obj = Segitiga('Segitiga',alas,tinggi)
obj.daerah()
elif cal_area.atas()== 'LINGKARAN':
radius = float(input('Masukkan jari-jari lingkaran : '))
obj = Lingkaran('Lingkaran',jari-jari)
obj.daerah()
lain:
print("Masukan salah")

Keluaran

Pada output berikut, skrip dieksekusi dua kali. Pertama kali, segi tiga diambil sebagai input dan objek diinisialisasi oleh tiga nilai, 'Segi tiga', mendasarkan, dan tinggi. Nilai-nilai ini kemudian digunakan untuk menghitung luas segitiga dan hasilnya akan dicetak. Kedua kalinya, lingkaran diambil sebagai input, dan objek diinisialisasi oleh dua nilai, 'Lingkaran' dan radius. Nilai-nilai ini kemudian digunakan untuk menghitung luas lingkaran dan hasilnya akan dicetak.

Kesimpulan

Artikel ini menggunakan contoh mudah untuk menjelaskan tiga perbedaan penggunaan polimorfisme di Python. Konsep polimorfisme juga dapat diterapkan tanpa kelas, metode yang tidak dijelaskan di sini. Artikel ini membantu pembaca untuk mempelajari lebih lanjut tentang bagaimana menerapkan polimorfisme dalam pemrograman Python berbasis berorientasi objek.

Cara Menampilkan Penghitung FPS di Game Linux
Game Linux mendapat dorongan besar ketika Valve mengumumkan dukungan Linux untuk klien Steam dan game mereka pada tahun 2012. Sejak itu, banyak game A...
Cara mengunduh dan Memainkan Civilization VI Sid Meier di Linux
Pengenalan permainan Civilization 6 adalah konsep modern dari konsep klasik yang diperkenalkan dalam seri game Age of Empires. Idenya cukup sederhana;...
Cara Menginstal dan Memainkan Doom di Linux
Pengantar Doom Seri Doom berasal dari tahun 90-an setelah rilis Doom. Itu adalah hit instan dan sejak saat itu seri game telah menerima banyak penghar...