A. Pengertian Aggregation Relationship
Agregasi merupakan hubungan antara dua kelas yang paling
tepat digambarkan sebagai "memiliki-a" dan hubungan "seluruh /
bagian". Ini adalah versi yang lebih khusus dari hubungan
asosiasi . Kelas agregat berisi referensi ke kelas lain dan dikatakan
memiliki kepemilikan dari kelas itu. Setiap kelas yang direferensikan dianggap
sebagai bagian dari kelas-agregat
.
B. Komponen Aggregation Relationship
·
Komposisi
Seperti
kita ketahui, warisan memberi kita 'adalah-sebuah' hubungan. Untuk membuat
pemahaman tentang komposisi lebih mudah, kita dapat mengatakan komposisi yang
memberi kita hubungan 'bagian-of'. Komposisi ditampilkan pada diagram UML
sebagai berlian diisi (lihat Gambar 1).
Jika
kami akan pergi untuk model mobil, akan masuk akal untuk mengatakan bahwa mesin
adalah bagian-mobil. Dalam komposisi, masa pakai bagian (Engine) dikelola oleh
(Mobil) keseluruhan, dengan kata lain, ketika mobil hancur, Mesin hancur
bersamanya. Jadi bagaimana kita mengungkapkan hal ini di C #?
public class Engine
{
. . .
}
{
. . .
}
public class Car
{
Engine e = new
Engine();
.......
}
Seperti yang Anda lihat dalam kode
contoh di atas, Mobil mengelola masa Engine.
·
Agregasi
Jika warisan memberi kita 'ini-a' dan komposisi memberi
kita 'bagian-dari, kita bisa berpendapat bahwa agregasi memberi kita'
memiliki-sebuah 'hubungan. Dalam agregasi, masa bagian yang tidak dikelola oleh
keseluruhan. Untuk membuat lebih jelas ini, kita perlu contoh. Selama 12 bulan
terakhir + Saya telah terlibat dengan implementasi sistem CRM, jadi saya akan menggunakan
bagian ini sebagai contoh.
Sistem CRM memiliki database pelanggan dan database yang
terpisah yang menyimpan semua alamat dalam wilayah geografis. Agregasi akan
masuk akal dalam situasi ini, sebagai Nasabah memiliki-a 'Alamat. Ini tidak
masuk akal untuk mengatakan bahwa Alamat adalah 'bagian-dari' Nasabah, karena
tidak. Pertimbangkan cara ini, jika pelanggan tidak lagi ada, apakah alamatnya?
Saya berpendapat bahwa tidak ada lagi. Agregasi ditampilkan pada diagram UML
sebagai berlian terisi (lihat Gambar 2).
Jadi bagaimana kita mengekspresikan konsep agregasi di C
#? Yah, itu sedikit berbeda dengan komposisi. Perhatikan kode berikut:
Masyarakat
public class Address
{
. . .
}
{
. . .
}
public class Person
{
private
Address address;
public
Person(Address address)
{
this.address
= address;
}
. . .
}
Orang kemudian
akan digunakan sebagai berikut:
Address
address = new Address();
Person person = new Person(address);
Person person = new Person(address);
or
Person
person = new Person( new
Address() );
Seperti yang Anda lihat, Orang tidak mengelola masa Alamat. Jika Orang
hancur, Alamat masih ada. Skenario ini tidak memetakan dengan baik ke dunia
nyata
C. Contoh Implementasi Aggregation
Relationship Dalam Program
Kode: CPP
#include<iostream.h> class Employee { public: Employee(char *name){ cout<<"Employee::ctor\n"; myName_p = new char(sizeof(strlen(name))); myName_p = name; } char* disp(){return(myName_p);}; ~Employee() { cout<<"Employee:dtor\n\n"; delete (myName_p); } private: char *myName_p; }; class Company { public: Company(char * compName, Employee* emp){ cout<<"Company::ctor\n"; name = new char(sizeof(strlen(compName))); name = compName; myEmp_p = emp; }; ~Company() { cout<<"Company:dtor\n\n"; myEmp_p = NULL; }; private: char *name; Employee *myEmp_p; }; int main() { cout<<"\nExample of Aggregation Relationship \n"; cout<<"-----------------------------------------\n\n"; { cout<<"Here, an Employee-Keerti works for Company-MS \n"; Employee emp("Keerti"); { Company comp("MS", &emp); } // here Company object will be deleted, whereas Employee object is still there cout<<"At this point Company gets deleted...\n"; cout<<"\nBut Employee-"<<emp.disp(); cout<<" is still there\n"; } //here Employee object will be deleted return(0); } output: ------- Example of Aggregation Relationship ----------------------------------------- Here, an Employee-Keerti works for Company-MS Employee::ctor Company::ctor Company:dtor At this point Company gets deleted... But Employee-Keerti is still there Employee:dtor
Kode: CPP
#include<iostream.h> class House; class Room { public: Room() { }; static void createRoom_v(Room* (&room), House* hse, char* name) { room = new Room(hse, name); } Room(House* hse, char* myName) { cout<<"Room::ctor\n"; myHse_p = hse; if(NULL != myHse_p) { name_p = new char(sizeof(strlen(myName))); name_p = myName; } else { cout<<"Oops House itself is not Created Yet ...\n"; } }; ~Room() { cout<<"Room:dtor\n"; myHse_p = NULL; delete (name_p); }; void disp() { cout<< name_p; cout<<"\n"; } static void initList_v(Room *(& roomsList_p)[3]) { roomsList_p[3] = new Room[3]; } private: House * myHse_p; char * name_p; }; class House { public: House(char *myName) { cout<<"House::ctor\n"; name_p = new char(sizeof(strlen(myName)));; name_p = myName; Room::initList_v(roomsList_p); Room* myRoom; Room::createRoom_v(myRoom, this, "Kitchen"); roomsList_p[0] = myRoom; Room::createRoom_v(myRoom, this, "BedRoom"); roomsList_p[1] = myRoom; Room::createRoom_v(myRoom, this, "Drwaing Room"); roomsList_p[2] = myRoom; } ~House() { cout<<"House:dtor\n"; unsigned int i; cout<<"Delete all the Rooms ...\n"; for(i=0; i<3; ++i) { if(roomsList_p[i] != NULL) { delete (roomsList_p[i]); } } delete [] roomsList_p; delete (name_p); } void disp() { cout<<"\n\nName of the House :"<<name_p; if(roomsList_p != NULL) { unsigned int i; cout<<"\n\nRooms details...\n"; for(i=0; i<3; ++i) { if(NULL != roomsList_p[i]) { roomsList_p[i]->disp(); } } cout<<"\n\n"; } } private: char* name_p; Room* roomsList_p[3]; }; int main() { cout<<"\nExample of Composition Relationship\n"; cout<<"-----------------------------------------\n\n"; House hse("Vishranti Nilaya"); cout<<"\n\nHouse details...\n"; hse.disp(); cout<<"Here House itself creates the Rooms and Deletes as well, before it gets deletd...\n"; return(0); } output: ------- Example of Composition Relationship ----------------------------------------- House::ctor Room::ctor Room::ctor Room::ctor House details... Name of the House :Vishranti Nilaya Rooms details... Kitchen BedRoom Drwaing Room Here House itself creates the Rooms and Deletes as well, before it gets deletd... House:dtor Delete all the Rooms ... Room:dtor Room:dtor Room:dtor
Alamat blog : http://aggregationrlsp.blogspot.com/2012/06/v-behaviorurldefaultvmlo.html
DAFTAR PUSTAKA