PENGENALAN JAVA
MODUL V
KONSEP DASAR PBO LANJUT
RELASI ANTAR KELAS, ABSTRAK, INTERFACE
A.1. Agregasi
Agregasi adalah bentuk hubungan yang lebih khusus dari Assosiasi dimana sebuah objek
memiliki lifecycle nya sendiri tapi dengan kepemilikan objek lain. Relasinya biasa di sebut
relasi “has-a”. Agregasi merupakan hubungan antara dua kelas di mana kelas yang satu
merupakan bagian dari kelas yang lain namun kedua kelas ini dapat berdiri sendiri-sendiri.
Relasi agregasi dalam diagram UML (Unified Modeling Language), digambarkan dengan
hollow diamond, Simbol panah menyatakan suatu class navigable terhadap class lain.
B.1. Komposisi
CP Lapto VG
U p A
var
var merk var
namaCpu cpu namaVga
CPU() VGA()
setNamaCP setMerk setNamaVg
()
B. Abstrak
Abstrak merupakan sebuah kelas. Perbedaannya dengan kelas biasa ialah pada
kelas abstrak kita dapat mendeklarasikan method/fungsi tanpa adanya implementasi.
Sebuah method/fungsi yang hanya berupa deklarasi saja tanpa adanya implementasi
disebut method/fungsi abstrak ditandai dengan adanya titik koma (;) setelah deklarasi
methodnya. Kelas abstrak dan method abstrak dideklarasikan dengan keyword
“abstract”. Kelas abstrak dapat berisi method abstrak juga method biasa. Untuk
menghubungkan kelas normal dengan kelas abstrak menggunakan keyword “extends”.
Deklarasi
abstract class <nama kelas abstract> {
C. Interface
Interface pada dasarnya adalah sebuah kelas, akan tetapi method-method di
dalamnya hanya berupa deklarasi saja, tidak ada implementasi dari method-method
tersebut, ditandai dengan adanya titik koma (;) setelah deklarasi method. Secara teknis
bisa dikatakan bahwa interface adalah kelas yang bersifat abstract, semua methodnya
adalah public dan abstract, serta semua variabel yang ada dalam interface adalah static
final atau biasa disebut sebagai konstanta.
Interface dideklarasikan dengan menggunakan keyword “interface”. Kelas yang akan
mengimplementasikan interface menggunakan keyword “implements”. Semua method
dalam interface bersifat public sehingga walaupun dalam deklarasi interface tidak ada
public tetapi di class yang mengimplementasikan interface harus meletakkan access
identifers public pada deklarasi methodnya. Saat sebuah kelas mengimplementasi sebuah
interface maka seluruh method/fungsi pada interfaceharus dideklarasikan pada kelas
tersebut. Hubungan antar interface menggunakan keyword “extends”. Sebuah kelas
dapat mengimplemtasi lebih dari satu interface dengan memberikan tanda koma (,) pada
interface sebelumnya.
Class : Mahasiswa
package Latihan1;
Class : Dosen
package Latihan1;
Class : Asosiasi
2. Latihan 2
Class : Mahasiswa
Class : Agregasi
3. Latihan 3
Class : CPU
Class : VGA
Class : Laptop
Class : Komposisi
4. Latihan 4
Class : KalkulatorGeometri
Class : Geometri
Class : Segitiga
Case
Apa yang akan terjadi jika method/fungsi volumeBangun() pada kelas Segitiga
dihapus ? Jelaskan.
Jika method/fungsi volumeBangun() pada kelas Segitiga dihapus, program akan tetap
berjalan, tetapi pada java class Segitiga akan terdapat tanda seru berwarna merah dalam
sintaknya atau error, karena pada class Segitiga implement terhadap class interface
Penghitung2d. Di dalam class interface tersebut terdapat metode/fungsi volume bangun,
Saat sebuah class Segitiga mengimplementasi interface Penghitung2d, maka semua
method/fungsi pada interface harus dideklarasikan pada class Segitiga. Namun jika salah
satunya dihapus, program akan tetap berjalan namun akan terjadi eror pada class Segitiga.
Kembangkan program terakhir (Latihan 4) hingga memiliki 2 atau lebih interface yang
saling berhubungan dan terdapat kelas yang mengakses 2 interface atau lebih.
a. Memiliki 2 atau lebih interface yang saling berhubungan (50)
b. Terdapat kelas yang mengakses 2 interface atau lebih (50)
1. Class KalkulatorGeometri
package Unguided;
System.out.println("");
Bola bolaBasket = new Bola();
System.out.println("------------Bola------------");
bolaBasket.setJari_jari(20);
System.out.println("Jari-jari bola : " + bolaBasket.getJari_jari());
System.out.println("Volume Bola : " + bolaBasket.volumeBangun());
System.out.println("");
Kubus bKubus = new Kubus();
System.out.println("------------Kubus------------");
System.out.println("Volume Kubus : " + bKubus.volumeKubus(3f, 5f, 8f));
System.out.println("Luas Permukaan Kubus : " + bKubus.luasPkubus(3f, 4f));
System.out.println("Keliling Kubus : " + bKubus.kelilingKubus(5f));
System.out.println("");
Balok balokRuang = new Balok();
System.out.println("------------Balok------------");
System.out.println("Luas Permukaan Balok : " +
balokRuang.luasPermukaanBalok(3f,5f, 8f));
System.out.println("Volume Balok : " + balokRuang.volumeBalok(3f, 4f, 9f));
}
}
package Unguided;
package Unguided;
float luasBangun();
float luasBangun(float a, float b);
float kelilingBangun();
float kelilingBangun(float a, float b);
float volumeBangun();
}
4. Class Segitiga
package Unguided;
package Unguided;
6. Class Bola
package Unguided;
@Override
public float volumeBangun() {
volumeBola = (float) (KONSTANTA_BOLA * PHI
*(Math.pow(super.getJari_jari(), 3)));
return volumeBola;
}
@Override
public float volumeBangun(float a, float b, float c) {
super.setJari_jari(a);
float r = super.getJari_jari();
volumeBola = (float) (KONSTANTA_BOLA * PHI * (Math.pow(r, 3)));
return volumeBola;
}
@Override
public float luasBangun(float a, float b, float c){
@Override
public float luasBangun() {
luasBola = (float) (4 * PHI * (Math.pow(super.getJari_jari(), 2)));
return luasBola;
}
@Override
public float luasBangun(float a, float b) {
super.setJari_jari(a);
float r = super.getJari_jari();
luasBola = (float)(4 * PHI * (Math.pow(r,2)));
return luasBola;
}
@Override
public float kelilingBangun() {
return 0.0f;
}
@Override
public float kelilingBangun(float a, float b) {
return 0.0f;
}
}
7. Class bangunRuang
package Unguided;
8. bangunRuang2
package Unguided;
9. Kubus
package Unguided;
@Override
public float volumeKubus(float a, float b, float c) {
super.setSisi(a);
super.setSisi(b);
super.setSisi(c);
volumeKubus = super.getSisi() * super.getSisi() * super.getSisi();
return volumeKubus;
}
@Override
public float luasPkubus(float a, float b) {
super.setSisi(a);
super.setSisi(b);
luasPkubus = 6* super.getSisi() * super.getSisi();
return luasPkubus;
}
@Override
public float kelilingKubus(float a) {
super.setSisi(a);
kelilingKubus = 12 * super.getSisi();
return kelilingKubus ;
}
}
10. Balok
package Unguided;