Relasi Antar Kelas – Agregasi

Relasi antar kelas pada Pemrograman Berorientasi Objek (PBO) dikenal dengan nama Asosiasi, yang terdiri dari agregasi dan komposisi, selain dari pewarisan/inheritance yang merupakan ciri khas PBO. Postingan kali ini akan membahas agregasi, merupakan relasi/asosiasi yang dikenal dengan istilah “Is – a”. Perhatikan diagram kelas berikut ini:

Di sini kita akan mengintegrasikan konsep pewarisan (kelas Unisma memiliki anak Dosen, Mahasiswa, dan Satpam) dan agregasi (mahasiswa memiliki dosen pembimbing dari kelas Dosen). Atribut mahasiswa di sini antara lain:

  • Nama
  • Status
  • Jurusan
  • NPM
  • Pembimbing

Atribut nama, status, dan jurusan berasal dari kelas induk (Unisma) sementara NPM dan Pembimbing dari kelas Mahasiswa (kelas anak). Agregasi digambarkan dengan garis, terkadang ada panah disertai penjelasan relasi tersebut, misalnya “membimbing”. Berikut kelas Unisma.

class Unisma(object):
  def __init__(self,nama,status,jurusan):
      self.nama=nama
      self.status=status
      self.jurusan=jurusan
  def Salam(self):
      print(‘Selamat Hari Raya Idul Fitri 1442H’)
  def Info(self):
      print(“INFO”)
      print(“Nama    : “ + self.nama)
      print(“Jurusan : “ + self.jurusan)

Berikut ini kode kelas Dosen. Perhatikan kata kunci “super” yang berarti dosen merupakan pewarisan dari kelas Unisma. Jadi Dosen mewarisi atribut-atribut nama, status, dan jurusan, berikut juga metode/operasi Salam() dan Info().

class Dosen(Unisma):
  def __init__(self,nama,status,jurusan,nip):
      super().__init__(nama,status,jurusan)
      self.nip=nip
  def SalamDosen(self):
      print(‘Kami {}  {} mengucapkan’.format(
          self.status,self.jurusan))
      self.Salam()

Berikut ini kode kelas Mahasiswa dengan tambahan satu atribut “pembimbing” yang nantinya akan direlasikan dengan objek Dosen selaku pembimbing.

class Mahasiswa(Unisma):
  def __init__(self,nama,status,jurusan,npm,pembimbing):
      super().__init__(nama,status,jurusan)      
      self.npm=npm
      self.pembimbing=pembimbing
  def SalamSiswa(self):
      print(‘Hai teman-teman, kami {} {} mengucapkan’.format(
          self.status,self.jurusan))
      self.Salam()
  def GetInfo(self):
      print(“Pembimbing : “ + self.pembimbing.nama)

Jalankan dengan kode-kode berikut untuk mengeceknya.

x=Dosen(“Rahmadya”,“Dosen”,“Teknik Komputer”,123)
y=Mahasiswa(“Wahyu”,“Mahasiswa”,“Teknik Mesin”,1111123,x)
y.Info()
y.GetInfo()

Untuk lebih jelasnya silahkan lihat video penjelasannya berikut ini. Sekian, semoga bermanfaat.

Iklan

Satu respons untuk “Relasi Antar Kelas – Agregasi

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.