Modul 11 : Class Diagram Relationship - IvanSholana/Pemrograman-Berbasis-Objek-Sistem-Informasi GitHub Wiki
Berikut adalah contoh kode Java yang menunjukkan relasi Association, Aggregation, dan Composition berdasarkan penjelasan sebelumnya.
Association adalah relasi di mana satu kelas memiliki referensi ke kelas lain, namun tidak ada keterikatan eksklusif antara keduanya.
- Seorang Dokter memiliki banyak Pasien. Namun, Pasien tidak tergantung pada Dokter tertentu.
class Doctor {
private String name;
public Doctor(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Patient {
private String name;
private Doctor doctor; // Association: Patient is associated with Doctor
public Patient(String name, Doctor doctor) {
this.name = name;
this.doctor = doctor;
}
public void printDoctor() {
System.out.println(name + " is treated by Dr. " + doctor.getName());
}
}
public class AssociationExample {
public static void main(String[] args) {
Doctor doctor = new Doctor("Smith");
Patient patient = new Patient("John", doctor);
patient.printDoctor();
}
}
Output:
John is treated by Dr. Smith
Aggregation adalah relasi di mana satu kelas terdiri dari kelas lain, tetapi bagian-bagian itu bisa ada sendiri tanpa bergantung pada keseluruhan.
- Sebuah Kelas terdiri dari beberapa Siswa, tetapi Siswa tetap bisa ada meskipun Kelas dihapus.
import java.util.List;
import java.util.ArrayList;
class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class ClassRoom {
private List<Student> students; // Aggregation: ClassRoom consists of students
public ClassRoom() {
students = new ArrayList<>();
}
public void addStudent(Student student) {
students.add(student);
}
public void listStudents() {
for (Student student : students) {
System.out.println(student.getName());
}
}
}
public class AggregationExample {
public static void main(String[] args) {
Student s1 = new Student("Alice");
Student s2 = new Student("Bob");
ClassRoom classRoom = new ClassRoom();
classRoom.addStudent(s1);
classRoom.addStudent(s2);
classRoom.listStudents(); // List students in the class
}
}
Output:
Alice
Bob
Composition adalah relasi yang lebih kuat, di mana bagian (part) tidak bisa berdiri sendiri tanpa keseluruhan (whole). Jika keseluruhan dihapus, bagian juga ikut dihapus.
- Sebuah Rumah terdiri dari beberapa Ruangan. Jika Rumah dihapus, Ruangan juga akan hilang.
class Room {
private String name;
public Room(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class House {
private Room livingRoom;
private Room bedRoom;
public House() {
// Composition: House owns rooms and they are created inside the house
livingRoom = new Room("Living Room");
bedRoom = new Room("Bed Room");
}
public void describeHouse() {
System.out.println("House has a " + livingRoom.getName());
System.out.println("House has a " + bedRoom.getName());
}
}
public class CompositionExample {
public static void main(String[] args) {
House house = new House(); // If house is destroyed, rooms are also destroyed
house.describeHouse();
}
}
Output:
House has a Living Room
House has a Bed Room
- Association: Kelas memiliki referensi terhadap kelas lain tetapi tidak ada kepemilikan eksklusif. Contoh: Dokter dan Pasien.
- Aggregation: Kelas terdiri dari objek-objek kelas lain, tetapi objek-objek tersebut bisa berdiri sendiri. Contoh: Kelas dan Siswa.
- Composition: Kelas terdiri dari bagian-bagian yang tidak bisa berdiri sendiri, jika kelas utama dihapus, bagian-bagian juga ikut hilang. Contoh: Rumah dan Ruangan.
Apakah penjelasan ini sudah cukup jelas?