Praktikum KPLBO Relasi Objek I
Oleh : Ade Sukendar [
[email protected]]
Laboratorium Jurusan Teknik Informatika Universitas Pasundan 2014
Latihan 1 :
Latihan praktikum ini bertujuan untuk memberikan contoh penggunaan relasi objek satu ke satu dengan objek yang lain (One to One). Latihan ini melibatkan kelas Mahasiswa dan Transkrip. Kedua kelas tersebut akan dipanggil di kelas OneToOneFromMahasiswa dan OneToOneFromTranskrip.
Berikut kelas diagram dari penjelasan diatas seperti di bawah ini :
Buatlah kelas Transkrip seperti di bawah ini : Mahasiswa.java package p7.a; /** * * @author Ade Sukendar * @version 1.3 * @since 22/2/2014 * */ public class Mahasiswa { private String nrp; private String nama; private Transkrip transkrip; /* * Konstruktor */ public Mahasiswa() {} public Mahasiswa(String nrp, String nama) { this.nrp = nrp; this.nama = nama; } public Mahasiswa(String nrp, String nama, Transkrip transkrip) { this(nrp, nama); this.setTranskrip(transkrip); }
2
/* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ /** * Method untuk menampilkan atribut Mahasiswa dan Transkrip * dalam perspektif kelas Mahasiswa * * @return String */ public String display() { StringBuffer sb = new StringBuffer(); sb.append("== Perspektif Kelas Mahasiswa ==\n"); sb.append("NRP : "+ this.getNrp()+ "\n"); sb.append("Nama : "+ this.getNama()+ "\n"); sb.append("IPK : "+ getTranskrip().getIpk()+ "\n"); sb.append("Keterangan : "+ getTranskrip().getKeterangan()+ "\n"); return sb.toString(); } }
Buatlah kelas MataKuliah seperti di bawah ini : Transkrip.java package p7.a; /** * * @author Ade Sukendar * @version 1.2 * @since 1/3/2014 * */ public class Transkrip { private Float ipk; private Mahasiswa mahasiswa; /* * Konstruktor */ public Transkrip() { this(0.0f, null); } public Transkrip(Float ipk) { this.ipk = ipk; } public Transkrip(Float ipk, Mahasiswa mahasiswa) { this(ipk); this.mahasiswa = mahasiswa; } /** * Prekondisi : range ipk antara 0-4 * Postkondisi : keterangan dari nilai ipk * * @return */ public String getKeterangan() { if (ipk <= 4 && ipk > 3.5) return "Cumlaude"; else if (ipk > 3.0) return "Excellent"; else if (ipk > 2.5) return "Good"; else if (ipk > 0)
3
return "Not Good"; return ""; } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ /** * Method untuk menampilkan atribut Mahasiswa dan Transkrip * dalam perspektif kelas Transkrip * * @return String */ public String display() { StringBuffer sb = new StringBuffer(); sb.append("== Perspektif Kelas Transkrip ==\n"); sb.append("NRP : "+ mahasiswa.getNrp()+ "\n"); sb.append("Nama : "+ mahasiswa.getNama()+ "\n"); sb.append("IPK : "+ this.getIpk()+ "\n"); sb.append("Keterangan : "+ this.getKeterangan()+ "\n"); return sb.toString(); } }
Buatlah kelas OneToOneFromMahasiswa seperti di bawah ini : OneToOneFromMahasiswa.java package p7.a; public class OneToOneFromMahasiswa { public static void main(String[] args) { Transkrip transkrip = new Transkrip(); transkrip.setIpk(3.4f); // @ konstruktor 1 Mahasiswa mhs = new Mahasiswa(); mhs.setNrp("113040100"); mhs.setNama("Iwan"); mhs.setTranskrip(transkrip); System.out.println(mhs.display()); // @ konstruktor 2 Mahasiswa mhs = new Mahasiswa("113040100", "Iwan"); mhs.setTranskrip(transkrip);
// // // //
System.out.println(mhs.display()); // @ konstruktor 3 Mahasiswa mhs = new Mahasiswa("113040100", "Iwan", transkrip);
// // //
System.out.println(mhs.display()); }
}
Running, kemudian amati yang terjadi !!!
4
Latihan 2 :
Latihan ke dua adalah melanjutkan dari latihan yang pertama dengan menambahkan kode program untuk kelas OneToOneFromMahasiswa. Kelas tersebut ditambahkan kode program sesuai dengan spesifikasi tersebut : - Tambahkan inputan dari keyboard untuk identitas mahasiswa dan nilai IPK - Ouput program seperti di bawah ini : NRP : 123040100 Nama : Asep Supriatna IPK : 3.7 Keterangan : Cumlaude
Latihan 3 :
Latihan ke tiga sama seperti latihan ke dua yaitu melanjutkan dari latihan yang pertama. Buatlah kelas OneToOneFromTranskrip untuk menampilkan keterangan yang sama terkait identitas mahasiswa dan transkrip di kelas OneToOneFromMahasiswa. Namun dalam kasus ini yang digunakan adalah dalam perspektif kelas Transkrip.
Latihan 4 :
Latihan ke emapt melanjutkan dari latihan yang pertama dengan tujuan untuk menunjukkan contoh relasi satu ke banyak atau one to many. Latihan ini akan menambahkan kelas MataKuliah yang akan mempunyai relasi dengan kelas Transkrip. Satu transkrip akan mempunyai beberapa matakuliah yang telah di ambil mahasiswa. Berikut diagram kelas dari contoh one to many.
5
Ubahlah kelas Transkrip seperti di bawah ini : Transkrip.java package p7.b; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * * @author Ade Sukendar * @version 1.2 * @since 1/3/2014 * */ public class Transkrip { private Float ipk; private Mahasiswa mahasiswa; private Collection<MataKuliah> listMataKuliah = new ArrayList<>(); /* * Konstruktor */ public Transkrip() { this(0.0f, null); } public Transkrip(Float ipk) { this.ipk = ipk; } public Transkrip(Float ipk, Mahasiswa mahasiswa) { this(ipk); this.mahasiswa = mahasiswa; } /** * Method ini digunakan untuk menampilkan keterangan ipk * berdasarkan nilai ipk * * Prekondisi : range ipk antara 0-4 * Postkondisi : keterangan dari nilai ipk * * @return keterangan ipk */ public String getKeterangan() { if (ipk <= 4 && ipk > 3.5) return "Cumlaude"; else if (ipk > 3.0) return "Excellent"; else if (ipk > 2.5) return "Good"; else if (ipk > 0) return "Not Good"; return ""; } /** * Method ini digunakan untuk menghitung ipk * berdasarkan jumlah matakuliah * * @return nilai ipk */ public void hitungIPK() { ipk = (float) hitungTotalIndeksAndSKS()/hitungTotalSKS(); } /** * Method ini digunakan untuk menghitung total jumlah indeks dan sks * berdasarkan jumlah matakuliah *
6
* @return nilai ipk */ private int hitungTotalIndeksAndSKS() { int total = 0; Iterator<MataKuliah> iterator = listMataKuliah.iterator(); while (iterator.hasNext()) { MataKuliah mk = (MataKuliah) iterator.next(); total = total + (mk.getSks()* mk.getNilaiIndeks()); } return total; } /** * Method ini digunakan untuk menghitung total sks * berdasarkan jumlah matakuliah * * @return nilai ipk */ private int hitungTotalSKS() { int total = 0; Iterator<MataKuliah> iterator = listMataKuliah.iterator(); while (iterator.hasNext()) { MataKuliah mk = (MataKuliah) iterator.next(); total = total + mk.getSks(); } return total; } public void addMataKuliah(MataKuliah matakuliah) { listMataKuliah.add(matakuliah); } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ /** * Method untuk menampilkan atribut Mahasiswa dan Transkrip * dalam perspektif kelas Transkrip * * @return String */ public String display() { StringBuffer sb = new StringBuffer(); sb.append("== Perspektif Kelas Transkrip ==\n"); sb.append("NRP : "+ mahasiswa.getNrp()+ "\n"); sb.append("Nama : "+ mahasiswa.getNama()+ "\n"); sb.append("IPK : "+ this.getIpk()+ "\n"); sb.append("Keterangan : "+ this.getKeterangan()+ "\n"); return sb.toString(); } }
Buatlah kelas MataKuliah seperti di bawah ini : MataKuliah.java package p7.b; /** * * @author Ade Sukendar * @version 1.2 * @since 22/2/2014 * */ public class MataKuliah { private String kode;
7
private String nama; private int sks; private char indeksNilai; /* * Konstruktor */ public MataKuliah() {} public MataKuliah(String kode, String nama, int sks, char indeksNilaiNilai) { setKode(kode); setNama(nama); setSks(sks); setIndeksNilai(indeksNilaiNilai); } /** * Method ini berfungsi untuk mendapatkan nilai indeks * dari indeks nilai matakuliah * * @return nilai indeks */ public int getNilaiIndeks() { if (indeksNilai == 'A') { return 4; } else if (indeksNilai == 'B') { return 3; } else if (indeksNilai == 'C') { return 2; } else if (indeksNilai == 'D') { return 1; } else if (indeksNilai == 'E') { return 0; } return -1; } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ }
Buatlah kelas OneToManyFromTranskrip seperti di bawah ini : OneToManyFromTranskrip.java package p7.b; public class OneToManyFromTranskrip { public static void main(String[] args) { // Mahasiswa Mahasiswa mhs = new Mahasiswa("113040100", "Iwan"); // Transkrip Transkrip transkrip = new Transkrip(); transkrip.setMahasiswa(mhs); // MataKuliah MataKuliah mk1 = new MataKuliah("1", "KPLBO", 3, 'A'); MataKuliah mk2 = new MataKuliah("2", "Alpro", 3, 'A'); MataKuliah mk3 = new MataKuliah("3", "Vispro", 3, 'B'); transkrip.addMataKuliah(mk1);
8
transkrip.addMataKuliah(mk2); transkrip.addMataKuliah(mk3); //hitung ipk transkrip.hitungIPK(); System.out.println(transkrip.display()); } }
Running, kemudian amati yang terjadi !!! Tunjukkan kode mana yang menyatakan bahwa relasinya antara Transkrip dan Matakuliah adalah one to many ! Tambahkan daftar matakuliah sesuai tabel dibawah ini : 4 RKPPL 3 B 5 PSBK 3 C Running kembali, kemudian amati yang terjadi !!!
9