Wednesday, December 08, 2010

Finding object role

Salam

Aku baru je bagi light talk sambil makan tentang kepentingan role dalam team aku, tak tahu la dia org faham ke tak..sebab tak de slide presentation..tak de white board .. yang ada hanyalah lauk pauk :)

Aku nampak keberkesanan apabila dah setkan dlm minda apabila modelkan design antara element penting ialah mendefina role yang terlibat dalam sesuatu context. Pengalaman yang cukup beharga ialah di fasa kedua consultation project aku.Easy for me to write unit test dan easy untuk patch bugs. Walau dalam agreement aku hanyalah consultant tetapi ntah macam maner aku juga terpaksa menjadi developer apabila, beberapa developer lain dapat offer yang lagi bagus.Dalam fasa kedua approach aku ialah Role menjadi first class citizen.Tiada context jika kita tak berupaya mencari Role.

Imbasan sejarah. Aku tahu tentang penggunaan/kepentingan role dahulu sebelum Melaka diiktiraf sebagai negeri Maju iaitu sebelum 20/10/2010 jam 2010. Pada zaman tu Melaka belum ada lagi Eye on Melaka (Skrg nie dah bangkrap dan kena saman), aku pun masa tu programmer biasa naik motosikal 110cc je. Bila aku diperkenalkan dengan buku Java Color Modeling oleh Mr Hamdi <- bukan lagenda kung fu tapi rasa boleh berkungfu hujah le kot :)

Baca first time satu hapah pun aku tak faham..macam baca buka language makhluk asing. So bila benda yang macam nie kena cari penterjemahnya, so aku cari balik yang empunya buku tu Mr Hamdi, so tanya lah sikit lebih kurang sebab nak tanya lebih-lebih aku pun tak tahu nak tanya apa, so kebanyakkan peristiwa berlaku (moment-interval) dalam forum je. Aku join dalam forum color modeling, cuba beberapa model dan minta dia orang comment model aku.. nie 5/6 thn yang lepas, selepas beberapa lama mengodek-godel pasal color modeling dan ada kefahaman sedikit datang pula ajaran baru Domain Driven Design, aku tak ingat macam maner aku leh tahu pasal ajaran nie, so masa nie taraf dah naik sikit so ada kelebihan duit boleh le beli buku DDD.

Setiap kali berubah ajaran, aku akan cuba sesuaikan ajaran lama dengan ajaran baru, dimana ada kelemahan yang dapat ditampung oleh ajaran baru dan fokuskan juga dimana kekuatan ajaran tersebut.So selama lebih kurang 4-5 thn nie bnyk teknik aku gabungkan dimana asas untuk modelkan domain dtg dari color modeling dicantikkan bentuknya dengan DDD.

Tapi masa tu aku masih lagi kurang tumpukan Role sebaliknya Moment-Interval menjadi pilihan. Setelah jatuh dan bangun hasilkan beberapa project yang berscala sederhana ke besar aku dapati key dalam membina domain yang flexible ada di role dan ini terjadi apabila bertemu dengan ajaran DCI.

Role dalam DCI berbeza dengan role dalam color modeling, Role name dia kemungkinan adalah sama cuma perbezaan nya role dalam DCI fully behaviour sahaja dan stateless manakala dalam color modeling role kemungkinan persisted dan bukan stateless.

Aku diberi satu context untuk change status dari satu state ke state yang lain. Pada dasarnya aku boleh define lagi context tu.. as generic context atau concrete context. Kalau generic context ianya seperti menukar sesuatu state dari satu status ke status yang lain, dan jika concrete context ialah menukar status application form dari satu status ke status yang lain. Ada different context - context tersebut.

Generic Context

context ChangeStatus
{
void Bind(I
}



//Thing-Role
role IStatusChangeAble : PlayedBy, PlayedBy
{
void ChangeStatus(self,fromStatus,toStatus);
}

//Party-Role
role IChangeStatus : PlayedBy, PlayedBy
{
void ChangeStatus(self,statusChangeAble);
}

Buat masa nie, nie je lah dulu, ada masa insyAllah aku sambung. Saper nak comment dipersilakan

# contoh code dalam pastie.org

http://www.pastie.org/1358380

0 comments: