Archive
Programming to Interface
Baru saja selesai skimming buku Interface Oriented Design. Buku ini menuntas habis mengenai cara kita membuat sistem dengan interface.
Introduction
Di awal buku ini ada contoh mengenai Pizza Ordering. Skenarionya adalah kira2 sebagai berikut.
Kejadiannya ini karena malam2 lapar trus pengen pesan pizza favourite.
Nelepon deh..
Pizza guy : Yapz
Aku : Aku mw pesan pizza jumbo
Pizza : Toppings?
Aku : Pepperoni dan Mushrooms
PIzza : Alamat?
Aku : 1 Oak street
Pizza : 30 menit lagi akan diantar.
Nah.. kita coba bangun interface untuk PizzaOrdering tersebut. Hampir di setiap pemesanan pizza akan mendapati model percakapan seperti itu. Pemesanan pizza memiliki interface yg sama tetapi hanya implementasinya saja yg berbeda. Misalkan kita menelpon pizza yg lain maka yg kita hadapi kemungkinan besar adalah percakapan di atas.
public interface PizzaOrdering { void SetSize(Size size); void SetToppings(Toppings toppings); void SetAddress(Address address); DateTime GetTimeDelivered(); }
Nah.. sekarang kita udh punya interfacenya.. Trus bagaimana kita mendapatkan implementasi dari interface tersebut ? Kita tentu saja butuh Finder. Kita cari di buku telepon atau buku informasi mengenai toko pizza. Dari situ kita akan dapat memilih mana toko pizza yg akan kita hubungi. And then dial the number… Cara kita meng-order pizza tersebut sama tetapi perlakuan toko terhadap proses tersebut kemungkinan besar berbeda. Interfacenya sama tetapi implementasinya berbeda.
Read more…
Domain Event
Saya menemukan artikel bagus mengenai domain event dan hal-hal yg berhubungan dengan pemodelan event pada oo.
PoEAA
Pengenalan Mengenai Event
Domain Event
Dengan memperkenalkan event pada system kita memperoleh berbagai macam keuntungan. Salah satu yg paling mecolok adalah loose couple.
Read more…
Greg Young DDD version
Cara yg terbaik untuk belajar adalah dengan melihat bagaimana orang melakukannya. Nah sama halnya dengan DDD. Salah satu pakarnya adalah greg young. Bisa diliat di sini. Ini salah satu favouriteku di DDD. Hehehe.
Nah saya baca2 dari blognya. Ide yg dapat saya tangkap salah satunya adalah mengenai Command Query Separation(CQS). Pemisahan method untuk membaca atau read only dengan method untuk write(mengubah state).
Nah jadi hal ini diterapkan pada DDD. Mmm… jadi berdasarkan penjelasannya pada Repository hanya ada satu operasi Read saya yaitu method read untuk meload instance dari aggregate root berdasarkan Unique IDNy. Wow. Pdahal selama ini saya menjejali repository dengan method2 yg bertujuan untuk read. Tapi ini hanya satu. Dan itupun untuk retrive berdasarkan ID.
Read more…
SOA vs OO
Kenapa butuh SOA SOA lebih ke integrasi antara aplikasi (Top Down) OO lebih kea rah mendesign satu aplikasi. (Bottom up) Jadi keduanya memecahkan permasalahan yg berbeda dan tidak saling menggantikan.
OO memandang system dalam group bentuk class, component, packages, interfaces. Interaksi antarnya adalah invoking method dari object. Kita tidak langsung mengakses datanya. Jadi lebih cocok ditujukan untuk design satu aplikasi, in process bukan interprocess (distributed) berjalan dalam satu mesin
Read more…
Patterns for Accounting (Part 1)
Sebagian besar software yg ada di dunia ini berhubungan dengan duit atau uang. Tul ga ? Manusia emang terobsesi ya dari dulu sama yg namanya uang. Bahkan untuk itung2 uang aja ada profesi khusus. Padahal yg diitung bukan uang dia. Hahahaha. Accounting nama profesinya. Nama jurusnnya akuntansi. Mata pelajaran yg tidak aku suka di SMU. Huff
Fundamental konsepnya dari accounting itu double-entry bookeeping. dicetuskan oleh Luca Pacioli orang italia kyknya. Intinya kita merecord berbagai jenis tempat uang atau pot uang. Pot ?? macam bunga aja. Iya tempat penyimpanan maksudnya. Dan perpindahan uang tersebut juga ditrack. Jadi uang itu ga bisa hilang gitu aja. Meskipun hanya 200 rupiah. Wuih sadis banget. detail sekali
Read more…