A. Relasi Asosiasi
Hubungan antara dua atau lebih kelas yang menggambarkan bahwa objek pada satu kelas memiliki keterkaitan dengan objek pada kelas lain dalam sebuah sistem.
Contoh sederhana:
Siswa — belajar — MataPelajaran
Asosiasi tidak menentukan siapa yang dimiliki siapa, hanya menunjukkan hubungan interaksi.
B. Ciri-Ciri Relasi Asosiasi
| No | Ciri Relasi Asosiasi |
|---|---|
| 1 | Menghubungkan dua atau lebih kelas dalam sistem |
| 2 | Tidak ada konsep kepemilikan (berbeda dengan composition/aggregation) |
| 3 | Memiliki arah komunikasi (arrow) opsional |
| 4 | Bisa memiliki multiplicity / kardinalitas |
| 5 | Bersifat fleksibel — dapat berubah selama proses sistem |
C. Interaksi Antar Kelas Berdasarkan Multiplicity
a. One to One (1 — 1)
Satu objek dari kelas A hanya berhubungan dengan satu objek kelas B.Contoh Kasus:
Satu siswa memiliki 1 kartu pelajar.Diagram (Sederhana):
Siswa (1) ----------- (1) KartuPelajar
Contoh Code:
class KartuPelajar {private String nomor;public KartuPelajar(String nomor) {this.nomor = nomor;}public String getNomor() {return nomor;}}class Siswa {private String nama;private KartuPelajar kartu;public Siswa(String nama, KartuPelajar kartu) {this.nama = nama;this.kartu = kartu;}public void info() {System.out.println(nama + " - " + kartu.getNomor());}}public class Main {public static void main(String[] args) {KartuPelajar kp = new KartuPelajar("KP001");Siswa s = new Siswa("Andi", kp);s.info();}}
Penjelasan:
Relasi satu-satu: setiap objek siswa hanya punya satu kartu pelajar.b. One to Many (1 — * )
Satu objek kelas A berhubungan dengan banyak objek kelas B.
Contoh Kasus:
Satu guru mengajar banyak siswa.
Diagram (Sederhana):
Guru (1) ----------- (*) Siswa
Contoh Code:
import java.util.ArrayList;class Siswa {private String nama;public Siswa(String nama) {this.nama = nama;}public String getNama() {return nama;}}class Guru {private String nama;private ArrayList<Siswa> daftarSiswa = new ArrayList<>();public Guru(String nama) {this.nama = nama;}public void tambahSiswa(Siswa s) {daftarSiswa.add(s);}public void tampilkanSiswa() {System.out.println(nama + " mengajar:");for (Siswa s : daftarSiswa) {System.out.println("- " + s.getNama());}}}public class Main {public static void main(String[] args) {Guru guru = new Guru("Bu Ratna");guru.tambahSiswa(new Siswa("Dewi"));guru.tambahSiswa(new Siswa("Rizki"));guru.tampilkanSiswa();}}
Penjelasan:
Objek guru memiliki list siswa (banyak).
c. Many to One (* — 1)
Banyak objek kelas A berhubungan dengan satu objek kelas B.
Contoh Kasus:
Banyak siswa berada dalam satu kelas.
Diagram:
Siswa (*) ----------- (1) Kelas
Contoh Code:
class Kelas {private String nama;public Kelas(String nama) {this.nama = nama;}public String getNama() {return nama;}}class Siswa {private String nama;private Kelas kelas;public Siswa(String nama, Kelas kelas) {this.nama = nama;this.kelas = kelas;}public void info() {System.out.println(nama + " berada di kelas " + kelas.getNama());}}public class Main {public static void main(String[] args) {Kelas k = new Kelas("X PPLG 1");Siswa s1 = new Siswa("Bima", k);Siswa s2 = new Siswa("Salsa", k);s1.info();s2.info();}}
Penjelasan:
Semua objek siswa menunjuk ke objek kelas yang sama.d. Many-to-Many ( * — * )
Banyak objek kelas A berhubungan dengan banyak objek kelas B.
Contoh Kasus:
Siswa dapat ikut banyak mata pelajaran, dan mata pelajaran dapat memiliki banyak siswa.Diagram:
Siswa (*) ----------- (*) MataPelajaran
Contoh Code:
import java.util.ArrayList;class MataPelajaran {private String nama;ArrayList<Siswa> siswa = new ArrayList<>();public MataPelajaran(String nama) {this.nama = nama;}public void tambahSiswa(Siswa s) {siswa.add(s);}public String getNama() {return nama;}public ArrayList<Siswa> getSiswa() {return siswa;}}class Siswa {private String nama;ArrayList<MataPelajaran> mapel = new ArrayList<>();public Siswa(String nama) {this.nama = nama;}public void ambilMapel(MataPelajaran m) {mapel.add(m);m.tambahSiswa(this);}public String getNama() {return nama;}}public class Main {public static void main(String[] args) {MataPelajaran pbo = new MataPelajaran("PBO");MataPelajaran bd = new MataPelajaran("Basis Data");Siswa s1 = new Siswa("Aldi");Siswa s2 = new Siswa("Winda");s1.ambilMapel(pbo);s1.ambilMapel(bd);s2.ambilMapel(pbo);for (MataPelajaran m : new MataPelajaran[]{pbo, bd}) {System.out.println("\nMata Pelajaran: " + m.getNama());System.out.println("Diikuti oleh:");for (Siswa s : m.getSiswa()) {System.out.println("- " + s.getNama());}}}}
Penjelasan:
Relasi dua arah: siswa ↔ mapel.Keduanya menyimpan daftar objek masing-masing sehingga hubungan bersifat many-to-many.
D. Kesimpulan
| Jenis Relasi | Contoh | Implementasi |
|---|---|---|
| One-to-One | Siswa ↔ Kartu Pelajar | Penggunaan objek tunggal |
| One-to-Many | Guru → Siswa | ArrayList di dalam kelas induk |
| Many-to-One | Siswa → Kelas | Objek tunggal direferensikan banyak objek |
| Many-to-Many | Siswa ↔ Mata Pelajaran | Dua ArrayList saling terhubung |
Tags
PBTGM