Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Menguasai Pemrograman Berorientasi Objek Python: Kelas, Warisan, Enkapsulasi & Polimorfisme

Pemrograman Berorientasi Objek Python

Panduan ini membimbing Anda melalui konsep inti Pemrograman Berorientasi Objek (OOP) Python, lengkap dengan contoh praktis yang mengilustrasikan cara membangun kode yang kuat dan dapat digunakan kembali.

Video: Object-Oriented Programming in Python

Pemrograman Berorientasi Objek

Python adalah bahasa multi-paradigma yang mendukung beberapa gaya pemrograman. Salah satu pendekatan paling kuat adalah memodelkan masalah menggunakan objek—pendekatan yang dikenal sebagai Pemrograman Berorientasi Objek (OOP).

Sebuah objek memiliki dua karakteristik penting:

Misalnya, seekor beo adalah objek dengan atribut seperti name, age, dan color, dan perilaku seperti sing() dan dance().

OOP di Python mempromosikan kode yang dapat digunakan kembali, mengikuti prinsip DRY (Don’t Repeat Yourself).

Class

Sebuah class adalah cetak biru yang mendefinisikan struktur dan perilaku objek. Bayangkan sebagai sketsa rinci seekor beo: ini menentukan properti dan tindakan apa yang bisa dimiliki beo.

class Parrot:
    pass

Di sini, Parrot adalah kelas kosong. Instance dari kelas ini dibuat nanti.

Object

Sebuah object (atau instance) adalah realisasi konkret dari sebuah kelas. Saat kelas didefinisikan, tidak ada memori yang dialokasikan; hanya templat yang ada. Instantiasi kelas menciptakan objek.

obj = Parrot()

Dalam contoh di bawah, kita membangun kelas Parrot yang fungsional dan membuat dua instance, blu dan woo:

class Parrot:
    # Class attribute
    species = "bird"
    # Instance attributes
    def __init__(self, name, age):
        self.name = name
        self.age = age
    # Instantiate the class
blu = Parrot("Blu", 10)
woo = Parrot("Woo", 15)
# Access class attributes
print("Blu is a {}".format(blu.__class__.species))
print("Woo is also a {}".format(woo.__class__.species))
# Access instance attributes
print("{} is {} years old".format(blu.name, blu.age))
print("{} is {} years old".format(woo.name, woo.age))

Output

Blu is a bird Woo is also a bird Blu is 10 years old Woo is 15 years old

Dalam cuplikan ini, species adalah atribut kelas yang dibagi oleh semua beo, sedangkan name dan age adalah atribut instance yang unik untuk setiap objek.

Metode

Metode adalah fungsi yang didefinisikan di dalam kelas yang menggambarkan perilaku objek. Mereka dipanggil pada instance kelas.

class Parrot:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def sing(self, song):
        return f"{self.name} sings {song}"
    def dance(self):
        return f"{self.name} is now dancing"
# Instantiate and use methods
blu = Parrot("Blu", 10)
print(blu.sing("'Happy'"))
print(blu.dance())

Output

Blu sings 'Happy' Blu is now dancing

Warisan

Warisan memungkinkan kelas baru mewarisi atribut dan metode dari kelas yang sudah ada, mempromosikan penggunaan kembali kode dan hierarki logis.

# Base class
class Bird:
    def __init__(self):
        print("Bird is ready")
    def whoisThis(self):
        print("Bird")
    def swim(self):
        print("Swim faster")
# Derived class
class Penguin(Bird):
    def __init__(self):
        super().__init__()
        print("Penguin is ready")
    def whoisThis(self):
        print("Penguin")
    def run(self):
        print("Run faster")
peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()

Output

Bird is ready Penguin is ready Penguin Swim faster Run faster

Enkapsulasi

Enkapsulasi membatasi akses langsung ke kondisi internal objek, melindungi integritas data. Di Python, atribut pribadi ditandai dengan garis bawah di depan (tunggal atau ganda).

class Computer:
    def __init__(self):
        self.__maxprice = 900
    def sell(self):
        print(f"Selling Price: {self.__maxprice}")
    def setMaxPrice(self, price):
        self.__maxprice = price
c = Computer()
c.sell() # Attempt to modify directly
c.__maxprice = 1000
c.sell() # Use setter method
c.setMaxPrice(1000)
c.sell()

Output

Selling Price: 900 Selling Price: 900 Selling Price: 1000

Polimorfisme

Polimorfisme memungkinkan objek dari kelas yang berbeda diperlakukan melalui antarmuka yang sama, memungkinkan kode fleksibel yang dapat beroperasi pada berbagai tipe objek.

class Parrot:
    def fly(self):
        print("Parrot can fly")
    def swim(self):
        print("Parrot can't swim")
class Penguin:
    def fly(self):
        print("Penguin can't fly")
    def swim(self):
        print("Penguin can swim")
# Common interface
def flying_test(bird):
    bird.fly()
blu = Parrot()
peggy = Penguin()
flying_test(blu)
flying_test(peggy)

Output

Parrot can fly Penguin can't fly

Key Takeaways

Python

  1. Kelas dan Objek C#: Fondasi untuk OOP yang Kuat
  2. Menguasai Tipe Data Python: Panduan Praktis
  3. Menguasai Operator Python: Panduan Komprehensif
  4. Menguasai Kamus Python: Pembuatan, Manipulasi, dan Teknik Lanjutan
  5. Menguasai Exception Kustom Python: Panduan Praktis
  6. Menguasai Warisan Python: Konsep, Sintaks, dan Contoh Praktis
  7. Pola Singleton Java Dijelaskan: Cara Menerapkan dan Menggunakannya dengan Aman
  8. Pelacakan Objek Berbasis Visi Otomatis dengan Raspberry Pi dan OpenCV
  9. Menguasai Java: Memahami Objek, Kelas, dan Konsep OOP Inti
  10. Serialisasi Objek Java: Menyimpan dan Memulihkan Objek