— Penjelasan Konsep OOP object oriented programming – OOP adalah singkatan object oriented programming yang merupakan perkembangan bahasa dari sebelumnya berbasis procedure yaitu bahasa C dan Pascal. Bahasa OOP merupakan bahasa mesin yang lebih manusia alias mendekati real sehari-hari. Bahasa pemgroraman yang murni OOP yaitu Java, untuk bahasa yang masih berbasis procedure / hibrid antara gabungan OOP dan procedure yaitu C++ dan Python.
Membangun aplikasi yang besar dengan konsep OOP akan membuat maintance menjadi lebih mudah karena OOP menawarkan 3 fitur utama yaitu Pemodulan/pengkapsulan (encapsulation); Penurunan/pewarisan (Inheritance); Polimorfisme (Polimorphism).
Pewarisan / inheritance
Contents
Dari konsep penurunan ini suatu kelas bisa diturunkan menjadi kelas baru yang masih mewarisi sifat-sifat kelas orangtuanya. Hal ini dapat dianalogikan dengan kelas manusia. Manusia merupakan turunan dari orang tuanya dan sifat-sifat orang tua diwarisi olehnya. Bisa ditarik kesimpulan bahwa semua kelas di dunia selalu memiliki hirarki yang menggambarkan silsilah kelas tersebut.
Pembungkusan/ encapsulation
Pemodulan adalah metode untuk menggabungkan data dengan fungsi. Dalam konsep ini data dan fungsi digabung menjadi satu kesatuan yaitu kelas. Konsep ini erat kaitannya dengan konsep penyembunyian informasi (information hiding). Untuk bahasa python tidak mengenal konsep private, public, protected layakanya konsep OOP di java
Polimorfisme (Polymorphism)
Polimorfisme berarti kelas-kelas yang berbeda tetapi berasal dari satu orang tua dapat mempunyai metode yang sama tetapi cara pelaksanaannya berbeda-beda. Atau dengan kata lain, suatu fungsi akan memiliki perilaku berbeda jika dilewatkan ke kelas yang berbeda-beda.
Contoh OOP
Contoh OOP dalam bahasa python sangat mudah, kalian bisa menggunakan konsep procedure atau OOP dalam menulis kode di Python tidak seperti bahasa R/Octave/Matlab yang masih berbasis procedure. Sesuai konvensi di pembahasan sebelumnnya bahwa nama class diawali oleh huruf kapital
class Siswa: pass
Class diatas tidak punya attribute dan methode/function apapun, untuk membuat instance object class, lakukan hal berikut
a = Siswa()
Artinya kita membuat instance object class OOP dari class Siswa(), objek yang dimaksud yaitu
<__main__.Siswa at 0x1b280692af0>
Tentu Siswa mempunyai attribut seperti NIM dan nama, maka dalam konsep OOP method yang pertama kali dipanggil ketika object tersebut dibuat disebut dengan method constructor. Kita perbaiki class OOP seperti berikut
class Siswa: def __init__(self): print('kamu panggil aku ya!') a = Siswa()
ketika dipanggil maka method __init__() akan langsung dipanggil
kamu panggil aku ya!
Konsep OOP object oriented programming maka setiap method harus diberikan kata kunci self yang berarti method tersebut miliknya dirinya class tersebut. Untuk memasukan argument sama seperti membuat method/function, contohnya sebagai berikut
class Siswa: def __init__(self,nama): print('kamu panggil aku ya!',nama) a = Siswa('bejo pamungkas')
hasilnya
kamu panggil aku ya! bejo pamungkas
Attribut Class
Attribut class disini berarti class tersebut mempunyai variabel yang bisa kita akses. Kita lengkapi sebagai berikut Perhatikan self.NIM dan self.nama
class Siswa(): def __init__(self,NIM,nama): self.NIM = NIM self.nama = nama def panggil(self): print('namanya: ',self.nama) a = Siswa(123,'bejo pamungkas') a.panggil()
hasilnya
namanya: bejo pamungkas
ataupun kita bisa akses attibut secara langsung pada objek a dengan operator titik.
a.nama Out[16]: 'bejo pamungkas'
Penerapan Inheritance
Penerapan konsep OOP bisa dimulai dari pembuatan class induk atau langsung tanpa class induk. Biasanya class induk isinya abstrak saja. Kita akan membuat class Siswa yang terdiri method constructor dengan argument input NIM dan nama
class Siswa(): def __init__(self,NIM,nama): self.NIM = NIM self.nama = nama def panggil(self): print('namanya: ',self.nama)
Langkah selanjutnya kita akan inheritance, kalian bisa melihat class SMP adakah anak dari class Siswa
class SMP(Siswa): def __init__(self,NIM,nama): Siswa.__init__(self,NIM,nama)
Sehingga ketika membuat objek class SMP dengan memanggil method panggil() itu bisa saja karena mewarisi sifat2 induknya
bejo = SMP(123,'bejo pamungkas') bejo.panggil()
hasilnya
namanya: bejo pamungkas
Penerapan Polimorfisme
dalam konsep OOP jika method induk tidak cocok menurut kita, maka bisa diubah koq implementasinya
class SMP(Siswa): def __init__(self,NIM,nama): Siswa.__init__(self,NIM,nama) def panggil(self): print('nama ganteng: ',self.nama) bejo = SMP(123,'bejo pamungkas') bejo.panggil()
hasilnya
nama ganteng: bejo pamungkas
OOP object oriented programming akan banyak dijumpai kalau kalian sering menggunakan library scikit-learn