Praktikum KPLBO Interaksi Objek II
Oleh : Ade Sukendar [
[email protected]]
Laboratorium Jurusan Teknik Informatika Universitas Pasundan 2014
Latihan 1 :
Latihan pertama ini akan melibatkan empat kelas yaitu kelas Mahasiswa, Matakuliah, Nilai dan kelas untuk eksekusi MatakuliahMain. Latihan ini bertujuan untuk memperlihatkan perhitungan nilai matakuliah yang akan diakses di kelas Mahasiswa. Kelas MatakuliahMain akan menampilkan deskripsi nilai dari kelas Mahasiswa. Relasi antar kelas sebagai berikut : - Kelas Mahasiswa mempunyai akses ke kelas Matakuliah (tidak sebaliknya) - Kelas Matakuliah mempunyai akses ke kelas Nilai (tidak sebaliknya) - Kelas MatakuliahMain akan memanggil kelas Mahasiswa dan Matakuliah untuk dieksekusi methodnya dan memperlihatkan hasil eksekusinya.
Berikut kelas diagram dari penjelasan diatas seperti dibawah ini :
Buatlah kelas Transkrip seperti dibawah ini : Mahasiswa.java package p6.a; /** * * @author Ade Sukendar * @version 1.3 * @since 22/2/2014 * */ public class Mahasiswa { private String nomorMahasiswa; private String nama; private String jurusan; private MataKuliah mataKuliah = new MataKuliah(); /* * Konstruktor */ public Mahasiswa() {} public Mahasiswa(String nomorMahasiswa, String nama) { setNomorMahasiswa(nomorMahasiswa); setNama(nama); }
2
public Mahasiswa(String nomorMahasiswa, String nama, String jurusan) { setNomorMahasiswa(nomorMahasiswa); setNama(nama); setJurusan(jurusan); } /* * Fungsional */ public String keteranganMataKuliah() { String desc = "NRP : "+ nomorMahasiswa+ "\n"+ "Nama : "+ nama+ "\n"+ "Matakuliah : "+ mataKuliah.getNama()+ "\n"+ "Total Nilai : "+ mataKuliah.hitungNilai(); return desc; } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ /* * Method I/O */ }
Buatlah kelas MataKuliah seperti dibawah ini : MataKuliah.java package p6.a; /** * * @author Ade Sukendar * @version 1.2 * @since 22/2/2014 * */ public class MataKuliah { private String kode; private String nama; private int sks; private Nilai nilaiMK = new Nilai(); /* * Konstruktor */ public MataKuliah() {} public MataKuliah(String kode, String nama, int sks) { setKode(kode); setNama(nama); setSks(sks); } /* * Function */ public double hitungNilai() { return nilaiMK.hitung(); } public void setNilaiMataKuliah(double nilaiTugas, double nilaiKuis, double nilaiUTS, double nilaiUAS, double nilaiPraktikum) { nilaiMK.setNilaiTugas(nilaiTugas);
3
nilaiMK.setNilaiKuis(nilaiKuis); nilaiMK.setNilaiUTS(nilaiUTS); nilaiMK.setNilaiUAS(nilaiUAS); nilaiMK.setNilaiPraktikum(nilaiPraktikum); } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ }
Buatlah kelas Nilai seperti dibawah ini : Nilai.java package p6.a; public class Nilai { private private private private private
double double double double double
nilaiTugas; nilaiKuis; nilaiUTS; nilaiUAS; nilaiPraktikum;
/* * Konstruktor */ public Nilai() {} public Nilai(double nilaiTugas, double nilaiKuis, double nilaiUTS, double nilaiUAS, double nilaiPraktikum) { setNilaiTugas(nilaiTugas); setNilaiKuis(nilaiKuis); setNilaiUTS(nilaiUTS); setNilaiUAS(nilaiUAS); setNilaiPraktikum(nilaiPraktikum); } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ /* * Fungsional * */ public double hitung() { double ntugas = getNilaiTugas()*0.1; //10% double nkuis = getNilaiKuis()*0.1; //10% double nuts = getNilaiUTS()*0.2; //20% double nuas = getNilaiUAS()*0.3; //30% double nprak = getNilaiPraktikum()*0.3; //30% return ntugas+nkuis+nuts+nuas+nprak; } }
4
Buatlah kelas MatakuliahMain seperti dibawah ini : MatakuliahMain.java package p6.a; /** * @author Ade Sukendar * @version 1.1 * @since 1/3/2014 * */ public class MatakuliahMain { public static void main(String[] args) { Mahasiswa mhs = new Mahasiswa("123040100", "Asep Supriatna"); MataKuliah matkul = new MataKuliah("IT405", "KPLBO", 3); matkul.setNilaiMataKuliah(80, 90, 60, 55, 70); mhs.setMataKuliah(matkul); System.out.println(mhs.keteranganMataKuliah()); } }
Running, kemudian amati yang terjadi !!!
Latihan 2 :
Latihan kedua adalah melanjutkan dari latihan yang pertama dengan menambahkan kode program untuk kelas MatakuliahMain. Kelas MatakuliahMain ditambahkan kode program sesuai dengan spesifikasi tersebut : - Tambahkan inputan dari keyboard untuk identitas mahasiswa dan komponen nilai matakuliah - Tambahkan sebuah fungsi/method untuk menampilkan indeks nilai berdasarkan total nilai yang telah dihitung. Ouput program seperti dibawah ini : NRP : 123040100 Nama : Asep Supriatna Matakuliah : KPLBO Total Nilai : 66.5 Indeks : B
5
Latihan 3 :
Latihan ketiga bertujuan untuk penggunaan konsep overloading (method dan konstruktor) dan penggunaan this untuk pemanggilan konstruktor. Kelas yang digunakan adalah kelas yang telah dibuat di latihan pertama, namun dengan sedikit perubahan. Amati perubahan kelas yang telah dibuat di kelas diagram di bawah ini :
Buatlah kelas Mahasiswa seperti dibawah ini : Mahasiswa.java package p6.c; /** * * @author Ade Sukendar * @version 1.3 * @since 22/2/2014 * */ public class Mahasiswa { private String nomorMahasiswa; private String nama; private String jurusan; private Nilai nilai = new Nilai(); /* * Konstruktor */ public Mahasiswa() { // memanggil konstruktor 3 parameter this("", "", ""); } public Mahasiswa(String nomorMahasiswa, String nama) { setNomorMahasiswa(nomorMahasiswa); setNama(nama); } public Mahasiswa(String nomorMahasiswa, String nama, String jurusan) { // memanggil konstruktor dua parameter this(nomorMahasiswa, nama);
6
setJurusan(jurusan); } /* * Method ini adalah contoh method overloading * -method hitungNilai yang pertama tanpa parameter * -method hitungNilai yang kedua dengan parameter * */ public String hitungNilai() { String desc = "NRP : "+ nomorMahasiswa+ "\n"+ "Nama : "+ nama+ "\n"+ "Nilai UTS : "+ nilai.getNilaiUTS()+ "\n"+ "Nilai UAS : "+ nilai.getNilaiUAS()+ "\n"+ "Nilai : "+ nilai.hitung(); return desc; } public String hitungNilai(double procUTS, double procUAS) { String desc = "NRP : "+ nomorMahasiswa+ "\n"+ "Nama : "+ nama+ "\n"+ "Nilai UTS : "+ nilai.getNilaiUTS()+ "\n"+ "Nilai UAS : "+ nilai.getNilaiUAS()+ "\n"+ "Nilai : "+ nilai.hitung(procUTS, procUAS); return desc; } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ }
Buatlah kelas Nilai seperti dibawah ini : Nilai.java package p6.c; /** * @author Ade Sukendar * @version 1 * @since 22/2/2014 */ public class Nilai { private double nilaiUTS; private double nilaiUAS; /* * Konstruktor */ public Nilai() { // memanggil konstruktor dua parameter this(0.0, 0.0); } public Nilai(double nilaiUTS, double nilaiUAS) { setNilaiUTS(nilaiUTS); setNilaiUAS(nilaiUAS); } /* * Method ini adalah contoh method overloading * -method hitung yang pertama tanpa parameter * -method hitung yang kedua dengan parameter */ public double hitung() { // default prosentase nilai uts 40% dan uas 60% return hitung(0.4, 0.6);
7
} public double hitung(double prosUTS, double prosUAS) { double nuts = getNilaiUTS()*prosUTS; double nuas = getNilaiUAS()*prosUAS; return nuts+nuas; } /* * Method Setter & Getter disembunyikan * Implementasi method ini harus tetap dibuat * */ }
Buatlah kelas NilaiMahasiswaMain seperti dibawah ini : NilaiMahasiswaMain.java package p6.c; public class NilaiMahasiswaMain { public static void main(String[] args) { Mahasiswa mhs = new Mahasiswa("123040100", "Asep Supriatna"); Nilai nilai = new Nilai(60, 80); mhs.setNilai(nilai); // method hitungNilai tanpa parameter System.out.println(mhs.hitungNilai()); // prosentase default uts 40% dan uas 60% System.out.println(); // method hitungNilai dengan parameter, uts 30% dan uas 70% System.out.println(mhs.hitungNilai(0.3,0.7)); } }
Running, kemudian amati yang terjadi !!!
Latihan 4 :
Latihan keempat bertujuan untuk menerapkan modifier hak akses (public & private) ke dalam properti kelas. Ketikkan kelas dibawah ini yang disimpan dalam paket yang berbeda : package p6.d.paket1; public class X { private int x1; int x2; public X() {} private X(int x1) { this.x1 = x1; } public void setX1(int x1) { this.x1 = x1; }
8
public int getX1() { return x1; } private int getX2() { return x2; } } package p6.d.paket2; public class XMain { public static void main(String[] args) { X x = new X(4); x.x2 = 5; System.out.println(x.getX2()); System.out.println(x.setX1(5)); System.out.println(x.getX1()); } }
Running, kemudian amati yang terjadi !!! Tunjukkan dan jelaskan letak kesalahan kode program di kelas XMain ! Jika sudah paham kesalahan program diatas cobalah untuk diperbaiki baik itu kelas X maupun XMain mengikuti aturan pemrograman berorientasi objek ! Apabila kelas X dan XMain dimasukkan ke dalam paket yang sama, jelaskan apa yang terjadi!
9