14
Jurusan Teknik Informatika Fakultas Teknik Univ. Muhammadiyah Malang Decorator Pattern 1

Decorator Pattern

  • Upload
    idana

  • View
    55

  • 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

Page 1: Decorator Pattern

Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang

1

Decorator Pattern

Page 2: 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

Page 3: Decorator Pattern

Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang

3

Koleksi Desain Pattern• Creational Patterns :– Singleton– Factory

• Behavioural Patterns :– Strategy

–Decorator

Page 4: Decorator Pattern

Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang

4

Problem

Page 5: Decorator Pattern

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 ?

Page 6: Decorator Pattern

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()

Page 7: Decorator Pattern

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?

Page 8: Decorator Pattern

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

Page 9: Decorator Pattern

Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang

9

Page 10: Decorator Pattern

Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang

10

Decorator Pattern

Page 11: 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)

Page 12: Decorator Pattern

Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang

12

Properti Decorator Pattern

Page 13: Decorator Pattern

Jurusan Teknik InformatikaFakultas TeknikUniv. Muhammadiyah Malang

13

Class Diagram Decorator Pattern

Page 14: 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