SKA#5 OOP Instance Method | Python

Contoh kasus A artikel ke-5 untuk bahasa pemrograman Python

Perhatian, anda sebaiknya membaca terlebih dahulu materi pengantar untuk instance method  yang diulas pada artikel ini.

Jika pada contoh sebelumnya fungsi untuk menghitung nilai akhir dan konversi nilai akhir ke grade masih terpisah dari class NilaiMataKuliah, maka pada artikel kali ini keduanya menjadi bagian dari class tersebut. Fungsi yang berada pada satu class pada bahasa pemrograman dikenal dengan nama instance method.

Dengan penggabungan tersebut, kode menjadi lebih rapi karena logika perhitungan nilai dan grade menjadi tidak terpisahkan dengan atribut komponen penyusun elemen pembentuk nilai dan grade tersebut.

Kode Sebelumnya

def hitung_nilai_akhir(nilai_hadir,nilai_tugas,nilai_uts,nilai_uas):
    bobot_hadir = 0.15
    bobot_tugas = 0.25
    bobot_uts = 0.3
    bobot_uas = 0.3    
    nilai_akhir = bobot_hadir * nilai_hadir + bobot_tugas * nilai_tugas + bobot_uts * nilai_uts + bobot_uas * nilai_uas
    return nilai_akhir

def nilai_ke_grade(nilai_akhir):
    grade = 'E'
    if nilai_akhir >= 85:
        grade = 'A'
    elif nilai_akhir >= 70:
        grade = 'B'
    elif nilai_akhir >= 50:
        grade = 'C'
    elif nilai_akhir >= 40:
        grade = 'D'
    return grade

class NilaiMataKuliah:
    def __init__(self, nama, mata_kuliah, 
nilai_hadir, nilai_tugas, nilai_uts, nilai_uas):
        self.nama = nama
        self.mata_kuliah = mata_kuliah
        self.nilai_hadir = nilai_hadir
        self.nilai_tugas = nilai_tugas
        self.nilai_uts = nilai_uts
        self.nilai_uas = nilai_uas
    
obj = NilaiMataKuliah("Agus","Pemrograman Lanjut",80,75,85,70)
nilai_akhir = hitung_nilai_akhir(obj.nilai_hadir,obj.nilai_tugas,obj.nilai_uts,obj.nilai_uas)
grade = nilai_ke_grade(nilai_akhir)
print('{} pada mata kuliah {} mendapatkan nilai akhir = {}, grade= {}'.format(obj.nama,obj.mata_kuliah,nilai_akhir,grade))

Kode Setelah Penggabungan

class NilaiMataKuliah:
    def __init__(self, nama, mata_kuliah, nilai_hadir, nilai_tugas, nilai_uts, nilai_uas):
        self.nama = nama
        self.mata_kuliah = mata_kuliah
        self.nilai_hadir = nilai_hadir
        self.nilai_tugas = nilai_tugas
        self.nilai_uts = nilai_uts
        self.nilai_uas = nilai_uas
    
    def hitung_nilai_akhir(self):
        bobot_hadir = 0.15
        bobot_tugas = 0.25
        bobot_uts = 0.3
        bobot_uas = 0.3    
        nilai_akhir = bobot_hadir * self.nilai_hadir + bobot_tugas * self.nilai_tugas + bobot_uts * self.nilai_uts + bobot_uas * self.nilai_uas
        return nilai_akhir    

    def grade_nilai(self):
        nilai_akhir = self.hitung_nilai_akhir()
        grade = 'E'
        if nilai_akhir >= 85:
            grade = 'A'
        elif nilai_akhir >= 70:
            grade = 'B'
        elif nilai_akhir >= 50:
            grade = 'C'
        elif nilai_akhir >= 40:
            grade = 'D'
        return grade
    
obj = NilaiMataKuliah("Agus","Pemrograman Lanjut",80,75,85,70)
nilai_akhir = obj.hitung_nilai_akhir()
grade = obj.grade_nilai()

print('{} pada mata kuliah {} mendapatkan nilai akhir = {}, grade= {}'.format(obj.nama,obj.mata_kuliah,nilai_akhir,grade))

Perhatikan bahwa pada kode yang baru, struktur class menjadi lebih panjang karena dilengkapi dengan dua buah instance method baru. Sebaliknya dua fungsi yang tadinya berada di luar class sudah tidak diperlukan lagi.

Perhatikan pula bahwa perhitungan nilai dan grade dapat dilakukan langsung pada object seperti diperlihatkan pada baris 32 dan 33.

Series Navigation<< SKA#5 OOP Constructor | JavaSKA#6 OOP Instance Method | Java >>

You may also like...

Berikan komentar