Kamis, 26 April 2012

Modul 4 - Structural Patterns (Decorator Pattern, Fa├žade Pattern)


4.1. Decorator Patterns
                Maksud dari pola ini adalah dengan menambahkan tanggung jawab tambahan secara dinamis untuk objek. Memperluas fungsionalitas obyek bisa dilakukan secara statis (pada saat kompilasi) dengan menggunakan warisan namun mungkin diperlukan untuk memperluas fungsi suatu objek secara dinamis (saat runtime) sebagai objek yang digunakan. Pola dekorator berlaku ketika ada kebutuhan untuk secara dinamis menambahkan serta menghapus tanggung jawab ke kelas, dan ketika subclassing tidak mungkin karena jumlah besar dari subclass yang dapat terjadi. Tujuan dari decorator pattern adalah menciptakan suatu mata rantai objek,  dimana setiap objek mempunyai object responsible  pada fungsi objek berikutnya. Konteks dari pola ini adalah diinginkan untuk memperkaya behaviour dari suatu class, objek komponen  terdekorasi bisa digunakan sama seperti  objek komponen biasa, tanggung jawab dari proses dekorasi tidak diinginkan  ada pada class  komponen, kemungkinan ada proses dekorasi yang ditambahkan di masa depan yang tak bisa diperkirakan dan harus diantisipasi.
Tujuan Pattern ini adalah  menciptakan suatu mata rantai object, dimana setiap object mempunyai objects responsible pada fungsi objek berikutnya.( The  Decorator  attaches additional responsibilities to an object dynamically.)

Modul 3 - Structural Patterns (Adapter, Bridge, Composite)



3.1.  Adapter Pattern
Menurut Gang of Four, Adapter pattern digunakan untuk mengkonversi nama nama fungsi dan nama agar cocok dengan yang diinginkan oleh client (kelas yang akan menggunakan). Adapter memungkinkan kelas untuk bisa bekerja bersama sama walaupun sebelum tidak memungkinkan Karen a perbedaan nama nama fungsi dan variabel.
Class Diagram

Selasa, 24 April 2012

Modul 2 Creational Pattern (Prototype, Singleton)

2.1. Prototype Pattern
Prototype Pattern adalah sebuah design pattern kreatif yang digunakan dalam pengembangan perangkat lunak. Jenis object untuk membuat object baru ditentukan oleh prototype contoh. Object di kloning untuk menghasilkan object baru. Prototype pattern masuk dalam creational pattern pola ini merupakan pola yang paling mudah.
Pattern ini digunakan untuk:
·       Menghindari subclass dari object kreator dalam aplikasi klien, tidak seperti abstract factory pattern.
·       Menghindari biaya yang melekat (inherent cost) dari object baru yang dibuat sesuai standar (misalnya, dengan menggunakan keyword ‘new‘), saat biaya itu cukup mahal untuk aplikasi tertentu.
Untuk mengimplementasikan pattern, deklarasikan sebuah abstract base class yang menentukan sebuah pure virtual clone () method. Setiap class yang memerlukan sebuah “polymorphic constructor”, maka kemampuan itu berasal dari class abstract base dirinya sendiri, dan mengimplementasikan operasi clone ().
Klien, bukanya menulis kode yang meminta operator “new” pada sebuah hard-coded class name, memanggil method clone () pada prototipe, memanggil sebuah factory method dengan sebuah parameter tertentu yang menunjuk particular concrete  kelas turunan yang diinginkan, atau mengacu pada method clone () melalui beberapa mekanisme yang disediakan oleh design pattern lain.

Modul 1 - Creational Pattern (Abstract Factory Pattern, Builder Pattern, Factory Method)


