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!

Python - OOPs Concepts

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