AND AGGREGATION
TF4235- Pemrograman Berorientasi Obyek
Informatics Department – Petra Christian University
ASSOCIATION
• Association atau asosiasi adalah hubungan antara dua class terpisah yang terbentuk
melalui objeknya.
• Asosiasi bisa berupa:
one-to-one,
one-to-many,
many-to-one,
many-to-many.
• Pada pemrograman berorientasi objek, objek berkomunikasi dengan objek lainnya
menggunakan fungsi dan services yang disediakan oleh objek.
• Composition (komposisi) dan agregation (agregasi) adalah dua bentuk dari asosiasi
seperti diperlihatkan pada gambar.
ASSOCIATION:
AGGREGATION - COMPOSITION
Association
Aggregation
Composition
ASSOCIATION EXAMPLE
• Contoh : 2 class terpisah
Class Bank dan
Class Employee
• Akan ber-asosiasi melalui objeknya.
• Bank dapat memiliki banyak Employee, jadi asosiasinya adalah one-to-many.
ASSOCIATION EXAMPLE
(UML/CLAS DIAGRAM)
Bank Employee
*
1
class Association
{
public static void main (String[] args)
{
Bank simpanPinjam = new Bank("Sejahtera");
Employee pegawai = new Employee("Nona");
Hasil
System.out.println(pegawai.getEmployeeName() +
" is employee of " + simpanPinjam.getBankName());
}
}
ASSOCIATION EXAMPLE
• Asosiasi adalah hubungan yang bisa saling menggunakan di dalam sebuah class, dan
tidak saling memiliki.
• Pada contoh tersebut class Bank dan class Employee, dilihat dari kardinalitasnya,
satu Bank bisa memiliki banyak Employee. Apabila class Bank dihilangkan, Class
Employee masih bisa digunakan karena tidak saling memiliki.
• Asosiasi adalah hubungan yang terlemah dibandingkan denganhubungan aggregasi
dan komposisi.
AGGREGATION
• Agregasi adalah bentuk khusus dari asosiasi dimana:
1. Agregasi merepresentasikan relasi atau hubungan “Has-A”.
2. Agregasi adalah unidirectional asosiasi atau relasi satu arah. Contoh,
department dapat memiliki siswa tetapi tidak sebaliknya.
3. Pada agregasi, kedua entries dapat berdiri sendiri, yang artinya mengakhiri satu
entitas tidak akan memengaruhi entitas lainnya.
• Agregasi digunakan terutama pada saat dibutuhkan adanya code-reuse.
AGGREGATION EXAMPLE
• Contoh: 3 Class:
Class Student
Class Department
Class Institute
• Akan ber-agregasi melalui objeknya.
• Institute akan memiliki banyak Department, demikian juga sebuah Department akan
memiliki banyak Student
AGGREGATION EXAMPLE
• Didalam contoh, terdapat sebuah institute yang memiliki beberapa department
seperti CSE, EE. setiap department memiliki beberapa student.
• Class Institute yang memiliki referensi terhadap object atau beberapa object (list of
object) dari Class Department. Artinya Class Institute berasosiasi dengan Class
Department melalui objeknya.
• Class Department juga memiliki referensi dari objek atau beberapa objek (list of
object) dari Class Student atau dengan kata lain berasosiasi dengan Class Student
melalui objeknya.
AGGREGATION EXAMPLE
(UML/CLAS DIAGRAM)
Hubungan agregasi digambarkan dengan diamond
berlubang, yang ditempelkan pada class yang memiliki
object dari class yang ditunjuk, tidak dibubuhkan panah
pada ujung lainnya. Kemudian juga dibubuhkan
kardinalitas seperti pada hubungan asosiasi.
Department * Student * ID
Name
1 1
AGGREGATION EXAMPLE
Class Student
{
String name;
int id ;
String dept;
}
}
import java.util.List;
/* Departement class mengandung daftar dari student object. Hal ini berasosiasi dengan student class melalui objeknya */
class Department
{
String name;
private List<Student> siswa;
Department(String name, List<Student> siswa)
{
this.name = name;
this.siswa = siswa;
}
/* Institute class mengandung daftar dari Department Object. Hal ini berasosiasi dengan Department class melalui
objeknya */
class Institute
{
String instituteName;
private List<Department> jurusan;
}
import java.util.ArrayList;
import java.util.List;
/* main method */
class Aggregation
{
public static void main (String[] args)
{
Student s1 = new Student("Mia", 1, "CSE");
Student s2 = new Student("Priya", 2, "CSE");
Student s3 = new Student("John", 1, "EE");
Student s4 = new Student("Rahul", 2, "EE");
Library Book
Book
* Title
Author
1
COMPOSITION EXAMPLE
class Book import java.util.List;
{
public String title; /* Libary class mengandung list of books */
public String author; class Library
{
Book(String title, String author) /* referensi untuk memperlihatkan list of books */
{ private final List<Book> books;
this.title = title;
this.author = author; Library (List<Book> books)
} {
} this.books = books;
}
/* main method */
class Composition
{
public static void main (String[] args)
{
/* menciptakan objek dari Book class */
Book b1 = new Book("EffectiveJ Java", "Joshua Bloch");
Book b2 = new Book("Thinking in Java", "Bruce Eckel");
Book b3 = new Book("Java: The Complete Reference", "Herbert Schildt");
COMPOSITION EXAMPLE
/* menciptakan daftar yang mengandung no. dari book */
List<Book> books = new ArrayList<Book>();
books.add(b1);
books.add(b2);
books.add(b3);
Hasil
COMPOSITION EXAMPLE
• Pada contoh class library dapat memiliki beberapa book pada subjek yang sama
ataupun berbeda.
• Jadi, jika class Library dihapus maka semua book dalam library tentu akan ikut
terhapus atau dengan kata lain class book tidak bisa exist tanpa library.
AGGREGATION VS COMPOSITION
1. Dependency: Agregasi menyiratkan hubungan dimana child dapat exist mandiri
dari parent. Contoh, Bank dan Employee, jika Bank dihapus maka Employee akan
tetap exist. Komposisi menyiratkan hubungan dimana child tidak bisa exist secara
mandiri tanpa parent. Contoh: Manusia dan jantung, jantung tidak bisa exist jika
terpisah dari manusia.
2. Tipe dari relasi: Aggregasi relasi adalah "has-a" dan komposisi "part-of" relasi.
3. Tipe dari asosiasi: Komposisi adalah asosiasi yang bersifat kuat (strong) dan
agregasi adalah asosiasi yang bersifat lemah (weak).
REFERENSI
• Malhotra, Sachin & Saurabh Choudhary, Programming in Java, 2nd Ed., Oxford University
Press, 2014.
• Samoylov, Nick, Learn Java 12 Programming, Packt, Birmingham-Mumbay, 2019.
• https://www.geeksforgeeks.org/
• https://www.baeldung.com/java-composition-aggregation-association
• https://www.elfanmauludi.id/2019/04/asosiasi-komposisi-dan-agregasi-pada.html
• https://medium.com/skyshidigital/hubungan-antar-kelas-pada-java-bbe2131e592b