Python
Dalam tutorial ini, Anda akan belajar tentang Pemrograman Berorientasi Objek (OOP) dengan Python dan konsep dasarnya dengan bantuan contoh.
Python adalah bahasa pemrograman multi-paradigma. Ini mendukung pendekatan pemrograman yang berbeda.
Salah satu pendekatan populer untuk memecahkan masalah pemrograman adalah dengan membuat objek. Ini dikenal sebagai Pemrograman Berorientasi Objek (OOP).
Sebuah objek memiliki dua karakteristik:
Mari kita ambil contoh:
Burung beo adalah objek, karena memiliki properti berikut:
Konsep OOP dalam Python berfokus pada pembuatan kode yang dapat digunakan kembali. Konsep ini juga dikenal sebagai KERING (Don't Repeat Yourself).
Dalam Python, konsep OOP mengikuti beberapa prinsip dasar:
Kelas adalah cetak biru untuk objek.
Kita dapat menganggap kelas sebagai sketsa burung beo dengan label. Ini berisi semua detail tentang nama, warna, ukuran, dll. Berdasarkan uraian tersebut, kita dapat mempelajari tentang burung beo. Di sini, burung beo adalah objek.
Contoh untuk kelas burung beo bisa :
class Parrot: pass
Di sini, kami menggunakan class
kata kunci untuk mendefinisikan kelas kosong Parrot . Dari kelas, kami membuat instance. Instance adalah objek tertentu yang dibuat dari kelas tertentu.
Sebuah objek (instance) adalah sebuah instantiasi dari sebuah kelas. Ketika kelas didefinisikan, hanya deskripsi untuk objek yang didefinisikan. Oleh karena itu, tidak ada memori atau penyimpanan yang dialokasikan.
Contoh untuk objek kelas burung beo dapat berupa:
obj = Parrot()
Di sini, obj adalah objek dari kelas Parrot
.
Misalkan kita memiliki detail burung beo. Sekarang, kita akan menunjukkan cara membangun kelas dan objek burung beo.
class Parrot:
# class attribute
species = "bird"
# instance attribute
def __init__(self, name, age):
self.name = name
self.age = age
# instantiate the Parrot class
blu = Parrot("Blu", 10)
woo = Parrot("Woo", 15)
# access the class attributes
print("Blu is a {}".format(blu.__class__.species))
print("Woo is also a {}".format(woo.__class__.species))
# access the instance attributes
print("{} is {} years old".format( blu.name, blu.age))
print("{} is {} years old".format( woo.name, woo.age))
Keluaran
Blu is a bird Woo is also a bird Blu is 10 years old Woo is 15 years old
Pada program di atas, kita membuat sebuah class dengan nama Parrot . Kemudian, kita mendefinisikan atribut. Atribut adalah karakteristik dari suatu objek.
Atribut ini didefinisikan di dalam __init__
metode kelas. Ini adalah metode penginisialisasi yang pertama kali dijalankan segera setelah objek dibuat.
Kemudian, kita membuat instance dari Parrot kelas. Di sini, blu dan woo adalah referensi (nilai) ke objek baru kami.
Kita dapat mengakses atribut class menggunakan __class__.species
. Atribut kelas adalah sama untuk semua instance kelas. Demikian pula, kami mengakses atribut instance menggunakan blu.name
dan blu.age
. Namun, atribut instance berbeda untuk setiap instance kelas.
Untuk mempelajari lebih lanjut tentang kelas dan objek, buka Kelas dan Objek Python
Metode adalah fungsi yang didefinisikan di dalam tubuh kelas. Mereka digunakan untuk mendefinisikan perilaku suatu objek.
class Parrot:
# instance attributes
def __init__(self, name, age):
self.name = name
self.age = age
# instance method
def sing(self, song):
return "{} sings {}".format(self.name, song)
def dance(self):
return "{} is now dancing".format(self.name)
# instantiate the object
blu = Parrot("Blu", 10)
# call our instance methods
print(blu.sing("'Happy'"))
print(blu.dance())
Keluaran
Blu sings 'Happy' Blu is now dancing
Pada program di atas, kita mendefinisikan dua metode yaitu sing()
dan dance()
. Ini disebut metode instance karena dipanggil pada objek instance yaitu blu
.
Warisan adalah cara membuat kelas baru untuk menggunakan detail kelas yang ada tanpa memodifikasinya. Kelas yang baru terbentuk adalah kelas turunan (atau kelas anak). Demikian pula, kelas yang ada adalah kelas dasar (atau kelas induk).
# parent class
class Bird:
def __init__(self):
print("Bird is ready")
def whoisThis(self):
print("Bird")
def swim(self):
print("Swim faster")
# child class
class Penguin(Bird):
def __init__(self):
# call super() function
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()
Keluaran
Bird is ready Penguin is ready Penguin Swim faster Run faster
Dalam program di atas, kami membuat dua kelas yaitu Burung (kelas induk) dan Penguin (kelas anak). Kelas anak mewarisi fungsi kelas induk. Hal ini dapat kita lihat dari swim()
metode.
Sekali lagi, kelas anak memodifikasi perilaku kelas induk. Kita bisa melihat ini dari whoisThis()
metode. Selanjutnya, kami memperluas fungsi kelas induk, dengan membuat run()
baru metode.
Selain itu, kami menggunakan super()
fungsi di dalam __init__()
metode. Ini memungkinkan kita untuk menjalankan __init__()
metode kelas induk di dalam kelas anak.
Menggunakan OOP di Python, kita dapat membatasi akses ke metode dan variabel. Ini mencegah data dari modifikasi langsung yang disebut enkapsulasi. Dalam Python, kami menunjukkan atribut pribadi menggunakan garis bawah sebagai awalan yaitu _
single tunggal atau gandakan __
.
class Computer:
def __init__(self):
self.__maxprice = 900
def sell(self):
print("Selling Price: {}".format(self.__maxprice))
def setMaxPrice(self, price):
self.__maxprice = price
c = Computer()
c.sell()
# change the price
c.__maxprice = 1000
c.sell()
# using setter function
c.setMaxPrice(1000)
c.sell()
Keluaran
Selling Price: 900 Selling Price: 900 Selling Price: 1000
Dalam program di atas, kita mendefinisikan sebuah Komputer kelas.
Kami menggunakan __init__()
cara menyimpan harga jual maksimal Computer
. Di sini, perhatikan kodenya
c.__maxprice = 1000
Di sini, kami mencoba mengubah nilai __maxprice di luar kelas. Namun, karena __maxprice adalah variabel pribadi, modifikasi ini tidak terlihat pada output.
Seperti yang ditunjukkan, untuk mengubah nilainya, kita harus menggunakan fungsi setter yaitu setMaxPrice()
yang menggunakan harga sebagai parameter.
Polimorfisme adalah kemampuan (dalam OOP) untuk menggunakan antarmuka umum untuk berbagai bentuk (tipe data).
Misalkan, kita perlu mewarnai sebuah bentuk, ada beberapa pilihan bentuk (persegi panjang, persegi, lingkaran). Namun kita bisa menggunakan metode yang sama untuk mewarnai bentuk apapun. Konsep ini disebut Polimorfisme.
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()
#instantiate objects
blu = Parrot()
peggy = Penguin()
# passing the object
flying_test(blu)
flying_test(peggy)
Keluaran
Parrot can fly Penguin can't fly
Dalam program di atas, kami mendefinisikan dua kelas Parrot dan Penguin . Masing-masing memiliki fly()
yang sama metode. Namun, fungsinya berbeda.
Untuk menggunakan polimorfisme, kami membuat antarmuka umum yaitu flying_test()
fungsi yang mengambil objek apa pun dan memanggil fly()
object objek tersebut metode. Jadi, ketika kami melewati blu dan peggy objek di flying_test()
fungsi, itu berjalan secara efektif.
Python
OOP dengan Python OOP dengan Python adalah pendekatan pemrograman yang berfokus pada penggunaan objek dan kelas yang sama dengan bahasa pemrograman umum lainnya. Objek dapat berupa entitas dunia nyata apa pun. Python memungkinkan pengembang untuk mengembangkan aplikasi menggunakan pendekatan OOP de
Slot kelas Python adalah fitur yang tidak banyak diketahui oleh programmer. Di kelas slotted, kami secara eksplisit mendefinisikan bidang yang diizinkan untuk dimiliki oleh kelas kami menggunakan nama bidang ajaib __slots__ . Ini memiliki beberapa keuntungan: Objek yang dibuat dari kelas akan memak
Kelas data Python adalah kelas Python biasa yang memiliki @dataclass penghias. Ini khusus dibuat untuk menyimpan data. Sejak Python versi 3.7, Python menawarkan kelas data melalui modul bawaan yang disebut dataclass . Ada beberapa keunggulan dibandingkan kelas Python biasa yang akan kita jelajahi di
Halaman SebelumnyaHalaman Berikutnya Python menyediakan berbagai opsi untuk mengembangkan antarmuka pengguna grafis (GUI). Yang paling penting tercantum di bawah ini. Tkinter Tkinter adalah antarmuka Python ke toolkit GUI Tk yang dikirimkan bersama Python. Kami akan melihat opsi ini di bab ini.