Cara menggunakan belajar oop python

Kita sebelumnya sudah melihat dua paradigma pemrograman, yaitu imperative (menggunakan statement, perulangan, dan fungsi-fungsi) dan fungsional (menggunakan fungsi murni, fungsi orde tinggi, dan rekursi).

Paradigma lain yang sangat populer adalah Object-Oriented Programming (OOP). Object dibuat menggunakan class, dimana sebenarnya adalah titik fokus dari OOP. Class mendeskripsikan object akan menjadi apa, tetapi terpisah dari object itu sendiri. Dengan kata lain, sebuah class dapat dideskripsikan sebagai sebuah blueprint, deskripsi, atau definisi dari object. Kita dapat menggunakan class yang sama sebagai sebuah blueprint untuk membuat object-object yang berbeda.

Class-class dibuat menggunakan keyword class and sebuah blok indentasi, dimana mengandung method-method milik class.

class Hewan:
     def __init__(self, warna, kaki):
         self.warna = warna
         self.kaki = kaki

sapi = Hewan("putih", 4)
ayam = Hewan("merah", 2)

Hewan adalah sebuah class, dimana dua atribut nya adalah warna dan kaki. Kemudian class digunakan untuk membuat dua object, yaitu sapi dan ayam.

__init__

Metode __init__ adalah method paling penting di dalam sebuah class. Method ini dipanggil ketika sebuah instance (object) pada class dibuat, menggunakan nama class sebagai sebuah fungsi.

Semua method harus memiliki self sebagai parameter pertama, meskipun tidak disahkan secara eksplisit. Python menambahkan argumen self ke dalam list, jadi kita tidak perlu mengikutsertakannya ketika kita memanggil method. Dalam sebuah definisi method, self mengacu pada instance yang memanggil method.

Instance pada class memiliki atribut. Contohnya di bawah ini instance Hewan memiliki atribut warna dan kaki. Atribut tersebut dapat diakses dengan memberikan dot (.) dan nama atribut setelah instance. Dalam sebuah __init__ method, self.attribute dapat digunakan untuk menentuan nilai awal dari atribut.

class Hewan:
     def init(self, warna, kaki):
         self.warna = warna
         self.kaki = kaki

sapi = Hewan("putih", 4)

print(sapi.warna)
=====>
putih
=====>

Pada contoh di atas, method __init__ mengambil dua argumen dan menetapkannya ke atribut. Method __init__ disebut dengan constructor.

Method

Class dapat memiliki method lain atau method tambahan untuk ditambahkan di dalamnya. Ingat bahwa semua method harus memiliki parameter self. Method tersebut diakses menggunakan cara yang sama yaitu menggunakan dot (.).

class Hewan:
     def __init__(self, warna, kaki):
         self.warna = warna
         self.kaki = kaki
 
      def bergerak(self):
         print("Jalan")
sapi = Hewan("putih", 4)

print(sapi.kaki)
sapi.bergerak()
=====>
 4
 Jalan
=====> 

Class juga dapat memiliki atribut class, dibuat dengan variabel pada body di dalam class. Atribut class dapat diakses melalui instance/object atau class nya sendiri.

class Hewan:
     kaki = 4
 
def __init__(self, nama, warna):
     self.nama = nama     
    self.warna = warna
 
kucing = Hewan("catty", "putih")

print(kucing.kaki)
print(Hewan.kaki)
=====>
 4
 4 
=====>

Atribut class dibagi atau digunakan oleh semua instance.

AttributeError

Mengakses atribut yang tidak terdefinisi pada sebuah instance akan menyebabkan error AttributeError. Error ini juga akan muncul ketika mengakses method yang tidak terdefinisi.

Modul ini akan mengajarkan cara memodelkan masalah menggunakan konsep pemrograman berorientasi objek (OOP). Anda juga akan mempelajari cara mengubah model Anda menjadi kode kerja menggunakan konsep OOP seperti kelas, atribut, dan metode.

