Ppp 4 Decorator

  • Upload
    aprilia

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

  • 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