Traffine I/O

Bahasa Indonesia

2023-02-24

Memahami Kelas Abstrak di Python

Pengenalan tentang Kelas Abstrak

Kelas abstrak adalah cara untuk mendefinisikan kelas dasar di Python yang tidak dapat diinstansiasi sendiri tetapi dapat disubkelas untuk membuat kelas konkret. Kelas abstrak berfungsi sebagai blueprint bagi kelas lain untuk diwarisi dan mengimplementasikan fungsionalitas mereka sendiri.

Di Python, kelas abstrak didefinisikan menggunakan modul abc. Modul ini menyediakan kelas ABC, yang merupakan singkatan dari 'Abstract Base Class'. Untuk membuat kelas abstrak, Anda harus mewarisi kelas ABC dan mendefinisikan satu atau lebih metode abstrak menggunakan dekorator @abstractmethod.

Metode abstrak adalah metode yang memiliki deklarasi tetapi tidak memiliki implementasi. Metode ini harus diimplementasikan oleh kelas konkret yang mewarisi kelas abstrak.

Manfaat utama menggunakan kelas abstrak adalah memberikan cara untuk menegakkan antarmuka tertentu untuk sekelompok kelas terkait. Ini dapat membantu memastikan bahwa subkelas semua mengimplementasikan metode yang sama dan memiliki atribut yang sama, yang dapat membuat kode Anda lebih dapat diandalkan dan lebih mudah untuk dipelihara.

Mendefinisikan Kelas Abstrak di Python

Berikut adalah contoh kode untuk mendefinisikan kelas abstrak di Python:

python
from abc import ABC, abstractmethod

class Bentuk(ABC):
    @abstractmethod
    def luas(self):
        pass

    @abstractmethod
    def keliling(self):
        pass

class PersegiPanjang(Bentuk):
    def __init__(self, panjang, lebar):
        self.panjang = panjang
        self.lebar = lebar

    def luas(self):
        return self.panjang * self.lebar

    def keliling(self):
        return 2 * (self.panjang + self.lebar)

pp = PersegiPanjang(5, 10)
print('Luas:', pp.luas())
print('Keliling:', pp.keliling())

Dalam kode ini, kita mendefinisikan kelas abstrak Bentuk menggunakan modul abc. Kemudian, kita mendefinisikan dua metode abstrak, yaitu luas dan keliling. Kelas konkret apa pun yang mewarisi dari Bentuk harus mengimplementasikan kedua metode tersebut.

Kemudian, kita mendefinisikan kelas konkret PersegiPanjang yang mewarisi dari Bentuk. PersegiPanjang mengimplementasikan metode luas dan keliling, sesuai dengan yang dibutuhkan oleh kelas abstrak Bentuk.

Terakhir, kita membuat sebuah instansi dari kelas PersegiPanjang dan memanggil metode luas dan keliling untuk menghitung luas dan keliling dari persegi panjang.

Keuntungan Menggunakan Kelas Abstrak

Kelas abstrak memberikan beberapa keuntungan saat digunakan dalam pemrograman Python.

Berikut adalah beberapa keuntungan menggunakan kelas abstrak dalam Python:

  • Memastikan konsistensi
    Kelas abstrak memberikan cara untuk menegakkan antarmuka tertentu untuk sekelompok kelas terkait. Ini membantu memastikan bahwa kelas turunan semuanya mengimplementasikan metode yang sama dan memiliki atribut yang sama, yang dapat membuat kode Anda lebih dapat diandalkan dan lebih mudah dipelihara.

  • Mendorong penggunaan ulang kode
    Dengan mendefinisikan kelas abstrak dengan fungsionalitas yang umum, Anda dapat menggunakan ulang kode di berbagai proyek dan mengurangi duplikasi. Kelas konkret yang mewarisi kelas abstrak dapat menggunakan kembali fungsionalitas yang disediakan oleh kelas abstrak, sambil juga mengimplementasikan fungsionalitas unik mereka sendiri.

  • Meningkatkan keterbacaan kode
    Kelas abstrak memberikan struktur yang jelas untuk mengorganisir kode dan dapat membuatnya lebih mudah dipahami bagaimana kelas-kelas yang berbeda saling terkait. Dengan menggunakan kelas abstrak, Anda dapat membuat kode Anda lebih modular dan lebih mudah dibaca dan dipahami.

  • Menyederhanakan pengujian
    Kelas abstrak memudahkan pengujian kode Anda, karena Anda dapat membuat implementasi palsu dari kelas abstrak untuk menguji kelas konkret Anda. Ini dapat membantu mengidentifikasi dan memperbaiki masalah dalam kode Anda lebih cepat dan efisien.

Referensi

https://docs.python.org/3/library/abc.html
https://www.geeksforgeeks.org/abstract-classes-in-python/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!