Anda di halaman 1dari 29

ASSOCIATION, COMPOSITION

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

Hubungan asosiasi digambarkan dengan satu garis tidak putus -


putus dan tidak memiliki anak panah pada kedua ujungnya.
Kemudian juga dibubuhkan kardinal pada garis tersebut.
ASSOCIATION EXAMPLE
class Bank class Employee
{ {
private String name; private String name;

/* bank name */ /* employee name */


Bank(String name) Employee(String name)
{ {
this.name = name; this.name = name;
} }

public String getBankName() public String getEmployeeName()


{ {
return this.name; return this.name;
} }
} }
ASSOCIATION EXAMPLE

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.

Institute Department Student

Department * Student * ID
Name
1 1
AGGREGATION EXAMPLE
Class Student
{
String name;
int id ;
String dept;

Student(String name, int id, String dept)


{
this.name = name;
this.id = id;
this.dept = 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;
}

public List<Student> getStudents()


{
return siswa;
}
}
import java.util.List;

/* Institute class mengandung daftar dari Department Object. Hal ini berasosiasi dengan Department class melalui
objeknya */

class Institute
{

String instituteName;
private List<Department> jurusan;

Institute(String instituteName, List<Department> jurusan)


{
this.instituteName = instituteName;
this.jurusan = jurusan;
}
/* menghitung jumlah siswa dari seluruh department yang diberikan institute */
public int getTotalStudentsInInstitute()
{
int noOfStudents = 0;
List<Student> siswa;
for(Department dept : jurusan)
{
siswa = dept.getStudents();
for(Student s : siswa)
{
noOfStudents++;
}
}
return noOfStudents;
}

}
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");

/* membuat daftar dari CSE student */


List <Student> cse_students = new ArrayList<Student>();
cse_students.add(s1);
cse_students.add(s2);
/* membuat daftar dari EE student */
List <Student> ee_students = new ArrayList<Student>();
ee_students.add(s3);
ee_students.add(s4);

Department CSE = new Department("CSE", cse_students);


Department EE = new Department("EE", ee_students);

List <Department> jurusan = new ArrayList <Department>();


jurusan.add(CSE);
jurusan.add(EE);

/* menciptakan instance dari institute */


Institute sekolah = new Institute("Sekolah Teknika", jurusan);

System.out.print("Total students in institute: ");


System.out.print(sekolah.getTotalStudentsInInstitute());
} Hasil
}
AGGREGATION
• Jika hubungan asosiasi adalah saling menggunakan, di agregasi hubungan yang
terjadi adalah memiliki. Dilihat pada gambar diagram kelas di atas, bahwa class
Department memiliki class Mahasiswa sebagai variable nya. Meskipun kelas
Department memiliki kelas Mahasiswa, namun kedua kelas tersebut dapat dibuat
secara independen.
• Bisa dilihat bahwa pada class Department, menggunakan kelas Mahasiswa sebagai
variable di dalamnya, sehingga bisa dibilang bahwa kelas Jurusan memiliki kelas
Mahasiswa.
• Apabila class Mahasiswa dihapus maka class Department tidak dapat berdiri, namun
tidak terjadi sebaliknya, kelas Mahasiswa masih bisa berdiri tanpa terdapat kelas
Jurusan.
COMPOSITION
• Komposisi adalah bentuk terbatas dari sebuah agregasi dimana dua entitas saling
bergantung pada entitas lainnya.
1. Komposisi merepresentasikan relasi “part-of”, “belongs-to”, atau “is-a”.
2. Dalam komposisi, kedua entitas bersifat dependent atau bergantung terhadap entitas
lainnya.
3. Ketika terdapat komposisi antara dua entitas, maka komposisi object tidak bisa exist
tanpa entitas lainnya.
COMPOSITION EXAMPLE
• Contoh: 2 Class:
 Class Book
 Class Library
• Akan dikomposisikan melalui objeknya.
• Library mempunyai beberapa Book
COMPOSITION EXAMPLE
(UML/CLAS DIAGRAM)
Hubungan Komposisi digambarkan menggunakan diamond
penuh (berisi) yang menyatakan memiliki bagian seperti pada
Library Book
agregasi, tapi lebih spesial. Kemudian menggunakan garis
Book Title tidak putus ke kelas yang dimiliki.
---------- ---------- apa yang menjadikan hubungan komposisi lebih spesial
adalah karena setiap kelas tidak dapat berdiri sendiri.

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;
}

public List<Book> getTotalBooksInLibrary(){


return books;
}
}
COMPOSITION EXAMPLE
import java.util.ArrayList;
import java.util.List;

/* 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);

Library library = new Library(books);

List<Book> bks = library.getTotalBooksInLibrary();


for(Book bk : bks){

System.out.println("Title : " + bk.title + " and "


+" Author : " + bk.author);
}
}
}
COMPOSITION EXAMPLE

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

Anda mungkin juga menyukai