Terdapat dua paradigma dalam programming yang paling terkenal, yaitu Struktural Programming dan Object Oriented Programming. Paradigma disini adalah dasar/cara berpikir saat seseorang melakukan pemograman. Struktural adalah paradigma dimana program/kode yang kita buat berjalan sesuai dengan urutan yang sudah ditentukan, pada umumnya menggunakan if-else looping. Ini akan menjadi cukup memusingkan saat kita akan membuat sebuah program yang kompleks. Sedangkan, Object Oriented Programming (OOP) adalah suatu paradigma dimana kode kita dikumpulkan/dimisalkan menjadi sebuah objek. Contoh paling mudah adalah jika kita ingin membuat sebuah program tentang rumah, maka rumah itu kita misalkan objek yang tentu saja objek tersebut memiliki karakteristik tersendiri, misalkan warna, lokasi, dan harga. Saat kita akan butuh data karakteristik(instance) yang dibutuhkan maka kita tinggal melakukan pemanggilan.
Cara menggunakan belajar oop python

sumber: https://www.geeksforgeeks.org/

Python sendiri merupakan bahasa pemograman yang dapat menggunakan konsep OOP tapi juga dapat mengimplementasikan konsep Structural Programming.

Istilah – Istilah Dalam OOP

Beberapa istilah utama yang terdapat pada OOP diantaranya :
  • Class – Kelas adalah cetak biru atau prototipe dari objek dimana kita mendefinisikan atribut dari suatu objek. Atribut ini terdiri dari data member (variabel) dan fungsi (metode).
  • Class Variable – Variabel kelas adalah variabel yang dishare atau dibagi oleh semua instance (turunan) dari kelas. Variabel kelas didefinisikan di dalam kelas, tapi di luar metode-metode yang ada dalam kelas tersebut.
  • Instance – Instance adalah istilah lain dari objek suatu kelas. Sebuah objek yang dibuat dari prototipe kelas Lingkaran misalnya disebut sebagai instance dari kelas tersebut.
  • Object – Objek adalah instansiasi atau perwujudan dari sebuah kelas. Bila kelas adalah prototipenya, dan objek adalah barang jadinya.
  • Instance/Object Variable – Variabel instance adalah variabel yang didefinisikan di dalam suatu metode dan hanya menjadi milik dari instance kelas.
  • Data member – Data member adalah variabel yang menyimpan data yang berhubungan dengan kelas dan objeknya
  • Overloading Fungsi – Overloading fungsi adalah fungsi yang memiliki nama yang sama di dalam kelas, tapi dengan jumlah dan tipe argumen yang berbeda sehingga dapat melakukan beberapa hal yang berbeda.
  • Overloading operator – Overloading operator adalah pembuatan beberapa fungsi atau kegunaan untuk suatu operator. Misalnya operator + dibuat tidak hanya untuk penjumlahan, tapi juga untuk fungsi lain.
  • Pewarisan/Inheritansi – Inheritansi adalah pewarisan karakteristik sebuah kelas ke kelas lain yang menjadi turunannya.
  • Instantiation  – Instansiasi adalah pembuatan instance/objek dari suatu kelas.
  • Metode – Metode adalah fungsi yang didefinisikan di dalam suatu kelas.

Mendefinisikan Class

Mendefiniskan class sangat mudah, secara sederhana dapat kita tuliskan seperti.
class mobil:
    pass
Seperti definisinya, class diatas akan menjadi cetak biru dari objek/instance yang akan masukkan pada tahap selanjutnya. Lalu kita inisiasikan objek dari class yang telah kita buat.
mobil1 = mobil()
mobil2 = mobil()
Kode diatas artinya objek mobil1 dan mobil2 memakai class mobil sebagai cetak biru untuk objek tersebut. Artinya semua variabel, atau metode nantinya akan mengikuti class mobil. Sekarang kita akan masukan atribut/variabel dalam objek yang kita buat. kita akan masukkan jenis dan warna dari objek tersebut.
mobil1.jenis = "Sedan"
mobil1.warna = "Merah"

mobil2.jenis = "SUV"
mobil2.warna = "Hitam"
Jika kita menggunakan metode print() untuk melihat atribut dan objek yang telah kita buat maka kita akan mendapatkan
print(mobil1)
print(mobil1.jenis)
print(mobil1.__dict__)

#<__main__.mobil object at 0x011D36D0>
#Sedan
#{'jenis': 'Sedan', 'warna': 'Merah'}
Pada hasil pertama kita diperlihatkan bahwa mobil satu merupakan sebuah objek. Pada hasil kedua kita diperlihatkan bahwa atribut jenis pada objek mobil1 bernilai “sedan”. Pada hasil terakhir kita ingin melihat atribut apa saja yang dimiliki oleh objek tersebut.

