Inheritance

Pewarisan merupakan konsep dalam pemrograman berbasis objek yang memungkinkan untuk membuat suatu kelas dengan didasarkan pada kelas yang sudah ada sehingga mewarisi semua method dan atributnya. Pewarisan merupakan suatu mekanisme yang memungkinkan seorang pemrogram menciptakan suatu kelas baru berdasarkan kelas yang sudah tersedia tetapi tidak perlu menuliskan kode dari nol. Dengan cara seperti ini,semua method dan atribut yang terdapat pada kelas induk diturunkan ke kelas turunannya. Namun kelas turunannya dapat menambah method baru atau atribut baru tersendiri. Satu kelas dapat diturunkan (inherit) ke kelas yang lain, dan bisa lebih dari satu.

  • General class --> parent \/ base class
  • Specialized class --> subclass

subclass dapat :

  • Menggunakan data\/methods dari base class
  • Extends the functionality of base classes
  • modify the behaviour of base classes

Manfaat dari inheritance

  • reuse of code
  • logi way of stucture our classes
  • code more clean and easy to debug

Menggunakan inheritance di python

class Parent: #base class
    pass

class Child(Parent): #subclass
    pass

contoh

class pet:
    def __init__(self):
        self.name = 'unknown'

    def sleep(self):
        print 'zzz'

class dog(pet):
    def bark(self):
        print 'wofff'
  • dog dan pet adalah sama-sama class
  • gog adalah subclass dari pet
  • Semua yang bisa dilakukan oleh pet juga bisa dilakukan oleh dog
  • tidak semua yang dilakukan dog bisa dilakukan oleh pet

Method Overriding

Sebuah method dikatakan Method overriding jika method dengan nama yang sama terdapat pada kelas induk dan kelas anaknya. Contoh :

class induk:
    def cobaOverride(self):
        print "Hi... saya method override di kelas induk"
class turunan(induk):
    def cobaOverride(self):
        print "Hi... saya method override di kelas anak"

# Deklarasi objek Kelas Induk
objekInduk = induk()
objekInduk.cobaOverride()

# Deklarasi objek kelas anak
objekAnak = turunan()
induk.cobaOverride(objekAnak)

Contoh program Inheritance dengan Overriding :

class Pegawai:
    def __init__(self, nama, gaji = 0):
        self.nama = nama
        self.gaji = gaji

    def tunjangan(self, persen):
        self.gaji = self.gaji + (self.gaji * persen)

    def kerja(self):
        print(self.nama, "Pekerjaannya")

    def __repr__(self):
        return "<Pegawai: (self.nama, self.gaji) nama = %s, gaji = %s>"

class Koki(Pegawai):
    def __init__(self,nama):
        Pegawai.__init__(self,nama,100000)

    def kerja(self):
        print(self.nama, "Membuat Makanan")

class Pelayan(Pegawai):
    def __init__(self,nama):
        Pegawai.__init__(self,nama, 50000)

    def kerja(self):
        print(self.nama, "Melayani Costumer")

class PizzaRobot(Koki):
    def __init__(self, nama):
        Koki.__init__(self, nama)
    def kerja(self):
        print(self.nama, "Membuat Pizza")

# Program Utama
if __name__ == "__main__":
    agus = PizzaRobot("Agus")
    print(agus)
    agus.kerja()
    agus.tunjangan(0.20)
    print(agus)
    print

    for kelas in Pegawai, Koki, Pelayan, PizzaRobot:
        objek = kelas(kelas.__name__)
        objek.kerja()

Output:

<Pegawai: nama = Agus, gaji = 100000>
('Agus', 'Membuat Pizza')
<Pegawai: nama = Agus, gaji = 120000.0>
('Pegawai', 'Pekerjaannya')
('Koki', 'Membuat Makanan')
('Pelayan', 'Melayani Costumer')
('PizzaRobot', 'Membuat Pizza')

results matching ""

    No results matching ""