Dalam kuliah ini, kita akan belajar tentang kelas, konstruktor, dan pewarisan dalam python.
Konsep-konsep ini sangat penting dalam program besar di mana jenis yang berbeda perlu didefinisikan.
Kelas
Kelas sangat penting dalam pemrograman dan tidak khusus untuk python. Banyak lainnya bahasa pemrograman mendukung gagasan kelas. Kami menggunakan kelas untuk mendefinisikan tipe data baru.
Sejauh ini, kita telah mempelajari tentang tipe data dasar dalam Python seperti angka, string, dan boolean. Ini adalah tipe data dasar atau sederhana dalam Python. Kami juga telah melihat beberapa tipe data yang kompleks seperti daftar dan kamus.
Meskipun tipe ini sangat berguna, mereka tidak selalu dapat digunakan untuk memodelkan konsep yang kompleks. Misalnya, pikirkan ide tentang sebuah titik, atau keranjang belanja. Keranjang belanja bukanlah boolean atau daftar. Ini adalah jenis data yang berbeda. Jadi kita bisa menggunakan kelas untuk mendefinisikan tipe baru untuk memodelkan konsep nyata.
Sekarang, mari kita definisikan tipe data baru yang disebut titik. Tipe baru ini akan memiliki metode seperti yang kita periksa sebelumnya.
Ini adalah bagaimana Anda akan melakukannya:
Kami mulai dengan mendefinisikan kelas dengan menggunakan kata kunci "kelas" dan tepat setelah itu kami memberi nama kelas kami.
class Point
Sekarang, lihat konvensi penamaan yang saya gunakan di sini. Saya telah menggunakan huruf kapital pada huruf pertama di sini, inilah yang kita sebut konvensi penamaan pascal. Konvensi ini berbeda dari yang kita gunakan untuk menamai variabel dan fungsi kita yang selalu menggunakan huruf kecil dan memisahkan beberapa kata menggunakan garis bawah. Tetapi ketika menamai kelas, kami tidak menggunakan garis bawah untuk memisahkan beberapa kata, kami menggunakan huruf besar untuk huruf pertama setiap kata.
Setelah mendefinisikan kelas kami, titik dua digunakan yang berarti bahwa sekarang sebuah blok didefinisikan.
class Point:
def move (self):
Di blok ini, kita dapat mendefinisikan semua fungsi atau metode yang termasuk dalam poin. Misalnya, kita dapat mendefinisikan fungsi yang disebut "bergerak" untuk memindahkan suatu titik. Perhatikan bahwa segera setelah kita mengetik kurung buka, PyCharm secara otomatis menambahkan "diri" di sini. Ini adalah kata kunci khusus dan izinkan saya kembali ke ini segera. Mari kita cetak "bergerak" di terminal.
print("move")
Mari kita definisikan metode lain seperti "draw" dan mencetaknya di terminal.
def draw(self):
print("draw")
Kami sudah selesai dengan definisi kelas "titik" kami. Dengan tipe baru ini, kita dapat membuat objek baru. Kelas hanya mendefinisikan cetak biru atau template untuk membuat objek yang merupakan contoh aktual berdasarkan cetak biru itu. Untuk membuat objek, kita mengetikkan nama kelas kita dan kemudian memanggilnya seperti fungsi. Ini menciptakan objek baru dan kemudian mengembalikannya. Kemudian kita dapat menyimpan objek tersebut dalam sebuah variabel. Mari ku tunjukkan:
Di sini kita telah mendefinisikan "titik1" yang merupakan titik tiga dimensi. Anda dapat melihatnya, kami dapat mencetak koordinat individual di terminal.
Kita dapat menggunakan dua metode "menggambar" dan "bergerak" dengan titik ini.
Jadi untuk rekap, kami menggunakan kelas untuk mendefinisikan tipe baru dan tipe ini dapat memiliki metode yang kami definisikan di badan kelas. Kelas dapat memiliki atribut yang dapat kita atur di mana saja dalam program kita.
Konstruktor
Sejauh ini, kita telah belajar cara membuat tipe baru menggunakan kelas. Sekarang ada masalah kecil dengan implementasi ini. Kita dapat membuat objek titik tanpa koordinat x atau y menggunakan kelas dan itu tidak ideal. Mari ku tunjukkan.
Mari kita buat sebuah titik dan mencetaknya sebelum kita mengatur koordinat x. Menjalankan program kami menghasilkan kesalahan atribut seperti ini:
Artinya objek titik tidak memiliki atribut yang disebut x. Sekarang masalahnya adalah mungkin untuk memiliki objek titik tanpa koordinat x atau y. Ini tidak masuk akal karena setiap kali kita berbicara tentang suatu titik, kita perlu tahu di mana titik itu berada. Untuk mengatasi masalah ini, kami menggunakan konstruktor. Konstruktor adalah fungsi yang dipanggil pada saat membuat objek.
Berikut adalah bagaimana kita menggunakan konstruktor. Pertama, lewati nilai koordinat x dan y pada program di atas.
point = Point(10, 20)
print(point.x)
Sekarang, kita perlu menambahkan metode khusus di kelas ini yang disebut konstruktor. Sintaksnya seperti ini:
def __init__(self, x, y):
init
adalah kependekan dari inisialisasi, dan ini adalah fungsi atau metode yang dipanggil ketika objek titik baru dibuat. X dan y ditambahkan tepat setelah self
untuk menambahkan dua parameter tambahan.
Setelah itu, kita harus memetakan x dan y ke nilai yang dilewati yaitu 10 dan 20
self.x = x
self.y = y
Kami menggunakan self
untuk merujuk ke objek saat ini dan kemudian kita mengatur atribut x ke argumen x yang diteruskan ke fungsi "x". Dengan cara ini, menggunakan init
metode, kita dapat menginisialisasi objek kita. Metode ini disebut sebagai konstruktor. Mari kita jalankan program kita.
Sekarang, kita dapat mengubah koordinat x dan y nanti. Mari kita perbarui koordinat x:
point = Point(10, 20)
point.x = 11
print(point.x)
Sekarang, koordinat x diperbarui ke nilai 11.
Latihan
Inilah latihan yang menarik untuk Anda.
Saya ingin Anda mendefinisikan tipe baru yang disebut seseorang. Objek "Orang" ini harus memiliki "name
” serta atribut “talk()
" metode.
Ini adalah tugas yang sederhana dan tidak akan memakan waktu lebih dari beberapa menit.
Solusi
Mulailah dengan mendefinisikan kelas "Orang" seperti ini:
class Person:
self.name = name
Kami akan mendefinisikan konstruktor nanti. Sekarang, kita dapat membuat objek "Orang". Sebut saja John
john = Person("John Smith")
print(john.name)
john.talk()
Sekarang, lanjutkan ke bagian pertama kode dan buat konstruktor.
def __init__(self, name):
Kode terakhir akan terlihat seperti ini:
Anda juga dapat menggunakan string yang diformat dan konsep lain dalam hubungannya dengan kelas dan konstruktor.
Warisan
Warisan adalah konsep lain yang terkait dengan kelas yang memungkinkan Anda menggunakan kembali kode.
Pertimbangkan potongan kode ini.
class Dog:
def walk(self):
print("walk")
Kami telah membuat kelas "Anjing" dengan metode "berjalan". Dalam metode ini, kami hanya mencetak pesan berjalan di terminal. Katakanlah, dalam program nyata, Ada 10 baris kode, bukan hanya satu baris di sini. Di masa depan, jika kelas lain diperlukan untuk memiliki metode "berjalan", kita harus mengulangi semua kode itu. Ini tidak ideal.
Dalam pemrograman, kami memiliki prinsip yang disebut KERING yang merupakan kependekan dari jangan ulangi sendiri. Katakanlah suatu saat di masa depan, kami menemukan masalah dengan metode "berjalan" kami dan jika kami telah mengulangi atau menduplikasi metode ini di banyak tempat lain, kami harus kembali dan memperbaiki masalah itu di setiap tempat kami telah menduplikasi ini kode. Jadi itu sebabnya dalam pemrograman kita tidak harus mendefinisikan sesuatu dua kali.
Ada berbagai pendekatan untuk mengatasi masalah ini, tetapi di sini kita akan mempelajari salah satu yang lebih mudah bagi pemula dan itu disebut pewarisan. Dalam hal ini, kita akan membuat kelas lain "mamalia" dan mendefinisikan atribut "berjalan" kita di kelas itu.
class Mammal:
def walk(self):
print("walk")
Setelah mendefinisikan kelas "Mamalia" kita, kita dapat menggunakan warisan untuk meneruskan atribut seperti ini:
Baik kelas anjing dan kucing mewarisi semua metode kelas yang didefinisikan di kelas induknya. Sekarang, kita dapat menambahkan metode khusus untuk anjing seperti ini:
class Dog:
def bark(self):
print("bark")
Bungkus!
Ini semua tentang kelas, konstruktor, dan penggunaan kembali kode di kelas dengan konsep pewarisan. Sekarang kita mendekati akhir dari seri kita. Pada titik ini, Anda harus dapat menghasilkan kode yang baik, mudah dibaca, dan ringkas dengan Python.
Konsep modul dan paket akan kita lihat pada kuliah selanjutnya.
Tinggalkan Balasan