SKA#6 OOP Instance Method | Java
- SKA#0 Pengantar
- SKA#1 Dasar | Java
- SKA#1 Dasar | Python
- SKA#2 Method | Java
- SKA#2 Function | Python
- SKA#3 Array | Java
- SKA#3 List | Python
- SKA#4 OOP Class sederhana | Java
- SKA#4 OOP Class sederhana | Python
- SKA#5 OOP Constructor | Java
- SKA#5 OOP Instance Method | Python
- SKA#6 OOP Instance Method | Java
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 class sebelum penggabungan
package ska.gradecalc; public class NilaiMataKuliah { String nama; String namaMatKul; double nilaiHadir; double nilaiTugas; double nilaiUTS; double nilaiUAS; public NilaiMataKuliah(String nama, String namaMatKul, double nilaiHadir, double nilaiTugas, double nilaiUTS, double nilaiUAS) { super(); this.nama = nama; this.namaMatKul = namaMatKul; this.nilaiHadir = nilaiHadir; this.nilaiTugas = nilaiTugas; this.nilaiUTS = nilaiUTS; this.nilaiUAS = nilaiUAS; } }
Kode pada method class HitungGrade lama
package ska.gradecalc; public class HitungGrade { public static void main(String[] args) { NilaiMataKuliah obj; obj = new NilaiMataKuliah("Agus","Pemrograman Lanjut",80,75,83,70); double nilaiAkhir = hitungNilaiAkhir(obj.nilaiHadir, obj.nilaiTugas, obj.nilaiUTS, obj.nilaiUAS); String gradeAgus = nilaiKeGrade(nilaiAkhir); String teks = obj.nama +" pada mata kuliah "+ obj.namaMatKul +" memperoleh nilai akhir: "+nilaiAkhir+ ", dengan grade:"+ gradeAgus; System.out.println(teks); } static double hitungNilaiAkhir(double nilaiHadir, double nilaiTugas, double nilaiUTS, double nilaiUAS) { double bobotHadir = 0.15; double bobotTugas = 0.25; double bobotUTS = 0.30; double bobotUAS = 0.30; double nilaiAkhir = bobotHadir * nilaiHadir + bobotTugas * nilaiTugas + bobotUTS * nilaiUTS + bobotUAS * nilaiUAS; return nilaiAkhir; } static String nilaiKeGrade(double nilaiAkhir) { String grade; if (nilaiAkhir >= 85) { grade = "A"; } else if (nilaiAkhir >= 70) { grade = "B"; } else if (nilaiAkhir >= 50) { grade = "C"; } else if (nilaiAkhir >= 40) { grade = "D"; } else { grade = "E"; } return grade; } }
Kode class setelah penggabungan
package ska.gradecalc; public class NilaiMataKuliah { String nama; String namaMatKul; double nilaiHadir; double nilaiTugas; double nilaiUTS; double nilaiUAS; public NilaiMataKuliah(String nama, String namaMatKul, double nilaiHadir, double nilaiTugas, double nilaiUTS, double nilaiUAS) { super(); this.nama = nama; this.namaMatKul = namaMatKul; this.nilaiHadir = nilaiHadir; this.nilaiTugas = nilaiTugas; this.nilaiUTS = nilaiUTS; this.nilaiUAS = nilaiUAS; } double hitungNilaiAkhir() { double bobotHadir = 0.15; double bobotTugas = 0.25; double bobotUTS = 0.30; double bobotUAS = 0.30; double nilaiAkhir = bobotHadir * nilaiHadir + bobotTugas * nilaiTugas + bobotUTS * nilaiUTS + bobotUAS * nilaiUAS; return nilaiAkhir; } String gradeAkhir() { double nilaiAkhir = hitungNilaiAkhir(); String grade; if (nilaiAkhir >= 85) { grade = "A"; } else if (nilaiAkhir >= 70) { grade = "B"; } else if (nilaiAkhir >= 50) { grade = "C"; } else if (nilaiAkhir >= 40) { grade = "D"; } else { grade = "E"; } return grade; } }
Kode pada method class HitungGrade baru
package ska.gradecalc; public class HitungGrade { public static void main(String[] args) { NilaiMataKuliah obj; obj = new NilaiMataKuliah("Agus","Pemrograman Lanjut",80,75,83,70); double nilaiAkhir = obj.hitungNilaiAkhir(); String gradeAgus = obj.gradeAkhir(); String teks = obj.nama +" pada mata kuliah "+ obj.namaMatKul +" memperoleh nilai akhir: "+nilaiAkhir+ ", dengan grade:"+ gradeAgus; System.out.println(teks); } }
Perhatikan bahwa pada kode yang baru, struktur class menjadi lebih panjang karena dilengkapi dengan dua buah instance method baru. Sebaliknya dua static method yang tadinya berada di class HitungGrade sudah tidak diperlukan lagi . Logic yang tadinya berada di luar class NilaiMataKuliah, sekarang terintegrasi pada setiap object yang dibuat dari class tersebut..