1.1. Abstract Factory Pattern
Abstract Factory Pattern  merupakan salah satu jenis Creational Pattern yang menangani mekanisme penciptaan obyek secara adaptif. Abstract Factory Pattern memberikan kemampuan pengenkapsulasian sekelompok factory dimana masing-masing factory memiliki “motif” khasnya. Abstract Factory Pattern menjadi sentral penentuan factory yang akan diinisialisasi sehingga product yang diciptakan dapat mewarisi behaviour yang sesuai dengan motif yang dipilih. Keistimewaan lain adalah product yang diciptakan terbebas dari pernyataan penciptaan concrete class secara langsung. Hal ini memberikan keuntungan yaitu Abstract Factory Pattern dapat mencegah coupling problem yang pasti terjadi apabila penciptaan obyek memakai operator new dalam bahasa OOP. Abstract Factory Pattern menyediakan sebuah interface untuk membangun family yang berkaitan atau bergantung pada objek tanpa menspesifikasikan kelas nyata nya.
Prinsip dasar dari Abstract Factory pattern adalah:
1.    Terdapat kelas Abstract Factory (sebuah interface), dimana Abstract Factory merupakan sebuah interface yang mendefinisikan bagaimana cara untuk, membuat objek dari Abstract Product. Intent dari Abstract Factroy adalah menciptakan family dari objek yang berkaitan tanpa harus bergantung pada concrete class-nya.
2.    Terdapat kelas Concrete Factory, dimana kelas ini akan mengimplementasikan semua metode pada AbstractFactory untuk membuat objek dari concrete Product.
3.    Terdapat kelas Abstract Product, dimana kelas ini merupakan sebuah interface untuk  mendefinisikan tipe dari masing-masing objek produk.
4.    Terdapat kelas Product, merupakan kelas yang akan mengimplementasikan semua metode pada AbstractProduct.
5.    Terdapat Client, adalah kelas yang akan terhubung dengan kelas Abstrac tFactory dan Abstract Product.
Berikut ini adalah contoh program sederhana yang mengimplementasikan konsep factory pattern. Program ini sebenarnya merupakan tugas kelas yang diberikan oleh dosen desain pattern saya, saya sengaja mempublishkan hasil tugas ini agar bisa membantu teman-teman yang juga belajar tentang konsep factori pattern.

Pengertian Design Pattern



Design Pattern adalah sebuah solusi untuk menyelesaikan masalah umum yang sering di temui dan dihadapi, yang membentuk sebuah pola (pattern) tertentu dalam membuat sebuah program. Pattern adalah bagaimana mendesain kelas dan bagaimana interaksi yang terjadi antar kelas tersebut sehingga kelas yang kita bangun bisa lebih elegan dan reusable.
Ada beberapa  pattern yang populer saat ini yang diciptakan oleh GoF (Gang of Four) yaitu Abstract Factory, Builder, Factory Method, Prototype, Singleton, Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy, Chain of Responbility, Command, Interpreter, Iterator, Mediator, Mementto, Observer, State, Strategy, Template Method, Visitor.
Secara singkat, design pattern adalah sebuah solusi untuk mengulang masalah design. Solusi ini telah dikembangkan, dikompile, dan disaring oleh programmer yang sebelumnya telah  menghadapi masalah ini. Sebuah design pattern adalah salah satu jenis petunjuk yang menggunakan tipe "Jika Anda memiliki masalah ini, maka lakukan ini." Hal tersebut serupa dengan sebuah algoritma : sebagai contoh, jika Anda ingin melakukan sebuah operasi pencarian pada sebuah daftar, Anda tidak perlu menyelesaikan dengan solusi Anda sendiri, terdapat beberapa algoritma yang  menyediakan  fungsi sorting ini seperti pencarian biner. Perbedaan antara sebuah Design pattern dan sebuah  algoritma adalah bahwa algoritma fokus pada implementasi solusi, sebuah algoritma biasanya mendaftar dari atas ke bawah menuju ke tahap akhir dari action-action yang terurut dimana yang dibutuhkan untuk menghasilkan sebuah solusi. Sebuah pattern memusatkan untuk menghasilkan beberapa Design.