<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Eko Santoso</title><subtitle type="html" /><id>http://geeks.netindonesia.net/blogs/santos2000id/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/santos2000id/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.netindonesia.net/blogs/santos2000id/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2007-11-21T11:50:00Z</updated><entry><title>Domain Model VS Data Mapper</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/domain-model-vs-data-mapper.aspx" /><id>http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/domain-model-vs-data-mapper.aspx</id><published>2007-11-21T05:33:00Z</published><updated>2007-11-21T05:33:00Z</updated><content type="html">&lt;p&gt;Kalau di Data Mapper Kita menggunakan sebuah class bantu untuk melakukan operasi - operasi dari class modelnya, misalnya ada 2 buah class , yang pertama class Customer yang cuma berisi property dari Customer dan yang kedua Class CustomerMapper yang berisi methode operasi untuk class Customer. Berbeda dengan Domain Model , dimana sebuah objek memiliki property dan behavior yang jelas seperti ilustrasi dibawah ini:&lt;/p&gt;
&lt;p&gt;1 . Domain Model&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" size="1"&gt;public class Customer {&lt;br /&gt;&amp;nbsp;&amp;nbsp; // properties&lt;br /&gt;&amp;nbsp;&amp;nbsp; public string FirstName;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public string LastName;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; // methods&lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool Delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp; public Customer Get(int id);&lt;br /&gt;&amp;nbsp;&amp;nbsp; public CustomerCollection Find(Query aQuery);&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" size="1"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font size="3"&gt;1 . Data Mapper&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" size="1"&gt;public class Customer {&lt;br /&gt;&amp;nbsp;&amp;nbsp; // properties&lt;br /&gt;&amp;nbsp;&amp;nbsp; public string FirstName;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public string LastName;&lt;br /&gt;} // Note: no behavior&lt;br /&gt;&lt;br /&gt;public class CustomerManager {&lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool SaveCustomer(Customer aCustomer);&lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool DeleteCustomer(Customer aCustomer);&lt;br /&gt;&amp;nbsp;&amp;nbsp; public Customer GetCustomer(int customerID);&lt;br /&gt;&amp;nbsp;&amp;nbsp; public CustomerCollection Find(Query aQuery);&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;Why don&amp;#39;t try like this :&lt;/p&gt;
&lt;p&gt;3. Fix It&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" size="1"&gt;public class Customer {&lt;br /&gt;&amp;nbsp;&amp;nbsp; // properties&lt;br /&gt;&amp;nbsp;&amp;nbsp; public string FirstName;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public string LastName;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool Delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp; public Customer Get(int id);&lt;br /&gt;&amp;nbsp;&amp;nbsp; public CustomerCollection Find(Query aQuery);&lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;} &lt;br /&gt;&lt;br /&gt;public class CustomerManager {&lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool SaveCustomer(Customer aCustomer) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aCustomer.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; public bool DeleteCustomer(Customer aCustomer) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aCustomer.Delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; public Customer GetCustomer(int customerID) { // etc. }&lt;br /&gt;&amp;nbsp;&amp;nbsp; public CustomerCollection Find(Query aQuery) { // etc.}&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;So, si Objek Customer gak anemic, ada behaviournya, dan implementasi behaviournya dilakukan oleh CustomerMaanager, jadi gak melanggar kaedah OOP, Object CustomerManager bertindak sebagai facade service si objek Customer , baca POEA nya Martin Fowler.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/domain-model-vs-data-mapper.aspx&amp;amp;subject=Domain Model VS Data Mapper" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/domain-model-vs-data-mapper.aspx&amp;amp;t=Domain+Model+VS+Data+Mapper" target="_blank" title="Submit Domain Model VS Data Mapper to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/domain-model-vs-data-mapper.aspx&amp;amp;title=Domain+Model+VS+Data+Mapper" target="_blank" title="Submit Domain Model VS Data Mapper to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/domain-model-vs-data-mapper.aspx&amp;amp;phase=2" target="_blank" title="Submit Domain Model VS Data Mapper to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/domain-model-vs-data-mapper.aspx&amp;amp;title=Domain+Model+VS+Data+Mapper" target="_blank" title="Add Domain Model VS Data Mapper to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=24306" width="1" height="1"&gt;</content><author><name>santos2000id</name><uri>http://geeks.netindonesia.net/members/santos2000id.aspx</uri></author></entry><entry><title>Belajar OOP</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/belajar-oop.aspx" /><id>http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/belajar-oop.aspx</id><published>2007-11-21T04:51:00Z</published><updated>2007-11-21T04:51:00Z</updated><content type="html">&lt;p&gt;Perasaan Gua dari dulu belajar OOP kagak kelar-kelar ampe sekarang. Mulai dari belajar bikin class, property, method, event, terus inherit dengan class yang lain, interface, override, overload. Terus gua belajar separasi, bikin layer di aplikasi, gua kira dengan itu gua udah kuasain OOP ternyata jauh banget dari harapan gua. Ternyata ada lagi yang namanya asosiasi, agregasi, composisi dll. Apalagi kalau dah baca bukunya Eric Evans Domain Driven Design, kayaknya gua belum ada apa-apanya deh. Domain Driven Design this is The Real OOP, baca blognya bang Norman deh keren banget. Sekarang lagi belajar DDD dan ternyata hasilnya asyik juga. &lt;/p&gt;
&lt;p&gt;Banyak Orang yang keliru design aplikasi di drive dari database, mestinya dari domain baru ke infrastruktur (database). Database design mesti adaptasi ke domain bukan sebaliknya. Fokus dengan domain model anda, ORM such as : nHibernate, IBatis, NEO adalah tools yang support akan hal ini.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Rgrds&lt;/p&gt;
&lt;p&gt;ES&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/belajar-oop.aspx&amp;amp;subject=Belajar OOP" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/belajar-oop.aspx&amp;amp;t=Belajar+OOP" target="_blank" title="Submit Belajar OOP to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/belajar-oop.aspx&amp;amp;title=Belajar+OOP" target="_blank" title="Submit Belajar OOP to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/belajar-oop.aspx&amp;amp;phase=2" target="_blank" title="Submit Belajar OOP to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/belajar-oop.aspx&amp;amp;title=Belajar+OOP" target="_blank" title="Add Belajar OOP to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=24295" width="1" height="1"&gt;</content><author><name>santos2000id</name><uri>http://geeks.netindonesia.net/members/santos2000id.aspx</uri></author></entry><entry><title>Microsoft Edan</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/microsoft-edan.aspx" /><id>http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/microsoft-edan.aspx</id><published>2007-11-21T04:50:00Z</published><updated>2007-11-21T04:50:00Z</updated><content type="html">&lt;p&gt;Perasaan Gua belum selesai ongprek 2 .Net framework 2.0 udah keluar .Net framework 3.0 dan sekarang udah 3.5 lagi. Oalah , dunia emang udah edan, apa Microsoft yang edan, hehehe. Microsoft terlalu cepat mengeluarkan tekhnologi yang belum orang butuhkan. Well, la problema, dari Jam 9 Pagi sampai jam 9 malam didepan komputer, ngerjain project ama hands on lab terus. Sampai kapan, dont&amp;#39; know, sampai bosen kali ye. Nice stuff in framework 3.5, yeahh but not bad lah&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/microsoft-edan.aspx&amp;amp;subject=Microsoft Edan" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/microsoft-edan.aspx&amp;amp;t=Microsoft+Edan" target="_blank" title="Submit Microsoft Edan to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/microsoft-edan.aspx&amp;amp;title=Microsoft+Edan" target="_blank" title="Submit Microsoft Edan to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/microsoft-edan.aspx&amp;amp;phase=2" target="_blank" title="Submit Microsoft Edan to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/santos2000id/archive/2007/11/21/microsoft-edan.aspx&amp;amp;title=Microsoft+Edan" target="_blank" title="Add Microsoft Edan to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=24294" width="1" height="1"&gt;</content><author><name>santos2000id</name><uri>http://geeks.netindonesia.net/members/santos2000id.aspx</uri></author></entry></feed>
