Home > Domain Driven Design > Entities (Part 1)

Entities (Part 1)

Ini adalah kategori dari object yg memiliki identitas. Identitas tersebut akan tetap sama selama software berjalan. Jadi bukan nilai dari attribute nya yg penting. Tapi kelansungan hidupnya dan identitasnya.

OOP menyimpan instance dari object di dalam memory. Kita dapat merujuk object tersebut dengan reference ke object tersebut. Reference ini unik untuk setiap object. Tapi kita tidak dapat menjamin bahwa object tersebut akan tetap di sana kan ? Object setiap saat bisa dilepas dari memory atau diciptakan kembali. Nah jadi kita tidak dapat menggunakan reference sebagai identity. Ketika object yg dulu dilepas dari memory dibuat lagi, bagaimana kita dapat mengetahui object tersebut adalah sama ? Dengan identitasnya.

Misalnya kita memiliki sebuah account di bank. Bank harus dapat membedakan masing2 nasabahnya. Meskipun namanya sama, alamatnya sama atau attribute yg lain sama. Tetap harus dapat dibedakan apakah ini benar2 nasabah yg sama atau tidak. Coba bayangkan jika tidak bisa dibedakan. Wah. Akan terjadi kekacauan. Salah mentransfer, mengurangi saldo dll.

Nah klo di database setiap row dibedakan oleh primary key.

Tetapi object2 apa saja yg merupakan entity ? Object yg mempunyai identitas. Hehe. Klo ini ya bolak balik. Cara menentukan object tersebut entity atau tidak tergantung dengan contextnya.

Jika object tersebut hanya berisikan dengan informasi2 saja. Maka dia bukan entity. Contoh temperature, uang. Uang hanya dinilai dari attributenya saja. Warna juga.

Entity tidak dapat saling menggantikan. Contohnya account a diganti dengan account b. Wah.. bisa terjadi pertumpahan darah. Dan tidak bisa dicreate seenaknya. Sama seperti di dunia nyata manusia hanya dilahirkan sekali. Ga bisa berulang ulang.

Jangan sampai salah memilih identitas. Data bisa corrupt. Contoh nya apa yg kita pilih menjadi identitas person. namanya ?? ga karena nama bisa aja sama. tanggal lahir ?? sama aja. banyak yg sama. nah itulah gunanya ktp. hehehe. ada nomor penduduk.

Identitas juga bisa merupakan gabungan dari beberapa attribute. yg membuatnya unik dari object lain. Hanya ada satu object yg seperti itu. tidak ada duanya.

Identitas tidak bisa berubah. Contohnya bank account number tidak akan berubah. Dan account bisa dikenali dari account number. Account dapat exist di memory atau di kirim ke database. Tetapi itu tetap object yg sama. karena identitasnya sama.

jadi menciptakan entity pada software berarti membuat identity. Biasanya identity dibuat berdasarkan attribute dari object, kombinasi dari attribute, attribute yg memang sengaja dibuat untuk identitasnya, dan bisa juga behaviour. Dua object dengan identity yg sama adalah sama bagi sistem.

Identitas haruslah dicreate unik. Bisa saja merupakan primary key pada database. Dicreate secara auto generate. dll. Bisa juga dicreate oleh user.

Jadi kita harus mendefinisikan operasi atau method yg berfungsi membandingkan dua buah object sama atau tidak berdasarkan identitasnya.

Entity merupakan object yg penting pada domain model dan harus dipertimbangkan dari awal pemodelan. Juga sangat vital untuk menentukan object tersebut adalah entity atau tidak.

  1. No comments yet.
  1. No trackbacks yet.

Leave a comment