Modul PBO – Teknokrat
29
HUBUNGAN ANTAR KELAS
Tujuan
Praktikan dapat memahami dan menjelaskan tentang array dan hubungan antar kelas
(asosiasi, agregasi, komposisi) serta implementasinya.
ARRAY
Array digunakan untuk mengelompokkan data atau obyek yang memiliki tipe yang sama. Array
memungkinkan untuk mengacu ke sekumpulan obyek dengan nama yang sama. Array dapat
dideklarasikan dengan tipe apa saja, baik bertipe primitif maupun obyek. Dalam pemrograman Java,
array merupakan sebuah obyek meskipun ia terdiri dari elemen data primitif. Berikut contoh
deklarasi array:
int A[];
Mahasiswa M[]; // Mahasiswa adalah sebuah kelas
Seperti halnya dalam pembuatan obyek, array dibuat dengan menggunakan keyword new. Berikut
adalah contoh pembuatan array:
A = new int[30];
M = new Mahasiswa[10];
Penjelasan baris di atas membuat sebuah array dengan 30 nilai int (integer) dan 10 obyek
mahasiswa. Ketika membuat sebuah array, elemen didalamnya akan diinisialisasi dengan nilai
default (null), yang berarti untuk elemen-elemen array M tersebut belum merujuk ke suatu obyek
Mahasiswa. Setelah proses pengisian M[0] = new Mahasiswa(), barulah diperoleh elemen pertama
dari array M yang merujuk ke obyek Mahasiswa.
Program 4-1
public class Array {
public static void main(String [] args) {
int x[]; // deklarasi
x = new int[5]; // alokasi
// inisialisasi
x[0] = 34; x[1] = 22;
x[2] = 15; x[3] = 50;
x[4] = 40;
System.out.println("Isi elemen array: ");
for(int i=0; i<x.length; i++) {
System.out.print(x[i] + " ");
}
}
}
BAB
4
Modul PBO – Teknokrat
30
Hasil Output
Isi elemen array:
34 22 15 50 40
Program 4-2
class Mahasiswa {
private String npm;
private String nama;
private int umur;
public Mahasiswa(String a, String b, int c) {
npm = a;
nama = b;
umur = c;
}
public String getNpm() { return npm; }
public String getNama() { return nama; }
public int getUmur() { return umur; }
}
public class Array2 {
public static void main(String [] args) {
Mahasiswa M[];
M = new Mahasiswa[3];
M[0] = new Mahasiswa("11223344", "Budianto", 20);
M[1] = new Mahasiswa("11223355", "Warsito", 19);
M[2] = new Mahasiswa("11223366", "Siska", 20);
System.out.println("DATA MAHASISWA");
System.out.println("==============");
for(int i=0; i<M.length; i++) {
System.out.print((i+1) + ". ");
System.out.print("NPM: " + M[i].getNpm() + ", ");
System.out.print("Nama: " + M[i].getNama() + ", ");
System.out.print("Umur: " + M[i].getUmur());
System.out.println();
}
}
}
Hasil Output
DATA MAHASISWA
==============
1. NPM: 11223344, Nama: Budianto, Umur: 20
2. NPM: 11223355, Nama: Warsito, Umur: 19
3. NPM: 11223366, Nama: Siska, Umur: 20
Modul PBO – Teknokrat
31
HUBUNGAN ANTAR KELAS
Dalam pemrograman berorientasi obyek, kelas-kelas yang terbentuk dapat memiliki hubungan satu
dengan yang lainnya sesuai dengan kondisi dari kelas-kelas yang terkait. Ada beberapa jenis
hubungan yang dapat terjadi antara kelas yang satu dengan lainnya, yaitu:
· Asosiasi
· Agregasi
· Komposisi
· Generalisasi (terkait dengan pewarisan)
· Spesialisasi (terkait dengan pewarisan)
ASOSIASI
Asosiasi merupakan hubungan antara dua kelas, merupakan hubungan struktural yang
menggambarkan himpunan link antar obyek. Berikut adalah contoh hubungan asosiasi:
Gambar 4. 1 Contoh hubungan asosiasi
Berdasarkan diagram di atas terjadi hubungan kelas dosen yang mengajar beberapa mahasiswa.
Implementasi dari diagram kelas tersebut di Java adalah sebagai berikut:
Program 4-3
// Waktu.java
public class Waktu {
private int Hour, Minute, Second;
public Waktu(int H, int M, int S) {
this.Hour = H;
this.Minute = M;
this.Second = S;
}
public long Convert2Sec() {
long Hasil;
// Hitung hasil konversi jam ke detik
Hasil = 3600*this.Hour + 60*this.Minute + this.Second;
return (Hasil);
}
}
Modul PBO – Teknokrat
32
// PenghitungPulsa.java
public class PenghitungPulsa {
private double JmlPulsa;
public PenghitungPulsa(Waktu c1, Waktu c2) {
this.JmlPulsa = (c2.Convert2Sec() - c1.Convert2Sec())/100;
}
public double GetJmlPulsa() {
return (JmlPulsa);
}
}
// MainAsosiasi.java
public class MainAsosiasi {
public static void main(String [] args) {
// Ciptakan objek
Waktu JamMulai = new Waktu(15,26,34);
Waktu JamSelesai = new Waktu(17,8,45);
PenghitungPulsa PC = new PenghitungPulsa(JamMulai, JamSelesai);
// Cetak informasi jumlah pulsa
System.out.println("Jumlah pulsa : "+ PC.GetJmlPulsa());
}
}
Hasil Output
Jumlah pulsa : 61.0
AGREGASI
Agregasi adalah hubungan antara dua kelas dimana kelas yang satu merupakan bagian dari kelas
lainnya, namun kedua kelas ini dapat berdiri sendiri-sendiri. Agregasi juga disebut sebagai relasi
‘part-of’ atau relasi ‘whole-part’. Berikut ini contoh hubungan agregasi:
Gambar 4. 2 Contoh hubungan agregasi
Berdasarkan diagram kelas di atas, terlihat bahwa kelas Mahasiswa merupakan bagian dari kelas
Jurusan, akan tetapi kelas Jurusan dan Mahasiswa dapat diciptakan sendiri-sendiri. Implementasi
program dari kelas diagram di atas dalam Java adalah sebagai berikut:
Modul PBO – Teknokrat
33
Program 4-4
// Mahasiswa.java
public class Mahasiswa {
private String npm, nama;
public Mahasiswa(String npm, String nama) {
this.npm = npm;
this.nama = nama;
}
public String getNpm() {
return npm;
}
public String getNama() {
return nama;
}
}
// Jurusan.java
public class Jurusan {
private String kodeJurusan, namaJurusan;
private Mahasiswa [] daftar;
private static int jumMhs = 0;
public Jurusan(String kodeJurusan, String namaJurusan) {
this.kodeJurusan = kodeJurusan;
this.namaJurusan = namaJurusan;
daftar = new Mahasiswa[20];
}
public void tambahMahasiswa(Mahasiswa M) {
this.daftar[jumMhs] = M;
this.jumMhs++;
}
public void cetakInfo() {
System.out.println("Kode Jurusan : " + this.kodeJurusan);
System.out.println("Nama Jurusan : " + this.namaJurusan);
System.out.println("Daftar Mahasiswa: ");
for(int i=0; i<jumMhs; i++) {
System.out.print((i+1) + ". ");
System.out.print(daftar[i].getNpm() + " - ");
System.out.println(daftar[i].getNama());
}
}
}
// MainAgregasi.java
public class MainAgregasi {
public static void main(String args[]) {
// Ciptakan objek jurusan
Jurusan j = new Jurusan("TI", "Teknik Informatika");
// Ciptakan objek mahasiswa
Mahasiswa m1 = new Mahasiswa("12312761", "Abdul");
Mahasiswa m2 = new Mahasiswa("12312671", "Markum");
Mahasiswa m3 = new Mahasiswa("12312212", "Kumkum");
Mahasiswa m4 = new Mahasiswa("12312178", "Paijo");
Modul PBO – Teknokrat
34
// Tambahkan objek mahasiswa ke objek jurusan
j.tambahMahasiswa(m1);
j.tambahMahasiswa(m2);
j.tambahMahasiswa(m3);
j.tambahMahasiswa(m4);
// Cetak informasi daftar mahasiswa
j.cetakInfo();
}
}
Hasil Output
Kode Jurusan : TI
Nama Jurusan : Teknik Informatika
Daftar Mahasiswa:
1. 12312761 - Abdul
2. 12312671 - Markum
3. 12312212 - Kumkum
4. 12312178 - Paijo
Berdasarkan implementasi terlihat bahwa kelas jurusan memiliki atribut (member) yang memiliki
tipe kelas Mahasiswa yaitu variabel ‘daftar’, sehingga kelas Mahasiswa merupakan bagian dari kelas
jurusan.
KOMPOSISI
Komposisi merupakan bentuk khusus dari agregasi, dimana kelas yang menjadi bagian (part) baru
dapat diciptakan setelah kelas yang menjadi seluruhnya (whole) dibuat, dan ketika kelas yang
menjadi whole dimusnahkan maka kelas yang menjadi part ikut musnah. Berikut adalah contoh
hubungan komposisi:
Gambar 4. 3 Contoh hubungan komposisi
Modul PBO – Teknokrat
35
Berdasarkan diagram kelas di atas dapat dilihat bahwa kelas CPU, Printer, dan Monitor semuanya
merupakan bagian dari kelas Komputer dan ketika kelas Komputer musnah maka kelas CPU, Printer,
dan Monitor akan ikut musnah. Implementasi kelas diagram di atas ke dalam Java adalah sebagai
berikut:
Program 4-5
// CPU.java
public class CPU {
private String merk;
private int kecepatan;
public CPU(String m, int k) {
merk = m;
kecepatan = k;
}
public void cetakSpekCPU() {
System.out.println(merk + ", " + kecepatan);
}
}
// Monitor.java
public class Monitor {
private String merk;
public Monitor(String m) {
merk = m;
}
public void cetakSpekMonitor() {
System.out.println(merk);
}
}
// Printer.java
public class Printer {
private String merk, type;
public Printer(String m, String t) {
merk = m;
type = t;
}
public void cetakSpekPrinter() {
System.out.println(merk + ", " + type);
}
}
// Komputer.java
public class Komputer {
private String kode;
private long harga;
private CPU proc;
private Monitor mon;
private Printer prn;
Modul PBO – Teknokrat
36
public Komputer(String k, long h) {
kode = k;
harga = h;
if(k == "PC-01") {
proc = new CPU("Pentium IV", 500);
mon = new Monitor("Sony Multiscan 15sf");
prn = new Printer("Canon BJC-210sp", "Color");
}
}
public void cetakSpek() {
System.out.println("Kode: " + this.kode);
System.out.print("Processor: ");
proc.cetakSpekCPU();
System.out.print("Monitor: ");
mon.cetakSpekMonitor();
System.out.print("Printer: ");
prn.cetakSpekPrinter();
System.out.println("Harga: Rp. " + this.harga);
}
}
// MainKomposisi.java
public class MainKomposisi {
public static void main(String [] args) {
Komputer PC = new Komputer("PC-01", 850000);
PC.cetakSpek();
}
}
Hasil Output
Kode: PC-01
Processor: Pentium IV, 500
Monitor: Sony Multiscan 15sf
Printer: Canon BJC-210sp, Color
Harga: Rp. 850000
Berdasarkan implementasi di atas, dapat dilihat bahwa kelas CPU, Printer, dan Monitor merupakan
atribut dari kelas Komputer dan baru diciptakan pada saat instansiasi obyek dari kelas Komputer.
Modul PBO – Teknokrat
37
Lembar Kerja Praktikum: Modul 4
NPM: Asisten:
Nama: Nilai:
Kelas: Tanggal:
Soal
1. [Score: 50] Perhatikan kelas diagram berikut:
Keterangan kelas diagram di atas:
· karyawan adalah array yang bertipe String, berisi nama-nama dari pegawai
yang dimiliki manager
· setKaryawan(String nama) digunakan untuk menambahkan jumlah pegawai
manager
Buatlah code Java untuk kelas diagram di atas.
2. [Score: 50] Perhatikan kelas diagram berikut:
Modul PBO – Teknokrat
38
Keterangan kelas diagram di atas:
· karyawan adalah array yang bertipe String, berisi nama-nama dari pegawai
yang dimiliki manager
· setKaryawan(String nama) digunakan untuk menambahkan jumlah pegawai
manager
Buatlah code Java untuk kelas diagram di atas.

Modul PBO Bab-04 - Hubungan antar Kelas

  • 1.
    Modul PBO –Teknokrat 29 HUBUNGAN ANTAR KELAS Tujuan Praktikan dapat memahami dan menjelaskan tentang array dan hubungan antar kelas (asosiasi, agregasi, komposisi) serta implementasinya. ARRAY Array digunakan untuk mengelompokkan data atau obyek yang memiliki tipe yang sama. Array memungkinkan untuk mengacu ke sekumpulan obyek dengan nama yang sama. Array dapat dideklarasikan dengan tipe apa saja, baik bertipe primitif maupun obyek. Dalam pemrograman Java, array merupakan sebuah obyek meskipun ia terdiri dari elemen data primitif. Berikut contoh deklarasi array: int A[]; Mahasiswa M[]; // Mahasiswa adalah sebuah kelas Seperti halnya dalam pembuatan obyek, array dibuat dengan menggunakan keyword new. Berikut adalah contoh pembuatan array: A = new int[30]; M = new Mahasiswa[10]; Penjelasan baris di atas membuat sebuah array dengan 30 nilai int (integer) dan 10 obyek mahasiswa. Ketika membuat sebuah array, elemen didalamnya akan diinisialisasi dengan nilai default (null), yang berarti untuk elemen-elemen array M tersebut belum merujuk ke suatu obyek Mahasiswa. Setelah proses pengisian M[0] = new Mahasiswa(), barulah diperoleh elemen pertama dari array M yang merujuk ke obyek Mahasiswa. Program 4-1 public class Array { public static void main(String [] args) { int x[]; // deklarasi x = new int[5]; // alokasi // inisialisasi x[0] = 34; x[1] = 22; x[2] = 15; x[3] = 50; x[4] = 40; System.out.println("Isi elemen array: "); for(int i=0; i<x.length; i++) { System.out.print(x[i] + " "); } } } BAB 4
  • 2.
    Modul PBO –Teknokrat 30 Hasil Output Isi elemen array: 34 22 15 50 40 Program 4-2 class Mahasiswa { private String npm; private String nama; private int umur; public Mahasiswa(String a, String b, int c) { npm = a; nama = b; umur = c; } public String getNpm() { return npm; } public String getNama() { return nama; } public int getUmur() { return umur; } } public class Array2 { public static void main(String [] args) { Mahasiswa M[]; M = new Mahasiswa[3]; M[0] = new Mahasiswa("11223344", "Budianto", 20); M[1] = new Mahasiswa("11223355", "Warsito", 19); M[2] = new Mahasiswa("11223366", "Siska", 20); System.out.println("DATA MAHASISWA"); System.out.println("=============="); for(int i=0; i<M.length; i++) { System.out.print((i+1) + ". "); System.out.print("NPM: " + M[i].getNpm() + ", "); System.out.print("Nama: " + M[i].getNama() + ", "); System.out.print("Umur: " + M[i].getUmur()); System.out.println(); } } } Hasil Output DATA MAHASISWA ============== 1. NPM: 11223344, Nama: Budianto, Umur: 20 2. NPM: 11223355, Nama: Warsito, Umur: 19 3. NPM: 11223366, Nama: Siska, Umur: 20
  • 3.
    Modul PBO –Teknokrat 31 HUBUNGAN ANTAR KELAS Dalam pemrograman berorientasi obyek, kelas-kelas yang terbentuk dapat memiliki hubungan satu dengan yang lainnya sesuai dengan kondisi dari kelas-kelas yang terkait. Ada beberapa jenis hubungan yang dapat terjadi antara kelas yang satu dengan lainnya, yaitu: · Asosiasi · Agregasi · Komposisi · Generalisasi (terkait dengan pewarisan) · Spesialisasi (terkait dengan pewarisan) ASOSIASI Asosiasi merupakan hubungan antara dua kelas, merupakan hubungan struktural yang menggambarkan himpunan link antar obyek. Berikut adalah contoh hubungan asosiasi: Gambar 4. 1 Contoh hubungan asosiasi Berdasarkan diagram di atas terjadi hubungan kelas dosen yang mengajar beberapa mahasiswa. Implementasi dari diagram kelas tersebut di Java adalah sebagai berikut: Program 4-3 // Waktu.java public class Waktu { private int Hour, Minute, Second; public Waktu(int H, int M, int S) { this.Hour = H; this.Minute = M; this.Second = S; } public long Convert2Sec() { long Hasil; // Hitung hasil konversi jam ke detik Hasil = 3600*this.Hour + 60*this.Minute + this.Second; return (Hasil); } }
  • 4.
    Modul PBO –Teknokrat 32 // PenghitungPulsa.java public class PenghitungPulsa { private double JmlPulsa; public PenghitungPulsa(Waktu c1, Waktu c2) { this.JmlPulsa = (c2.Convert2Sec() - c1.Convert2Sec())/100; } public double GetJmlPulsa() { return (JmlPulsa); } } // MainAsosiasi.java public class MainAsosiasi { public static void main(String [] args) { // Ciptakan objek Waktu JamMulai = new Waktu(15,26,34); Waktu JamSelesai = new Waktu(17,8,45); PenghitungPulsa PC = new PenghitungPulsa(JamMulai, JamSelesai); // Cetak informasi jumlah pulsa System.out.println("Jumlah pulsa : "+ PC.GetJmlPulsa()); } } Hasil Output Jumlah pulsa : 61.0 AGREGASI Agregasi adalah hubungan antara dua kelas dimana kelas yang satu merupakan bagian dari kelas lainnya, namun kedua kelas ini dapat berdiri sendiri-sendiri. Agregasi juga disebut sebagai relasi ‘part-of’ atau relasi ‘whole-part’. Berikut ini contoh hubungan agregasi: Gambar 4. 2 Contoh hubungan agregasi Berdasarkan diagram kelas di atas, terlihat bahwa kelas Mahasiswa merupakan bagian dari kelas Jurusan, akan tetapi kelas Jurusan dan Mahasiswa dapat diciptakan sendiri-sendiri. Implementasi program dari kelas diagram di atas dalam Java adalah sebagai berikut:
  • 5.
    Modul PBO –Teknokrat 33 Program 4-4 // Mahasiswa.java public class Mahasiswa { private String npm, nama; public Mahasiswa(String npm, String nama) { this.npm = npm; this.nama = nama; } public String getNpm() { return npm; } public String getNama() { return nama; } } // Jurusan.java public class Jurusan { private String kodeJurusan, namaJurusan; private Mahasiswa [] daftar; private static int jumMhs = 0; public Jurusan(String kodeJurusan, String namaJurusan) { this.kodeJurusan = kodeJurusan; this.namaJurusan = namaJurusan; daftar = new Mahasiswa[20]; } public void tambahMahasiswa(Mahasiswa M) { this.daftar[jumMhs] = M; this.jumMhs++; } public void cetakInfo() { System.out.println("Kode Jurusan : " + this.kodeJurusan); System.out.println("Nama Jurusan : " + this.namaJurusan); System.out.println("Daftar Mahasiswa: "); for(int i=0; i<jumMhs; i++) { System.out.print((i+1) + ". "); System.out.print(daftar[i].getNpm() + " - "); System.out.println(daftar[i].getNama()); } } } // MainAgregasi.java public class MainAgregasi { public static void main(String args[]) { // Ciptakan objek jurusan Jurusan j = new Jurusan("TI", "Teknik Informatika"); // Ciptakan objek mahasiswa Mahasiswa m1 = new Mahasiswa("12312761", "Abdul"); Mahasiswa m2 = new Mahasiswa("12312671", "Markum"); Mahasiswa m3 = new Mahasiswa("12312212", "Kumkum"); Mahasiswa m4 = new Mahasiswa("12312178", "Paijo");
  • 6.
    Modul PBO –Teknokrat 34 // Tambahkan objek mahasiswa ke objek jurusan j.tambahMahasiswa(m1); j.tambahMahasiswa(m2); j.tambahMahasiswa(m3); j.tambahMahasiswa(m4); // Cetak informasi daftar mahasiswa j.cetakInfo(); } } Hasil Output Kode Jurusan : TI Nama Jurusan : Teknik Informatika Daftar Mahasiswa: 1. 12312761 - Abdul 2. 12312671 - Markum 3. 12312212 - Kumkum 4. 12312178 - Paijo Berdasarkan implementasi terlihat bahwa kelas jurusan memiliki atribut (member) yang memiliki tipe kelas Mahasiswa yaitu variabel ‘daftar’, sehingga kelas Mahasiswa merupakan bagian dari kelas jurusan. KOMPOSISI Komposisi merupakan bentuk khusus dari agregasi, dimana kelas yang menjadi bagian (part) baru dapat diciptakan setelah kelas yang menjadi seluruhnya (whole) dibuat, dan ketika kelas yang menjadi whole dimusnahkan maka kelas yang menjadi part ikut musnah. Berikut adalah contoh hubungan komposisi: Gambar 4. 3 Contoh hubungan komposisi
  • 7.
    Modul PBO –Teknokrat 35 Berdasarkan diagram kelas di atas dapat dilihat bahwa kelas CPU, Printer, dan Monitor semuanya merupakan bagian dari kelas Komputer dan ketika kelas Komputer musnah maka kelas CPU, Printer, dan Monitor akan ikut musnah. Implementasi kelas diagram di atas ke dalam Java adalah sebagai berikut: Program 4-5 // CPU.java public class CPU { private String merk; private int kecepatan; public CPU(String m, int k) { merk = m; kecepatan = k; } public void cetakSpekCPU() { System.out.println(merk + ", " + kecepatan); } } // Monitor.java public class Monitor { private String merk; public Monitor(String m) { merk = m; } public void cetakSpekMonitor() { System.out.println(merk); } } // Printer.java public class Printer { private String merk, type; public Printer(String m, String t) { merk = m; type = t; } public void cetakSpekPrinter() { System.out.println(merk + ", " + type); } } // Komputer.java public class Komputer { private String kode; private long harga; private CPU proc; private Monitor mon; private Printer prn;
  • 8.
    Modul PBO –Teknokrat 36 public Komputer(String k, long h) { kode = k; harga = h; if(k == "PC-01") { proc = new CPU("Pentium IV", 500); mon = new Monitor("Sony Multiscan 15sf"); prn = new Printer("Canon BJC-210sp", "Color"); } } public void cetakSpek() { System.out.println("Kode: " + this.kode); System.out.print("Processor: "); proc.cetakSpekCPU(); System.out.print("Monitor: "); mon.cetakSpekMonitor(); System.out.print("Printer: "); prn.cetakSpekPrinter(); System.out.println("Harga: Rp. " + this.harga); } } // MainKomposisi.java public class MainKomposisi { public static void main(String [] args) { Komputer PC = new Komputer("PC-01", 850000); PC.cetakSpek(); } } Hasil Output Kode: PC-01 Processor: Pentium IV, 500 Monitor: Sony Multiscan 15sf Printer: Canon BJC-210sp, Color Harga: Rp. 850000 Berdasarkan implementasi di atas, dapat dilihat bahwa kelas CPU, Printer, dan Monitor merupakan atribut dari kelas Komputer dan baru diciptakan pada saat instansiasi obyek dari kelas Komputer.
  • 9.
    Modul PBO –Teknokrat 37 Lembar Kerja Praktikum: Modul 4 NPM: Asisten: Nama: Nilai: Kelas: Tanggal: Soal 1. [Score: 50] Perhatikan kelas diagram berikut: Keterangan kelas diagram di atas: · karyawan adalah array yang bertipe String, berisi nama-nama dari pegawai yang dimiliki manager · setKaryawan(String nama) digunakan untuk menambahkan jumlah pegawai manager Buatlah code Java untuk kelas diagram di atas. 2. [Score: 50] Perhatikan kelas diagram berikut:
  • 10.
    Modul PBO –Teknokrat 38 Keterangan kelas diagram di atas: · karyawan adalah array yang bertipe String, berisi nama-nama dari pegawai yang dimiliki manager · setKaryawan(String nama) digunakan untuk menambahkan jumlah pegawai manager Buatlah code Java untuk kelas diagram di atas.