Design Pattern Pengantar
Adam Hendra Brata
PPP Tujuan Perkuliahan Memahami pengertian dan karakteristik pola perancangan
Memahami klasifikasi pola perancangan Memahami keuntungan dan kelemahan penggunaan pola
PPP Motivasi Metode OOD menekankan pada penggunaan notasi – notasi untuk perancangan Baik untuk spesifikasi, dokumentasi
Tapi OOD sebenarnya lebih dari sekedar “menggambar” diagram Pembuat draft yang baik desainer yang baik
Desainer OO yang baik ditentukan pada banyaknya pengalaman Karena paling tidak sama pentingnya dengan sintaks
Konsep reuse yang terbaik adalah design reuse Menyesuaikan masalah pada dengan perancangannya Menghindari “reinventing the wheel” Menerapkan solusi desain yang sama untuk masalah yang sama dalam konteks yang berbeda
PPP
Pengulangan Struktur Perancangan
OOA dan OOD memungkinkan struktur perancangan yang memiliki keutamaan : Abstraksi Fleksibilitas Modularitas Penyembunyian informasi
Therein lies valuable design knowledge Tersimpan pengetahuan tentang perancangan yang bermanfaat
Masalah : menangkap, mengkomunikasikan & menerapkan pengetahuan tersebut untuk digunakan kembali dalam konteks yang berbeda
PPP
POLa – pola perancangan
PPP Pola – Pola Perancangan Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice Setiap pola menggambarkan masalah yang sering terjadi secara berulang-ulang di lingkungan kita dan kemudian juga dapat menjelaskan inti dari solusi untuk masalah tersebut, sehingga kita dapat menggunakan solusi ini berkali-kali, tanpa harus melakukannya dua kali atau lebih untuk sesuatu yang sama Christopher Alexander
Pada dasarnya teori tersebut disebutkan oleh Christopher Alexander, seorang arsitek ahli yang sangat terkenal di bidang ilmu arsitektur
Kemudian teori tersebut diadaptasi di dunia Software Engineering dan dipopulerkan oleh Gamma, Helm, Johnson and Vlissides (The gang of four, Go4, GOF)
PPP
Alasan Penggunaan Pola – Pola Perancangan
Perancangan perangkat lunak berorientasi objek OO relatif sulit
Merancang perangkat lunak berorientasi objek yang dapat digunakan kembali itu lebih sulit Desainer sistem berorientasi objek yang berpengalaman dapat membuat desain yang lebih baik Desainer pemula cenderung akan “jatuh” kembali menggunakan teknik lama sebelum ada OO
Desainer yang berpengalaman mengetahui ada “sesuatu” Desainer yang sudah ahli akan memahami pemecahan setiap permasalahan tidak harus mulai dari awal lagi Mereka menggunakan kembali solusi yang sudah ada
Pola-pola ini membuat desain OO lebih fleksibel, elegan, dan akhirnya dapat digunakan kembali
PPP Pola – Pola Perancangan Abstraksi dari perulangan struktur desain Terdiri atas kelas atau objek Dependensi Struktur Interaksi Konvensi
Memberi nama dan menspesifikasikan struktur desain tersebut secara eksplisit
Hasil kristalisasi dari pengalaman dalam perancangan sistem Pola – pola perancangan dikatakan baik, jika: Sebisa mungkin sangat umum dan general Mengandung solusi yang telah terbukti efektif untuk memecahkan masalah dalam konteks tertentu
PPP Template Pola – Pola Perancangan Nama / Name Sebuah nama yang berarti, yang mencerminkan pengetahuan yang diwujudkan oleh pola tertentu
Masalah / Problem Menguraikan masalah yang akan diselesaikan atau ditujukan pada pola tertentu
Konteks / Context Situasi umum di mana pola akan digunakan, termasuk domain aplikasi
Batasan / Force Isu atau masalah yang perlu dipertimbangkan dalam proses memecahkan masalah, termasuk batasan dan kendala
Solusi / Solution Cara yang disarankan untuk memecahkan masalah dalam konteks tertentu harus sesuai dengan pertimbangan batasan
PPP Tujuan Pola – Pola Perancangan Mengkodekan desain yang baik Menyaring & menggeneralisasi pengalaman perancangan Membantu para pemula maupun yang sudah ahli
Memberikan nama struktur desain secara eksplisit Penggunaan kosa kata umum Mengurangi kompleksitas Meningkatkan unsur ekspresifitas
“Menangkap & melestarikan” informasi perancangan Menjelaskan keputusan-keputusan dalam desain dengan ringkas Meningkatkan dokumentasi
Memfasilitasi restrukturisasi / refactoring Pola-pola ini saling terkait satu sama lain Memberikan unsur fleksibilitas tambahan
PPP
Kategorisasi GoF
PPP Kategorisasi GOF Gang of Four mendefinisikan beberapa design pattern dengan 2 kategori utama Sesuai Ruang Lingkupnya (Scope) Sesuai Tujuannya (Purpose)
PPP Kategorisasi GOF Berdasarkan ruang lingkupnya (Scope) : domain dimana pola tersebut akan diaplikasikan Klas bertitik berat pada klas dan hubungannya dengan subklasnya pada saat kompilasi (statis) Objek bertitik berat pada objek-objek dan hubungannya pada saat run-time (dinamis)
PPP Kategorisasi GOF Berdasarkan tujuannya (Purpose) : mencerminkan apa yang akan dilakukan pola tersebut Penciptaan (Creational) berorientasi pada pembangunan objek Klas memberikan tugas pembuatan objek kepada subklas Objek memberikan sebagian tugas dari penciptaan objek kepada objek lain
Struktur (Structural) bagaimana objek tersusun dari kelompok yang lebih besar Klas pembentukan struktur melalui pewarisan / inheritance Objek pembentukan struktur melalui komposisi / composition Perilaku (Behavioral) bagaimana tanggung jawab
didistribusikan Klas algoritma / kontrol melalui pewarisan Objek algoritma / kontrol melalui kelompok objek / komposisi
PPP
Contoh : Observer
PPP Observer (Behavioral) Konteks Ketika sebuah asosiasi dibuat diantara dua klas, kode untuk klas-klas tersebut menjadi tak terpisahkan Jika kita ingin menggunakan kembali satu klas, maka kita juga harus menggunakan kembali klas yang lainnya
Masalah Bagaimana kita dapat mengurangi interkoneksi antar klas, terutama antara klas-klas yang “ikut” atau dimiliki modul lain atau subsistem yang berbeda ?
Batasan Kita ingin memaksimalkan fleksibilitas sistem sebaik dan seoptimal mungkin
PPP Observer (Behavioral) Solusi Observer
PPP Observer (Behavioral) Contoh 1 : Representasi diagram / grafik
Saat kita membutuhkan bermacam representasi informasi yang berbeda dari sebuah data yang sama
PPP Observer (Behavioral) Contoh 2 : Subscriber Youtube
Pemberitahuan informasi video yang sama ke berbagai orang yang berbeda
PPP
Kekurangan & Kelebihan
PPP
Keuntungan dan Kelemahan Penggunaan PPP
Keuntungan Penggunaan kembali (reuse) solusi generik Menyediakan kosakata untuk membahas domain permasalahan di tingkat abstraksi yang lebih tinggi Meningkatkan pemahaman, restrukturisasi & komunikasi tim Kekurangan Dapat membatasi kreativitas Penggunaan pola dapat menyebabkan over-design atau perancangan yang berlebihan Dampak pada sistem organisasi Penggunaan pola membutuhkan perhatian dan perencanaan khusus Pola harus digunakan dengan bijak dan tidak boleh asal digunakan tanpa analisis yang jelas
PPP Kesimpulan Penggunaan pola-pola perancangan telah diidentifikasi dalam banyak domain aplikasi yang berbeda dan dapat berlaku di banyak tahapan yang berbeda dari proses pengembangan perangkat lunak Pola-pola perancangan bukan merupakan obat mujarab dari semua masalah Setiap kali kita melihat indikasi bahwa pola-pola perancangan dapat diterapkan, kita bisa jadi “tergoda” untuk langsung menerapkan pola-pola perancangan Hal ini dapat menyebabkan keputusan desain yang tidak bijaksana Harus selalu paham secara mendalam akan batasan-batasan yang berimbang dan ketika ada pola lain yang dapat menyeimbangkan batasan secara lebih baik Pastikan kita membuat setiap keputusan desain dengan hatihati
PPP
Terimakasih v^^ Web Services
I’m with you till the end of the line