ppp 4 decorator
TRANSCRIPT
-
8/17/2019 Ppp 4 Decorator
1/27
D
ecorator
D
esign
P
attern
Adam Hendra Brata
-
8/17/2019 Ppp 4 Decorator
2/27
Web Services
Tujuan Perkuliahan
Memahami structural pattern: Decorator
-
8/17/2019 Ppp 4 Decorator
3/27
Web Services
introduksi
-
8/17/2019 Ppp 4 Decorator
4/27
Web Services
Introduksi
Pernah minum kopi ?
Saat kita akan membeli kopi di sebuah restoran, maka kitadihadapkan pada banyak sekali pilihan variasi kopi yang bisadipesan
Espresso, Latte, Black Coffee dll.
Pertanyaannya, apa yang membedakan semua jenis variasiminuman kopi tersebut ?
Pertanyaan selanjutnya adalah, bagaimana cara Barista
“meracik” kopi yang kita pesan sesuai dengan jenisnyamasing – masing ?
-
8/17/2019 Ppp 4 Decorator
5/27
Web Services
Introduksi
Tahu apa itu istilah Coffee Decoration ?
-
8/17/2019 Ppp 4 Decorator
6/27
Web Services
Introduksi
Introduksi
-
8/17/2019 Ppp 4 Decorator
7/27
Web Services
Introduksi
Alur kerja peracikan kopi
Barista mengambil salah satu jenis biji kopi dasar danmenggiling biji kopi tersebut dengan mesin agar menjadi bubukkopi
Bubuk kopi yang sudah halus akan diseduh untuk membuat
kopi
Selanjutnya setelah seduhan kopi jadi, maka Barista akan“meracik” varian kopi yang kita pesan denganmengkombinasikan 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
-
8/17/2019 Ppp 4 Decorator
8/27
Web Services
decorator
-
8/17/2019 Ppp 4 Decorator
9/27
Web Services
Decorator
Tujuan
“Melampirkan” tanggung jawab tambahan pada sebuah objeksecara dinamis
Memberikan alternatif untuk melakukan penurunan kelas yanglebih fleksibel dengan tujuan memperluas fungsionalitasnya
Dikenal juga dengan nama Wrapper
-
8/17/2019 Ppp 4 Decorator
10/27
Motivasi
Beverage adalah klas
abstrak, sifatnya diturunioleh klas-klas turunannya
yaitu minuman yang ada
dalam menu
cost() adalah method
abstrak yang harusdiimplementasikan oleh
tiap subklas
description adalah
atribut untuk
memberikan deskripsi
pada klas Beverage dannantinya akan diturunkan
pada subklas
Tiap subklas mengimplementasikan method cost() untuk harga dari setiap jenis
minuman yang spesifik
-
8/17/2019 Ppp 4 Decorator
11/27
Motivasi
-
8/17/2019 Ppp 4 Decorator
12/27
Motivasi
Method cost() yang dimilikioleh 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
-
8/17/2019 Ppp 4 Decorator
13/27
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 minumanyang dipesan dengancara mengandalkan“proses pendelegasianmethod” untuk
menghitung penambahanharga tiap bahancampuran
-
8/17/2019 Ppp 4 Decorator
14/27
Web Services
Pemakaian
Untuk menambah tanggung jawab untuk tiap objek individu
secara dinamis dan transparan tanpa mempengaruhi objeklainnya
Untuk pendelegasian tanggung jawab yang dapat ditarikkembali
Ketika ekstensi oleh subklas / penurunan kelas menjadi tidakpraktis
Terkadang dimungkinkan adanya jumlah ekstensi independenyang besar dan akan mengakibatkan ledakan jumlah subklas
untuk mendukung setiap kombinasi yang mungkin
Definisi kelas yang mungkin tersembunyi atau tidak tersediauntuk penurunan kelas
-
8/17/2019 Ppp 4 Decorator
15/27
Web Services
Struktur
-
8/17/2019 Ppp 4 Decorator
16/27
Web Services
Unsur
Component
mendefinisikan antarmuka untuk objek yang dapat diberikantanggung jawab tambahan secara dinamis
ConcreteComponent
mendefinisikan sebuah objek yang dapat diberikan tanggung jawab tambahan
Decorator
mempertahankan referensi ke objek Component dan
mendefinisikan sebuah antarmuka yang sesuai denganantarmuka Component tersebut
ConcreteDecorator
menambahkan tanggung jawab untuk komponen tertentu
-
8/17/2019 Ppp 4 Decorator
17/27
Web Services
Konsekuensi
Kolaborasi
Dekorator meneruskan permintaan ke objek Component nya
Bisa jadi dekorator dapat melakukan operasi tambahansebelum dan setelah meneruskan permintaan (secaraopsional)
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 untukdipelajari atau dilacak
-
8/17/2019 Ppp 4 Decorator
18/27
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 dan
dekorator harus diturunkan dari klas Component umum
Sangat penting untuk menjaga klas umum ini tetap ringan, yaituharus fokus pada pendefinisian antarmuka, bukan padapenyimpanan data
-
8/17/2019 Ppp 4 Decorator
19/27
Web Services
ontoh kode
-
8/17/2019 Ppp 4 Decorator
20/27
Web Services
Contoh Kode
-
8/17/2019 Ppp 4 Decorator
21/27
Web Services
Contoh Kode
-
8/17/2019 Ppp 4 Decorator
22/27
Web Services
Contoh Kode
-
8/17/2019 Ppp 4 Decorator
23/27
Web Services
Contoh Kode
-
8/17/2019 Ppp 4 Decorator
24/27
Web Services
Contoh Kode
-
8/17/2019 Ppp 4 Decorator
25/27
Web Services
Contoh Kode
-
8/17/2019 Ppp 4 Decorator
26/27
Web Services
Contoh Kode
-
8/17/2019 Ppp 4 Decorator
27/27
Web Services
Terimakasih
I’m with you till
the end of the line