Mendefinisikan __init__ Method

Metode pertama yang akan kita kenal adalah metode init. Seperti namanya Metode ini digunakan sebagai inisiasi class yang kita jalankan jadi saat kita memanggil class tersebut sebagai sebuah objek maka metode ini akan dijalankan terlebih dahulu.
class mobil:
    def __init__(self):
        print("ini mobil saya")

mobil1 = mobil()

#ini mobil saya
Seperti yang terlihat, saat kita menginisiasi pembuatan objek mobil1 maka dengan otomatis print(“ini mobil saya”) terjalankan. Jadi apa gunanya hal ini? dengan melakukan ini maka kita bisa lebih menyederhanakan kode yang kita tulis sehingga lebih mudah dibaca. Kita akan coba masukkan atribut jenis dan warna pada fungsi init tersebut.
class mobil:
    def __init__(self, jenis, warna):
        self.jenis = jenis
        self.warna = warna

mobil1 = mobil('Sedan', 'Merah')
mobil2 = mobil('SUV', 'Hitam')
Dan jika kita print maka akan menghasilkan,
print(mobil1.__dict__)
print(mobil2.__dict__)

#{'jenis': 'Sedan', 'warna': 'Merah'}
#{'jenis': 'SUV', 'warna': 'Hitam'}
Kesederhaan ini akan lebih terlihat lagi jika apa yang kita lakukan menjadi lebih rumit sehingga membutuhkan banyak sekali atribut maka kita hanya membutuhkan satu baris saja untuk menginisiasi sebuah objek.
Cara menggunakan belajar oop python

https://laabidigh.medium.com/class-and-instance-attributes-e8b02f40d753

Variabel Kelas & Variabel Objek

Atribut yang kita buat sebelumnya adalah atribut objek, apa maksudnya? Maksudnya adalah atribut tersebut hanya menjadi miliki objek yang didefinisikan. Misal untuk mobil1 jenisnya adalah sedan sedangkan untuk mobil2 jenisnya adalah SUV. Atribut kelas adalah atribut yang menjadi milik si class tersebut artinya nilainya akan sama untuk semua metode di dalam class tersebut.
class mobil:
    benda = 'Mobil'

    def __init__(self, jenis, warna):
        self.jenis = jenis
        self.warna = warna

mobil1 = mobil('Sedan', 'Merah')
mobil2 = mobil('SUV', 'Hitam')

print(mobil1.benda)
print(mobil2.benda)

#Mobil
#Mobil

Membuat Object Method

Sebuah class memliki metode didalamnya yang dapat kita variasikan fungsinya tidak seperti metode init. Kalau kita menggunakan pemisalan sederhana, Jika objek yang kita maksudkan adalah kalkulator maka yang termasuk ke dalam metode yang dimaksud adalah operasi tambah, kurang, bagi, dan kali. Sekarang kita akan mencoba membuat metode pada class mobil sebelumnya.
class mobil:

    def __init__(self, jenis, warna, tangki):
        self.jenis = jenis
        self.warna = warna
        self.tangki = tangki
    
    def data_mobil(self):
        print("mobil saya berjenis",self.jenis,"dan memiliki warna",self.warna,"serta memiliki ukuran tangki",self.tangki,"L")
Lalu kita lakukan inisiasi dan pemanggilan maka akan menghasilkan,
mobil1 = mobil('Sedan', 'Merah', 40)

mobil1.data_mobil()

#mobil saya berjenis Sedan dan memiliki warna Merah serta memiliki ukuran tangki 40 L
Metode diatas adalah contoh metode yang tanpa argumen, sehingga saat melakukan pemanggilan kita tidak perlu mengisikan argumen ke dalam kurung. Selain metode tersebut, ada juga metode dengan argumen yang akan kita contohkan dengan membuat sebuah fungsi untuk menghitung sisa tangki dari jarak tempuhnya. Sekarang mari kita buat atribut baru, yaitu efisiensi. Efisiensi disini adalah berapa liter bensin yang hilang untuk 10 km.
mobil1 = mobil()
mobil2 = mobil()
0Lalu kita buat fungsi untuk menghitung sisa bensin pada tangki
mobil1 = mobil()
mobil2 = mobil()
1Lalu kita panggil metode tersebut, karena pada fungsinya kita dapat melihat bahwa dibutuhkan argumen jarak maka pemanggilan metodenya akan sedikit berbeda dengan memasukkan satu argumen jarak dalam kilometer.
mobil1 = mobil()
mobil2 = mobil()
2Sampai sini kalian sudah bisa mengenal OOP dan memuat class sederhana. dengan memanfaatkan atribut/variabel dan metode/fungsi yang sesuai. Kita akan mencoba untuk mengaplikasikan hal tersebut pada materi-materi kita kedepannya.


Sifat – Sifat OOP pada Python

Inheritance

Inheritance adalah sifat penurunan, yaitu menurunkan sifat yang dimiliki kelas utama (parent) class kepada kelas yang diturunkan (childc class). Sekarang mari kita coba menerapkan inheritance Kita persiapkan dulu kelas parent yang ingin kita gunakan.
mobil1 = mobil()
mobil2 = mobil()
3Sekarang kita persiapkan child class
mobil1 = mobil()
mobil2 = mobil()
4Nah hal menarik dapat terjadi, walau class SUV tidak memiliki metode print_warna dan print_merk secara langsung, akan tetapi karena metode tersebut dapat kita panggil karena class SUV mendapatkannya dari class mobil.
mobil1 = mobil()
mobil2 = mobil()
5Hasilnya
mobil1 = mobil()
mobil2 = mobil()
6

Encapsulation

Suatu objek pada python dapat kita batasi akses yang dimiliki terhadap objek tersebut dengan menggunakan encapsulation. caranya adalah dengan menggunakan dua garis bawah (__) sebelum nama variabel.
mobil1 = mobil()
mobil2 = mobil()
7Hasilnya
mobil1 = mobil()
mobil2 = mobil()
8Saat kita menggunakan encapsulation pada variabelnya,
mobil1 = mobil()
mobil2 = mobil()
9Hasilnya
mobil1.jenis = "Sedan"
mobil1.warna = "Merah"

mobil2.jenis = "SUV"
mobil2.warna = "Hitam"
0

Polymorphism

Seperti pada namanya, polymophism adalah kemampuan suatu metode memiliki banyak bentuk. kita persiapkan banyak bentuknya terlebih dahulu dalam bentuk class
mobil1.jenis = "Sedan"
mobil1.warna = "Merah"

mobil2.jenis = "SUV"
mobil2.warna = "Hitam"
1Lalu kita persiapkan metode utamanya,
mobil1.jenis = "Sedan"
mobil1.warna = "Merah"

mobil2.jenis = "SUV"
mobil2.warna = "Hitam"
2Sekarang mari kita inisiasi objectnya,
mobil1.jenis = "Sedan"
mobil1.warna = "Merah"

mobil2.jenis = "SUV"
mobil2.warna = "Hitam"
3Setelah kita mari kita masukkan ke dalam fungsi kita sebelumnya,
mobil1.jenis = "Sedan"
mobil1.warna = "Merah"

mobil2.jenis = "SUV"
mobil2.warna = "Hitam"
4Hasilnya

mobil1.jenis = "Sedan" mobil1.warna = "Merah" mobil2.jenis = "SUV" mobil2.warna = "Hitam"5

Daftar Pustaka:

Instance class and Static methods – realpython

Apa itu OOP pada Python?

OOP merupakan sebuah cara untuk membangun sebuah aplikasi dengan memandang sebagai presentasi objek-objek yang saling mendukung serta berinteraksi dari satu objek ke objek yang lainnya, dan dapat dikatakan code program akan terbentuk berkelompok berdasarkan objek. Pemrograman Berorientasi Objek akan membagi-bagi code ...

OOP menggunakan bahasa apa?

Contoh bahasa pemrograman berorientasi objek antara lain Java, PHP, Python, dan Ruby.

Bagaimana OOP bekerja?

Object oriented programming atau OOP adalah konsep pemrograman yang berorientasi pada objek atau data untuk mengatur sebuah desain program. Secara garis besar, cara kerja OOP yaitu membangun program dari gabungan objek-objek yang saling berhubungan dan disusun menjadi satu kesatuan.

Apa Kegunaan OOP?

OOP adalah metode yang memudahkan kalian merubah implementasi suatu objek tanpa harus mengubah data dan metode di dalam objek tersebut. (Encapsulation). OOP memudahkan kalian dalam membentuk metode umum yang dapat di gunakan untuk objek-objek lainnya tanpa harus menulisnya berulang-ulang.