Home > Domain Driven Design > Entities (Part 2)

Entities (Part 2)

Penjelasan sebelumnya mungkin akan lebih jelas apabila dijelaskan dengan code. Coba kita ingat ketika kuliah. Sebagai mahasiswa kita memiliki siklus. Diciptakan alias dikukuhkan sebagai mahasiswa. Hidup sebagai mahasiswa. Dan tamat atau lulus sebagai mahasiswa. Hal itu berlaku juga dengan programming. Entities dalam cerita tersebut adalah Mahasiswa.

Ketika kita dikukuhkan sebagai mahasiswa dan terdaftar maka padanannya didunia software adalah…

Mahasiwa elga = new Mahasiswa("Elga Silaban", "TglLahir", "Alamat", "Lain2");

Nah misalkan ada lagi mahasiswa yg memiliki nama yg sama dan attribute yg sama dengan itu apakah dia dikatakan sama ??

Mahasiwa elga2 = new Mahasiswa("Elga Silaban", "TglLahir", "Alamat", "Lain2");

Jawabnya tidak. Emang siapa sih yg mw disamakan dengan yang lain. Jadi kita tidak bisa membedakan nya hanya dari membandingkan bahwa attributenya sama. Harus ada pembeda yang lain. Nah dalam hal ini setiap mahasiswa memiliki identity yaitu NIM alias Nomor Induk Mahasiswa.

Nah sesuatu yg pasti adalah identity tidak pernah berubah selama siklus object. Selama kita menjadi mahasiswa NIM tidak pernah ganti kan ? Coba bayangkan misalnya tiba2 di tengah study NIM tersebut ganti. Waduh. Bisa terjadi kekacauan. Nilai bisa tertukar. Tagihan uang kuliah bisa salah. Dll. Jadi Identity tidak bisa berubah.

Attribute yg lain bisa berubah ga. Bisa. Misalnya data kita pada saat pertama di entry salah. Namanya kurang. Atau tidak sesuai dengan di Akte Kelahiran dll.

Nah misalkan Dosen ingin mengakses data tentang kita. Dia ingin mengetahui riwayat dari Mahasiswa Elga. Apa yg dilakukanya ?? Apakah dia membuat instance baru mahasiswa dengan cara begini ??

Mahasiswa some = new Mahasiswa("Elga Silaban", "TglLahir", "Alamat", "Lain2");

Tentu saja tidak. Entity hanya dicreate sekali. Dan kemudian bisa diretrive. Melalui apa diambil. Darimana. Ketika kita diciptakan sebagai mahasiswa, tentu saja data2 nya disimpan. Ga mungkinlah begitu create object langsung diabaikan. Ya harus disimpan.
Disimpan kemana ? terserah mw ke database. text file. xml. ga masalah. yg penting disimpan. itu bukan urusan dari entity yg merupakan bagian dari domain.

Nah… berarti pertama kali diciptakan harus di simpan kesuatu penampungan. Dan bukan entity itu sendiri yg nyimpan. Kan konyol. Dia yg mw disimpan. Kok nyimpan sendiri. mandiri sekali. hehe. harus ada yg nyimpan. Klo di sekolahan mungkin bagian administrasi. nah jadi code diatas dapat diperbaiki sebagai berikut.

Mahasiswa elga = new Mahasiswa("Elga Silaban", "TglLahir", "Alamat", "Lain2");
repositoryMahasiswa.Save(elga);

Nah sekarang si elga sudah tersimpan di repositoryMahasiswa. Apa itu ? Itu tempat penyimpanan data2 mahasiswa. Karena dia disimpan di sana. Ntar ngambilnya juga dari situ ya. Macam gudang saja. Ga masalah biar aja si elga disimpan di gudang. Bersama tikus2 dan kecoa2. Yg penting dia tetap elga. identitasnya tetap sama. Tul ga. Yg kita care hanya identitasnya. Ga masalah mw luka atau kena rabies digigit sama kecoa. haahah

Nah misalnya ada dosen yg pengen tw tentang si elga. kita lanjut yg tadi. Jadi bagaimana cara si dosen tersebut cari si elga. yah dari repository tadi. gudang yg sama.

Mahasiswa tuyul = repositoryMahasiswa.GetByName("elga");

Nah sekarang si elga sudah ketangkap sebagai tuyul. Kita bisa apa2in tuyul itu sesuka hati kita. mau nanya nama atau alamat, dll. selama methodnya ada. selama dia ngasih ijin. Hehe.

  1. Estheria
    February 13, 2009 at 6:47 am

    Kasian kali To pacarku ko buat jadi objectnya…
    Ckckckck, biar digigit tikus ato kena rabies pun dia,
    tetapnya dia jadi object n aku tetap sayang dia.
    (Begh…:P)

    • weltam
      February 13, 2009 at 6:52 am

      hahahaha ….
      iya to …

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: