SOAL:
?Buatlah sebuah program untuk menampilkan IPK yang diraih oleh seorang mahasiswa.
?Input:
- ?Jumlah matakuliah
- ?Kode Matkul: CS1423 -> angka terakhir menunjukkan sks
- ?Nama Matkul
- ?Nilai : A,B,C,D,E
?Output: (dalam bentuk tabel)
- ?Kode Matkul, Nama Matkul, SKS, Nilai
- ?IPK
JAWAB:
Dari studi kasus di atas, kita bisa mendesain diagram kelas seperti berikut. Antara kelas Matakuliah dan kelas DaftarMatakuliah memiliki hubungan komposisi karena kelas DaftarMatakuliah terdiri dari kelas Matakuliah.

Dari diagram di atas, kita mulai menulis program (coding) seperti berikut:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package matkul;
/**
*
* @author AryaDharmaadi
*/
public class Matakuliah {
private String kode_matkul;
private String nama_matkul;
private char nilai_index;
private int sks;
private int nilai_angka;
public Matakuliah(String kode_matkul, String nama_matkul, char nilai_index) {
this.kode_matkul = kode_matkul;
this.nama_matkul = nama_matkul;
this.nilai_index = nilai_index;
setSKS();
setNilaiAngka();
}
public void changeMatkul(String matakuliah){
matakuliah = matakuliah.concat("HAloo");
this.nama_matkul = matakuliah;
}
public String getKodeMatkul() {
return kode_matkul;
}
public String getNamaMatkul() {
return nama_matkul;
}
public char getNilaiIndex() {
return nilai_index;
}
public int getSks() {
return sks;
}
public int getNilaiAngka() {
return nilai_angka;
}
private void setSKS(){
sks = Integer.parseInt(String.valueOf(kode_matkul.charAt(kode_matkul.length()-1)));
}
private void setNilaiAngka(){
switch (nilai_index){
case 'A' : nilai_angka = 4;
break;
case 'B' : nilai_angka = 3;
break;
case 'C' : nilai_angka = 2;
break;
case 'D' : nilai_angka = 1;
break;
case 'E' : nilai_angka = 0;
break;
}
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package matkul;
/**
*
* @author AryaDharmaadi
*/
public class DaftarMatakuliah {
private Matakuliah[] list_matakuliah;
private int currentidx = 0;
private float ipk;
public DaftarMatakuliah(int jumlah_matakuliah){
list_matakuliah = new Matakuliah[jumlah_matakuliah];
}
public void addMatkul(Matakuliah m){
if (currentidx<list_matakuliah.length){
list_matakuliah[currentidx] = m;
currentidx++;
}
}
public void printMatkul(){
int nilai_mutu=0;
int total_sks=0;
System.out.println("-------------------------------------------------");
System.out.printf( "|KODE\t|MATAKULIAH\t\t |SKS\t|NILAI\t|\n");
System.out.println("-------------------------------------------------");
for (int i=0;i<list_matakuliah.length;i++){
System.out.printf( "|%s\t|%s\t |%s\t|%c\t|\n",
list_matakuliah[i].getKodeMatkul(),
list_matakuliah[i].getNamaMatkul(),
list_matakuliah[i].getSks(),
list_matakuliah[i].getNilaiIndex());
nilai_mutu = nilai_mutu + list_matakuliah[i].getNilaiAngka()*list_matakuliah[i].getSks();
total_sks = total_sks + list_matakuliah[i].getSks();
}
ipk = (float) nilai_mutu / total_sks;
}
public void printIPK(){
System.out.printf("Nilai IPK : %.2f\n",ipk);
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package matkul;
import java.util.Scanner;
/**
*
* @author AryaDharmaadi
*/
public class ProgramUtama {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
/* pada program ini, jumlah matakuliah diinput secara manual oleh programmer */
/* jika ingin user yang menginputkan, maka gunakan kelas Scanner */
/* dan simpan datanya di variabel jumlah_matakuliah */
int jumlah_matakuliah = 4;
DaftarMatakuliah daftar_matakuliah = new DaftarMatakuliah(jumlah_matakuliah);
// for (int i=0;i<jumlah_matakuliah;i++){
/* data matakuliah diinput oleh programmer. Jika ingin user yang menginputkan */
/* maka gunakan kelas Scanner dan simpan datanya di variabel */
Matakuliah m = new Matakuliah("CS2343", "Pemrograman Java", 'C');
daftar_matakuliah.addMatkul(m);
daftar_matakuliah.addMatkul(new Matakuliah("CS2331", "Praktikum Java ", 'B'));
daftar_matakuliah.addMatkul(new Matakuliah("CS2332", "Kewarganegaraan", 'C'));
daftar_matakuliah.addMatkul(new Matakuliah("CS2334", "Tugas Akhir (Project)", 'A'));
// }
daftar_matakuliah.printMatkul();
daftar_matakuliah.printIPK();
}
}
Ketika dijalankan, program di atas akan menampilkan hasil sebagai berikut:

Happy Coding ๐
Leave a Reply