BAB 5 INTERAKSI OBJEK
Tujuan: Setelah mengikuti matakuliah ini, mahasiswa diharapkan mampu menjelaskan prinsip kerja dan membuat implementasi interaksi antar objek.
Pada kenyataannya, antara objek satu dengan objek lain saling berinteraksi atau saling berelasi untuk membentuk suatu kesatuan entitas dalam suatu sistem. Seperti contohnya pada sistem informasi akademik pada suatu perguruan tinggi, di dalamnya tentunya terdapat objek Mahasiswa dan Matakuliah. Sehingga pastinya kita akan membuat klas Mahasiswa dan klas Matakuliah. Dari 2 klas tersebut ternyata tidak saling bebas atau independen, justru klas Mahasiswa di dalamnya memiliki atribut yang merupakan objek dari klas Matakuliah, tentnya disamping atribut lain seperti nim dan nama. Dalam klas Matakuliah sendiri terdapat atribut berupa kode, nama dan sks. Sehingga bisa diambil kesimpulan bahwa antar objek-objek bisa saling berinteraksi. Kalau digambar didalam diagram klas dari contoh di atas adalah sebagai berikut: Mahasiswa -nim: String -nama: String -mk: Matakuliah <
>+Mahasiswa() <>+Mahasiswa(nim: String, nama: String, mk: Matakuliah) +tampil() +setNim(nim: String) +getNim(): String +setNama(nama: String) +getNama(): String +setMk(mk: Matakuliah) +getMk(): Matakuliah
Matakuliah -kode: String -nama: String -sks: int <>+Matakuliah() <>+Matakuliah(kode: String, nama: String, sks: int) +tampil() +setKode(kode: String) +getKode(): String +setNama(nama: String) +getNama(): String +setSks(sks: int) +getSks(): int
Dari diagram klas di atas terlihat bahwa dalam klas Mahasiswa terdapat atribut mk yang memiliki tipe data berupa tipe data reference dari klas Matakuliah. Kedepanya ketika atribut mk ini hendak diisi dengan suatu nilai, maka harus diisi dengan objek dari klas Matakuliah.
Untuk mengimplementasikan kasus ini sebagai simulasi kita buat klas di dalam project MyOop yang sudah pernah dibuat. Langkahnya sebagai berikut: 1. Open project MyOop 2. Buat paket baru dengan nama latihan2, dengan cara klik kanan Source packages > New > Java Pakcage 3. Di dalam paket latihan2 klik kanan > New > Java Class kemudian beri nama Mahasiswa. Ulangi dengan cara yang sama untuk membuat klas Matakuliah. Untuk simulasi buat satu klas lagi dengan nama klas Main. 4. Lengkapi klas Mahasiswa hingga seperti di bawah ini package latihan2; public class Mahasiswa { private String nim, nama; private Matakuliah mk; public Mahasiswa() { } public Mahasiswa(String nim, String nama, Matakuliah mk) { this.nim = nim; this.nama = nama; this.mk = mk; } public Matakuliah getMk() { return mk; } public void setMk(Matakuliah mk) { this.mk = mk; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public String getNim() { return nim; } public void setNim(String nim) { this.nim = nim; }
public void tampil(){ System.out.println("----------------:"); System.out.println("Data Mahasiswa :"); System.out.println("----------------:"); System.out.println("Nim :"+this.nim); System.out.println("Nama :"+this.nama); this.mk.tampil(); } }
5. Lengkapi klas Matakuliah hingga seperti di bawah ini package latihan2; public class Matakuliah { private String kode, nama; private int sks; public Matakuliah() { } public Matakuliah(String kode, String nama, int sks) { this.kode = kode; this.nama = nama; this.sks = sks; } public String getKode() { return kode; } public void setKode(String kode) { this.kode = kode; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public int getSks() { return sks; } public void setSks(int sks) { this.sks = sks; } public void tampil(){ System.out.println("----------------:"); System.out.println("Data makuliah :"); System.out.println("----------------:");
System.out.println("Kode Mata Kuliah :"+this.kode); System.out.println("Nama Mata Kuliah :"+this.nama); System.out.println("Jumla SKS Mata Kuliah :"+this.sks); } }
6. Lengkapi klas Main hingga seperti di bawah ini
package latihan2; public class Main { public static void main(String[] argv){ Matakuliah mk1 = new Matakuliah(); mk1.setKode("mk01"); mk1.setNama("OOP"); mk1.setSks(3); Mahasiswa mhs1 = new Mahasiswa(); mhs1.setNim("mhs01"); mhs1.setNama("Imam"); mhs1.setMk(mk1); mhs1.tampil(); //------------------------------------------------// Matakuliah mk2 = new Matakuliah("mk02", "Web", 2); Mahasiswa mhs2 = new Mahasiswa("mhs02", "Rozi", mk2); mhs2.tampil(); } }
7. Hasil keluaran ketika klas Main di run adalah
run: ----------------: Data Mahasiswa : ----------------: Nim :mhs01 Nama :Imam ----------------: Data makuliah : ----------------: Kode Mata Kuliah :mk01 Nama Mata Kuliah :OOP Jumla SKS Mata Kuliah :3 ----------------: Data Mahasiswa : ----------------: Nim :mhs02 Nama :Rozi ----------------: Data makuliah : ----------------: Kode Mata Kuliah :mk02
Nama Mata Kuliah :Web Jumla SKS Mata Kuliah :2 BUILD SUCCESSFUL (total time: 0 seconds)
Pada kenyataannya seorang mahasiswa tidak hanya memiliki sebuah matakuliah, akantetapi bisa banyak.atau lebih dari satu matakuliah. Sehingga kalau kita sesuaikan dengan requirement ini, atribut mk dari klas Mahasiswa tipe data reference nya harus diubah dari semula yang Matakuliah menjadi Matakuliah [ ] atau Matakuliah Array. Untuk mensimulasikannya, kita buat klas
baru
di
dalam
peket
latihan3.
Langkahnya
adalah
sebagaiberikut:
Buka kembali project MyOop 1. Buat paket latihan3 2. Di dalam paket lathan3, buat kembali klas Mahasiswa, Matakuliah dan Main 3. Lengkapi klas Mahasiswa hingga seperti berikut package latihan3; public class Mahasiswa { private String nim, nama; private Matakuliah[] mk; public Mahasiswa() { } public Mahasiswa(String nim, String nama, Matakuliah[] mk) { this.nim = nim; this.nama = nama; this.mk = mk; } public Matakuliah[] getMk() { return mk; } public void setMk(Matakuliah[] mk) { this.mk = mk; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; }
public String getNim() { return nim; } public void setNim(String nim) { this.nim = nim; } public void tampil(){ System.out.println("----------------:"); System.out.println("Data Mahasiswa :"); System.out.println("----------------:"); System.out.println("Nim :"+this.nim); System.out.println("Nama :"+this.nama); System.out.println("Daftar Matakuliah :"); System.out.println("---------------------"); for(int i=0;i
4. Lengkapi klas Matakuliah hingga seperti berikut package latihan3; public class Matakuliah { private String kode, nama; private int sks; public Matakuliah() { } public Matakuliah(String kode, String nama, int sks) { this.kode = kode; this.nama = nama; this.sks = sks; } public String getKode() { return kode; } public void setKode(String kode) { this.kode = kode; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public int getSks() {
return sks; } public void setSks(int sks) { this.sks = sks; } public void tampil(){ System.out.println("Kode Mata Kuliah :"+this.kode); System.out.println("Nama Mata Kuliah :"+this.nama); System.out.println("Jumla SKS Mata Kuliah :"+this.sks); } }
5. Lengkapi klas Main
package latihan3; public class Main { public static void main(String[] argv){ Matakuliah mk1 = new Matakuliah(); mk1.setKode("mk01"); mk1.setNama("OOP"); mk1.setSks(3); Matakuliah mk2 = new Matakuliah(); mk2.setKode("mk02"); mk2.setNama("Web"); mk2.setSks(2); Matakuliah[] mkArr = {mk1,mk2}; Mahasiswa mhs1 = new Mahasiswa(); mhs1.setNim("mhs01"); mhs1.setNama("Imam"); mhs1.setMk(mkArr); mhs1.tampil();
//**********************************************************// System.out.println("********************************************* *************"); //**********************************************************// Matakuliah mk3 = new Matakuliah("mk03", "Sistem Operasi", 2); Matakuliah mk4 = new Matakuliah("mk04", "Struktur Data", 2); Matakuliah[] mkArr1 = {mk3,mk4}; Mahasiswa mhs2 = new Mahasiswa("mhs02", "Rozi", mkArr1); mhs2.tampil(); } }
6. Setelah klas Main dijalankan, hasilnya adalah: run: ----------------:
Data Mahasiswa : ----------------: Nim :mhs01 Nama :Imam Daftar Matakuliah : --------------------Kode Mata Kuliah :mk01 Nama Mata Kuliah :OOP Jumla SKS Mata Kuliah :3 Kode Mata Kuliah :mk02 Nama Mata Kuliah :Web Jumla SKS Mata Kuliah :2 ********************************************************** ----------------: Data Mahasiswa : ----------------: Nim :mhs02 Nama :Rozi Daftar Matakuliah : --------------------Kode Mata Kuliah :mk03 Nama Mata Kuliah :Sistem Operasi Jumla SKS Mata Kuliah :2 Kode Mata Kuliah :mk04 Nama Mata Kuliah :Struktur Data Jumla SKS Mata Kuliah :2 BUILD SUCCESSFUL (total time: 0 seconds)