Python - Konsep OOP: Panduan untuk Pemula
Hai di sana, yang berhasrat untuk menjadi pemrogram Python! Saya sangat gembira untuk menjadi pemandu anda dalam perjalanan yang menarik ini ke atas dunia Pemrograman Berorientasi Objek (OOP) di Python. Sebagai seseorang yang telah mengajar pemrograman selama tahun, saya dapat memberikan jaminan kepada anda bahawa walaupun OOP mungkin terasa menakutkan pada awalnya, namun ia实际上是 satu cara yang kuat dan intuitif untuk menyusun kod anda. Jadi, mari kita penyelam!
Pendekatan Berorientasi Prosedur vs OOP
Sebelum kita mendalamkan OOP, mari kita sekilas lihat pada pendekatan berorientasi prosedur yang mungkin anda kenaamiliar dengan.
Pendekatan Berorientasi Prosedur
Dalam pemrograman berorientasi prosedur, kita menulis satu rangkaian arahan langkah demi langkah untuk komputer ikut. Ia seperti memberikan satu resepi kepada seseorang:
def buat_pancake(penyiram):
campur_batter(penyiram)
panas_palang()
tuangkan_batter()
balik_ketika_gelegar()
hidangkan_panas()
penyiram = ["tepung", "susu", "telur", "gula"]
buat_pancake(penyiram)
Ini berkerja baik untuk program yang sederhana, tetapi sebagai kod anda tumbuh, ia boleh menjadi kotor dan susah untuk diuruskan. Itulah di mana OOP datang ke tempatnya!
Python - Konsep OOP
Pemrograman Berorientasi Objek adalah seperti menguruskan dapur. Alih-alih mempunyai semua alat penyediaan dan bahan di atas dan bawah, kita kumpulkan item yang berkaitan bersama-sama. Dalam OOP, kita kumpulkan data dan fungsi yang berkaitan ke dalam objek.
Kelas & Objek
Satu kelas adalah seperti rakit penyusun untuk membuat objek. Satu objek adalah satu contoh bagi kelas. Mari kita buat satu kelas Pancake
yang simple:
class Pancake:
def __init__(self, rasa):
self.rasa = rasa
self.dimasak = False
def masak(self):
print(f"Memasak pancake {self.rasa}...")
self.dimasak = True
def hidangkan(self):
if self.dimasak:
print(f"Ini adalah pancake {self.rasa} yang sedap anda!")
else:
print("Pancake belum dimasak lagi!")
# Membuat dan menggunakan objek
blueberry_pancake = Pancake("blueberry")
blueberry_pancake.masak()
blueberry_pancake.hidangkan()
Dalam contoh ini, Pancake
adalah satu kelas, dan blueberry_pancake
adalah satu objek. Metode __init__
adalah satu metode khas yang menginisialisasi objek apabila ia dibuat.
Encapsulation
Encapsulation adalah seperti mengemas batter pancake anda di atas atas rak. Ia menjaga kerja dalaman objek anda disembunyi dan menyediakan satu wajah yang kemas untuk berinteraksi dengannya.
class PancakeMixer:
def __init__(self):
self.__batter = None # Atribut privat
def mix_batter(self, penyiram):
# beberapa logika pengadun yang kompleks
self.__batter = "Batter yang diadun"
def get_batter(self):
return self.__batter
mixer = PancakeMixer()
mixer.mix_batter(["tepung", "susu", "telur"])
print(mixer.get_batter()) # Output: Batter yang diadun
# print(mixer.__batter) # Ini akan membawa penyebab AttributeError
Tanda rak bawah batter
menjadikannya satu atribut privat, yang tidak boleh diakses secara langsung dari luar kelas.
Waris
Waris adalah seperti membuat versi khusus bagi resepi pancake anda. Anda mula dengan satu resepi asas dan kemudian menambahkan variasi.
class Makanan:
def __init__(self, nama):
self.nama = nama
def persediaan(self):
print(f"Menyediakan {self.nama}")
class Pancake(Makanan):
def __init__(self, nama, sirup):
super().__init__(nama)
self.sirup = sirup
def tambah_sirup(self):
print(f"Menambah {self.sirup} sirup ke {self.nama}")
blueberry_pancake = Pancake("Pancake Blueberry", "maple")
blueberry_pancake.persediaan() # Warisi dari Makanan
blueberry_pancake.tambah_sirup() # Khusus untuk Pancake
Di sini, Pancake
warisi dari Makanan
, jadi ia memiliki semua sifat dan metode dari Makanan
, serta fitur khususnya.
Polymorphism
Polymorphism berarti "banyak bentuk". Ia seperti memiliki jenis jenis pancake yang berlainan yang boleh dimasak di atas atas rak yang sama.
class AmericanPancake:
def masak(self):
print("Memasak pancake tebal dan gebu")
class FrenchCrepe:
def masak(self):
print("Memasak crepe tipis dan lembut")
def masak_pancake(pancake):
pancake.masak()
pancake1 = AmericanPancake()
pancake2 = FrenchCrepe()
masak_pancake(pancake1) # Output: Memasak pancake tebal dan gebu
masak_pancake(pancake2) # Output: Memasak crepe tipis dan lembut
Kedua AmericanPancake
dan FrenchCrepe
memiliki satu metode masak
, tetapi mereka bertindak berlainan. Fungsi masak_pancake
boleh bekerja dengan apa jua objek yang memiliki satu metode masak
, tak kira jenisnya yang khusus.
Ringkasan Metode OOP
Berikut adalah satu rakaman cepat atas metode OOP yang kita telah pelajari:
Metode | Keterangan | Contoh |
---|---|---|
__init__ |
Metode konstruktor, menginisialisasi objek | def __init__(self, rasa): |
Metode Instans | Metode reguler yang beroperasi pada data instans | def masak(self): |
Metode Kelas | Metode yang beroperasi pada data level kelas | @classmethod def dari_adun(cls, adun): |
Metode Statik | Metode utiliti yang tidak perlu data instans atau kelas | @staticmethod def adalah_vegan(penyiram): |
Metode Properti | Metode yang bertindak seperti atribut | @property def adalah_dimasak(self): |
Dan itu adalah! Anda baru saja mengambil langkah pertama anda ke atas dunia Pemrograman Berorientasi Objek di Python. Ingat, seperti belajar untuk membuat pancake yang sempurna, menguasai OOP memerlukan praktek. Jangan takut untuk eksperimen dan membuat kesilapan – itulah cara kita belajar dan tumbuh sebagai pemrogram.
Sebagai anda teruskan perjalanan Python anda, anda akan temui bahwa konsep OOP membantu anda menulis kod yang lebih kemas, terorganisasi dan lebih mudah untuk diuruskan. Ia seperti memiliki satu dapur yang baik diuruskan – semua ada tempatnya, dan anda boleh membuat resepi kompleks (atau program) dengan mudah.
Teruskan untuk mengkod, teruskan untuk belajar, dan yang paling penting, bersenang-senang! Sebelum anda tahu, anda akan kembali memainkan konsep OOP dengan mudah seperti anda mengubah pancake. Selamat coding!
Credits: Image by storyset