Upload
idana
View
65
Download
0
Embed Size (px)
DESCRIPTION
Decorator Pattern. Tujuan Pembelajaran. Mengetahui model persoalan yang menggunakan Decorator pattern Mengetahui bagaimana menerapkan Decorator pattern pada program Mampu menerapkan Decorator pattern untuk meningkatkan fleksibilitas kode. Koleksi Desain Pattern. - PowerPoint PPT Presentation
Citation preview
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
1
Decorator Pattern
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
2
Tujuan Pembelajaran• Mengetahui model persoalan yang
menggunakan Decorator pattern• Mengetahui bagaimana menerapkan
Decorator pattern pada program• Mampu menerapkan Decorator pattern untuk
meningkatkan fleksibilitas kode
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
3
Koleksi Desain Pattern• Creational Patterns :– Singleton– Factory
• Behavioural Patterns :– Strategy
–Decorator
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
4
Problem
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
5
Example : Starbuzz Coffee
Beverage
getDescription()cost()//other methods
description
Decafcost()
DarkRoastcost()
HouseBlendcost()
Espressocost()
Bgm jika kita ingin menambahkan pelengkap
pd kopi, misalnya steamed milk, soya,
mocha, dll ?
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
6
Alternatif Pertama
Beverage
getDescription()cost()//other methods
description
HouseBlendWithSteamedMilk
cost() HouseBlendWithMocha
cost()
DecafWithSoya
cost()
DecafWithSteamedMilk
cost()
HouseBlendWithSoya
cost() DecafWithMocha
cost()
EspressoWithSoya
cost()
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
7
Alternatif KeduaBeverage
getDescription()cost()
hasMilk()setMilk()hasSoya()setSoya()hasWhip()setWhip()hasMocha()setMocha()//other methods
descriptionmilksoyamilkwhip
Decafcost()
DarkRoastcost()
HouseBlendcost()
Espressocost()
Bgm jika terjadi perubahan harga dari
tiap pelengkap, penambahan jenis
pelengkap, bgm jika pelanggan ingin double
whip?
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
8
Prinsip Perancangan
Identify the aspects of your application that vary and separate them from what stays the same
Program to an interface not and implementation
Strive for loosely coupled designs between object that interact.
Favor composition over inheritance
Classes should open for extension, but closed for modification
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
9
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
10
Decorator Pattern
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
11
Menerapkan DecoratorMisalnya, pelanggan ingin secangkir Dark Roast ditambah Whip dan Mocha.
cost = …1. mocha.cost()2. mocha calls whip.cost()3. whip calls darkRoast.cost()4. darkRoast returns
$darkRoast5. whip returns ($darkRoast+
$whip)6. mocha returns ($darkRoast+
$whip+$mocha)
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
12
Properti Decorator Pattern
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
13
Class Diagram Decorator Pattern
Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang
14
• Terdapat dua tipe Mobil yaitu XenosA (155 jt) dan XenosB (141 jt). Pengguna mobil dapat memilih variasi untuk dipasang pada tiap tipe mobil. Variasi yang tersedia console box (175 rb), spoiler (500 rb), dan grill (280 rb). Buatlah program yang dapat menambahkan variasi secara dinamis ke tiap tipe mobil sekaligus menghitung total harganya. Gunakan Decorator Pattern untuk menyelesaikan persoalan di atas.
Latihan