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.

1. Association

Association adalah relasi di mana satu kelas memiliki referensi ke kelas lain, namun tidak ada keterikatan eksklusif antara keduanya.

Contoh:

  • 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


2. Aggregation

Aggregation adalah relasi di mana satu kelas terdiri dari kelas lain, tetapi bagian-bagian itu bisa ada sendiri tanpa bergantung pada keseluruhan.

Contoh:

  • 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

3. Composition

Composition adalah relasi yang lebih kuat, di mana bagian (part) tidak bisa berdiri sendiri tanpa keseluruhan (whole). Jika keseluruhan dihapus, bagian juga ikut dihapus.

Contoh:

  • 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

Ringkasan:

  • 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?

⚠️ **GitHub.com Fallback** ⚠️