SKA#6 OOP Instance Method | Java

This entry is part 12 of 12 in the series SK A Grade Mahasiswa

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..

Series Navigation<< SKA#5 OOP Instance Method | Python

You may also like...

Berikan komentar