structural pattern minum kopi ? saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan...

28
Design Pattern Adam Hendra Brata S tructural Pattern D ecorator

Upload: trinhdang

Post on 24-Apr-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

Design

Pattern

Adam Hendra Brata

Structural

Pattern

Decorator

Page 2: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Tujuan Perkuliahan

Memahami structural pattern: Decorator

Page 3: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Introduksi

Page 4: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Introduksi

Pernah minum kopi ?

Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan

Espresso, Latte, Black Coffee dll.

Pertanyaannya, apa yang membedakan semua jenis variasi minuman kopi tersebut ?

Pertanyaan selanjutnya adalah, bagaimana cara Barista“meracik” kopi yang kita pesan sesuai dengan jenisnya masing – masing ?

Page 5: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Introduksi

Page 6: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Introduksi

Tahu apa itu istilah Coffee Decoration ?

Page 7: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

Web Services

IntroduksiPPP Introduksi

Page 8: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Introduksi

Alur kerja peracikan kopi

Barista mengambil salah satu jenis biji kopi dasar dan menggiling biji kopi tersebut dengan mesin agar menjadi bubuk kopi

Bubuk kopi yang sudah halus akan diseduh untuk membuat kopi

Selanjutnya setelah seduhan kopi jadi, maka Barista akan “meracik” varian kopi yang kita pesan dengan mengkombinasikan bahan campuran sesuai dengan pesanan kita

Melakukan campuran dengan susu / krim

Melakukan campuran dengan bahan lain, misalnya es krim, mocha dan lain – lain

Setelah jadi maka kopi tersebut akan diberikan kepada kita

Page 9: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Decorator

Page 10: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Decorator

Tujuan

“Melampirkan” tanggung jawab tambahan pada sebuah objek secara dinamis

Memberikan alternatif untuk melakukan penurunan kelas yang lebih fleksibel dengan tujuan memperluas fungsionalitasnya

Dikenal juga dengan nama Wrapper

Page 11: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP Motivasi

Beverage adalah klas abstrak, sifatnya dituruni oleh klas-klas turunannya yaitu minuman yang ada dalam menu

cost() adalah method abstrak yang harus diimplementasikan oleh tiap subklas

description adalah atribut untuk memberikan deskripsi pada klas Beverage dan nantinya akan diturunkan pada subklas

Tiap subklas mengimplementasikan method cost() untuk harga dari setiap jenis minuman yang spesifik

Page 12: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP Motivasi

Page 13: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP Motivasi

Method cost() yang dimiliki oleh klas Beverage bertanggungjawab untuk menghitung harga dari bahan campuran saja

Method ini akan diimplementasikan lebih lanjut di subklas untuk menghitung harga tiap minuman

Setiap method cost() pada tiap subklas minuman harus dapat menghitung harga dari tiap minuman secara spesifik, sekaligus harga dari bahan campuran yang dipakai

Page 14: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Motivasi

Masih ingat dengan alur kerja peracikan kopi ?

Barista menyeduh kopi dari biji kopi jenis DarkRoast

“Mendekorasinya” dengan mocha

“Mendekorasinya” dengan krim

Memanggil fungsi cost() untuk menghitung harga dari minuman yang dipesan dengancara mengandalkan“proses pendelegasianmethod” untukmenghitung penambahanharga tiap bahancampuran

Page 15: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Pemakaian

Untuk menambah tanggung jawab untuk tiap objek individu secara dinamis dan transparan tanpa mempengaruhi objek lainnya

Untuk pendelegasian tanggung jawab yang dapat ditarik kembali

Ketika ekstensi oleh subklas / penurunan kelas menjadi tidak praktis

Terkadang dimungkinkan adanya jumlah ekstensi independen yang besar dan akan mengakibatkan ledakan jumlah subklas untuk mendukung setiap kombinasi yang mungkin

Definisi kelas yang mungkin tersembunyi atau tidak tersedia untuk penurunan kelas

Page 16: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Struktur

Page 17: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Unsur

Component

mendefinisikan antarmuka untuk objek yang dapat diberikan tanggung jawab tambahan secara dinamis

ConcreteComponent

mendefinisikan sebuah objek yang dapat diberikan tanggungjawab tambahan

Decorator

mempertahankan referensi ke objek Component danmendefinisikan sebuah antarmuka yang sesuai denganantarmuka Component tersebut

ConcreteDecorator

menambahkan tanggung jawab untuk komponen tertentu

Page 18: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Konsekuensi

Kolaborasi

Dekorator meneruskan permintaan ke objek Component nya

Bisa jadi dekorator dapat melakukan operasi tambahansebelum dan setelah meneruskan permintaan (secara opsional)

Konsekuensi

(+) Lebih fleksibel daripada pewarisan statis menambahkanproperti ganda dengan lebih mudah

(+) Menghindari klas-klas dengan feature-laden yang tinggi dalam hirarki pendekatan PAYG

(!) Dekorator dan komponennya tidak identik jangan bergantung pada identitas objek

(!) Banyak objek-objek kecil yang terlihat sama susah untuk dipelajari atau dilacak

Page 19: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Implementasi

Kesesuaian Antarmuka

Antarmuka objek dekorator harus sesuai dengan antarmukakomponen yang akan dia dekorasi

“Menghilangkan” klas Decorator abstrak

Tidak perlu mendefinisikan klas dekorator abstrak ketika kitahanya perlu menambahkan satu tanggung jawab

Menjaga klas Component tetap ringan

Untuk memastikan antarmuka tetap sesuai, komponen dandekorator harus diturunkan dari klas Component umum

Sangat penting untuk menjaga klas umum ini tetap ringan, yaituharus fokus pada pendefinisian antarmuka, bukan padapenyimpanan data

Page 20: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Contoh kode

Page 21: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Contoh Kode

Page 22: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Contoh Kode

Page 23: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Contoh Kode

Page 24: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Contoh Kode

Page 25: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Contoh Kode

Page 26: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Contoh Kode

Page 27: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

PPP

Web Services

Contoh Kode

Page 28: Structural Pattern minum kopi ? Saat kita akan membeli kopi di sebuah restoran, maka kita dihadapkan pada banyak sekali pilihan variasi kopi yang bisa dipesan Espresso, Latte, Black

Web Services

Terimakasih

v^^

PPP

I’m with you tillthe end of the line