OO != Patterns

Dari banyak ketemu dengan para developer, system analyst bahkan software architect..kadang kalanya ada suatu pertanyaan yang kadang membingungkan. pertanyaan tersebut apa hubungan antara Object Oriented dan Patterns? Well, ini pertanyaan sederhana tapi sangat komplek kalau kita mau mendetailkan untuk mendapatkan kedudukan dari keyword tersebut.

Secara singkat jawaban atas pertanyaan tersebut adalah bahwa OO (object oriented) tidak sama bahkan bisa jadi tidak ada hubungannya dengan patterns (OO!=Patterns). Ingat..ingat..ingat..Patterns itu generics yang mana bisa diimplementasikan dengan abstraction yang berbeda-beda sehingga patterns bisa dikatakan sebagai generic solution template yang implementasinya diserahkan ke masing-masing implementator. Akibat dari ini bisa jadi suatu patterns akan diimplementasikan dengan cara yang berbeda. Ambil contoh Observer Patterns, dari gambar dibawah ini menunjukkan 2 model class diagram untuk implementasi Observer Patterns:

Sedangkan OO sendiri merupakan a way of life in software development sehingga seorang developer mesti bisa menggunakan bahkan mengimplementasi filosofi dari OO itu sendiri. Kedudukan OO sendiri terhadap Patterns hanyalah “Helper“ karena didalam pattern bila tidak menguasai OO juga bisa implementasi Pattern alias hajar blah karena target patterns tidak hanya untuk OO software development tetapi juga non OO software development akibatnya banyak Pattern yang tidak berbasis OO.

Dari pengalaman pribadi dan kompilasi beberapa pengalaman teman...semakin memahami filosofi OO maka semakin mudah untuk implementasi Patterns. Apapun kedudukan, level atapun posisi dalam software development...OO bisa menjadi bacaan wajib minimal high level dari OO itu sendiri.

Share this post: | | | |
Published Wednesday, March 15, 2006 9:38 PM by Agus Kurniawan

Comments

# re: OO != Patterns

Thursday, March 16, 2006 2:57 AM by Agus Kurniawan
True. OO != Patterns.

Banyak org "misleading" karena memang Patterns yg paling "terkenal" di kalangan programmer adalah Patterns utk OO Software (a.k.a Design Patterns dari Erich Gamma dkk - GOF).

Padahal Patterns itu ada di banyak level of abstraction:
- Patterns of Enterprise Application Architecture (utk arsitektur aplikasi enterprise -see Martin Fowler)
- Analysis Patterns (utk System Analyst - see Martin Fowler)
- Software Architecture Patterns (utk architecture di level software - which is bisa non OO - see Frank Buschman)
- Enterprise Integration Patterns (utk Messaging based solution - see Gregor Hohpe)
- Domain Driven Design Patterns (utk Domain Modeling - See Eric Evans)
- Unit Testing Patterns
- SOA Patterns
- dll, ada BANYAK JENIS PATTERNS

Patterns kan adalah documented proven solution for common problem. Nah, problem di sini ya bisa OO problem, analysis problem, unit testing problem, SOA problem, etc. Gak necessarily OO.

But, again, kalau memang yg dimaksud adalah Design Patterns utk OO Software (Erich Gamma dkk/GOF), pemahaman OO Principles akan sgt membantu dlm belajar Patterns. OOP (Programming) is just the beginning. Urut2an belajar Patterns di dunia OO:
- OO Language Syntax
- OO Construct
- OO Principles
- OO Patterns

Btw, kalau lihat contoh dari Agus, sebenarnya ada option lain utk Observer Pattern. Bahkan option ini begitu natural bagi .NET Developer. Option ini adalah: DELEGATES dan EVENTS! Di modern programming language spt C#, beberapa Patterns sudah di incorporate di level constructs. Lihat di C# 2.0 dimana Iterators merupakan construct utk Iterator Patten.

Anyway, kalau mau lihat my earlier post about Patterns:
- Apa itu Patterns:
http://blogs.netindonesia.net/norman/articles/1043.aspx
- Belajar Patterns mulai dari mana:
http://blogs.netindonesia.net/norman/articles/271.aspx

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Enter the numbers above:
Powered by Community Server (Commercial Edition), by Telligent Systems