23
P engantar Design Pattern Adam Hendra Brata

Pengantar - adamhendrabrata.files.wordpress.com · Perancangan perangkat lunak berorientasi objek OO relatif sulit Merancang perangkat lunak berorientasi objek yang dapat digunakan

  • Upload
    vuliem

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Pengantar

Design

Pattern

Adam Hendra Brata

PPP Tujuan Perkuliahan

Memahami pengertian dan karakteristik pola perancangan

Memahami klasifikasi pola perancangan

Memahami keuntungan dan kelemahan penggunaan pola

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 Motivasi

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 Pengulangan Struktur

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 menggambarkanmasalah yang sering terjadisecara berulang-ulang dilingkungan kita dan kemudianjuga dapat menjelaskan intidari solusi untuk masalahtersebut, sehingga kita dapatmenggunakan solusi iniberkali-kali, tanpa harusmelakukannya dua kali ataulebih untuk sesuatu yang sama

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 Pola – Pola Perancangan

Christopher Alexander

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 berpengalamandapat 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 Alasan Penggunaan

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 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 Template 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 Tujuan Pola – Pola Perancangan

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 sub-klasnya 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 Kategorisasi GOF

PPP

Contoh :

Observer

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

PPP Observer (Behavioral)

Saat kita membutuhkan bermacam representasi informasi yang berbeda dari sebuah data yang sama

Contoh 2 : Subscriber Youtube

PPP Observer (Behavioral)

Pemberitahuan informasi video yang sama ke berbagai orang yang berbeda

PPP

Kekurangan &

Kelebihan

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 Keuntungan dan Kelemahan

Penggunaan PPP

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 hati-hati

PPP Kesimpulan

Web Services

Terimakasih

v^^

PPP

I’m with you tillthe end of the line