Object Oriented System
Object Oriented Programming adalah sebuah paradigm pemrograman yang menggunakan konsep objek dan interaksi antar objek dalam membuat program atau software [Wikipedia, the free encyclopedia, "Design pattern (computer science)"].
Object Oriented System Development memecahkan permasalahan dan kebuntuan pada software development khususnya dalam menangani masalah : reusability, extensibility, and maintainability.
Pada Object Oriented System Development, ada beberapa best-practice yang dapat diikuti. Diantaranya :
- Menggunakan Framework
- Menggunakan Design Patern
- Modelling Language yang sesuai
- Dsb
Yang akan dikembangkan lebih lanjut adalah best-practice dengan menggunakan Design Pattern.
Software dan Design Patterns
“Design Patterns adalah solusi umum dan dapat diulang untuk menyelesaikan masalah umum yang terjadi saat development software” Wikipedia, the free encyclopedia, “Design pattern (computer science)”].
A “pattern” has been defined as “an idea that has been useful in one practical context and will probably be useful in others.” [M.Fowler, "Analysis Patterns - Reusable Object Models", Addison Wesley].
Design Pattern dapat langsung diterjemahkan dalam bentuk code, sebuah design pattern tidak dapat menyelesaikan masalah secara maksimal. Harus ada kombinasi yang sesuai antar desugn pattern agar menghasilkan solusi yang maksimal. Maka, dibutuhkanlah pengetahuan akan design pattern dan kegunaannya. Seorang Software Engineer harus menguasai kapan dan bagaimana menggunakan design pattern. Dalam hal ini Software Engineer juga harus menguasai seluk beluk Pemrograman Berorientasi Objek (OOP), termasuk diantaranya Class, Objek, Method, Inheritance, Message Passing, Enkapsulasi, Abstraction dan Polymorphism.
Sebuah system berbasis Object yang terdesain dengan baik biasanya memiliki beberapa pattern didalamnya. Pattern-pattern dalam OOP ini terbagi dalam 5 kategori, yang tiap-tiap kategori memiliki fungsionalitas. Biasanya pattern-pattern dalam satu kategori saling melengkapi karena pattern-pattern tersebut memiliki prinsip dan struktur kode yang sama, diantaranya jenis-jenis design pattern berdasarkan kategorinya
- Fundamental Design Patterns adalah konsep umum dimana pattern ini dibutuhkan oleh hampir pattern lain.
- Interface
- Container
- Delegation
- Architectural Patterns menyatakan pengorganisasian atau skema standar untuk system software. pattern ini menyediakan subsistem yang terdefinisi dengan baik, men-spesifikasikan tugas dari masing-masing object, rules dan guidelines dalam mengorganisasikan relasi antar objectnya.
- Model View Controller (MVC)
- Dependency Injection
- Structural Design Patterns mendefinisikan bagaimana class dan object dirangkai dan disusun bersama dari struktur yang lebih luas. [GoF, "Design Patterns", Addison Wesley, ISBN 0201633612]
- Facade
- Decorator
- Proxy
- Data Access Object
- Transfer Object
- Creational Design Patterns mengabstraksikan instansiasi dari proses. Membuat system dapat menjadi indepent dari masalah : bagaimana objectnya dibuat, dikomposisikan, dan direpresentasikan. [GoF, "Design Patterns", Addison Wesley, ISBN 0201633612]
- Factory Method
- Abstract Factory
- Objectpool
- Singleton
- Behavioral Design Patterns yang mengatur hubungan dan tugas dari tiap object. [GoF, "Design Patterns", Addison Wesley, ISBN 0201633612]
- Iterator
- Observer
- Event Listener
- Strategy
Pattern Map
Diagram yang menunjukan Hubungan antar tiap Design pattern berdasarkan dokumentasi dan notasi dari Zimmer’s classifications and relationships. [Zimmer, Walter (1995), "Relationships between Design Patterns", from "Pattern Languages of Program Design", Addison-Wesley.] terdapat 3 type relasi dari design pattern:
- uses (pattern yang digunakan oleh -),
- combine (pattern yang dapat digunakan oleh -),
- similar (patterns yang memiliki kesamaan dalam design).

Zimmer's classifications and relationships
Hal yang membedakan relasi antar design pattern dari diagram diatas :
Directions of relationships
Arah dari tiap relasi, bisa unidirectional, backwards or forwards atau bidirectional. Arah tanda panah menunjukan kemana relasi tersebut menuju (membutuhkan).
Strength of relationship
Hubungan ketergantungan antar tiap design pattern. Pada kasus ini dibedakan menjadi design pattern yang bisa berdiri sendiri, atau yang membutuhkan design pattern lain.
Diagram Lain :

References :
M.Fowler, “Analysis Patterns – Reusable Object Models”, Addison Wesley, ISBN 0201895420
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (GOF – “Gang of Four”), “Design Patterns, Elements of Reusable Object-Oriented Software”, Addison Wesley
R. Weinreich, Concepts and Techniques for Object-oriented Software Development (Illustrated by an Application Framework for Process Automation), Universitätsverlag Rudolf Trauner, Linz/Wien 1993, ISBN 3-85320-675-1.
Zimmer, Walter (1995), “Relationships between Design Patterns”. Pattern Languages of Program Design, Addison-Wesley
Object-Oriented Programming – Wikipedia
Design Patterns – Wikipedia




