Design. Creational. Pattern. Adam Hendra Brata. Factory Method, Abstract Factory, Singleton

dokumen-dokumen yang mirip
Adapter & Facade Adam Hendra Brata

Decorator Adam Hendra Brata

Teknik Informatika Universitas Wijaya Kusuma Surabaya

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

Pengantar Adam Hendra Brata

Pemrograman Web. Pemrograman Berorientasi Objek. 8 Adam Hendra Brata

Algoritma Pemrograman [BS204]

Konsep Pemrograman Berorientasi Obyek. Maria Ulfah S Nurochman

Pemrograman Web. Pemrograman Berorientasi Objek. Adam Hendra Brata

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

Konsep Pemrograman Berbasis Obyek

OOAD (Object Oriented Analysis and Design) UML part 2 (Activity diagram, Class diagram, Sequence diagram)

Konsep Pemrograman Berorientasi Obyek

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Pemrograman Berorientasi Obyek. Konsep OOP

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

KONSEP Pemrograman Berorientasi Objek KARMILASARI

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

PEMROGRAMAN BERORIENTASI OBJEK. Nurochman

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

Konsep Pemrograman Berorientasi Obyek. Pertemuan 1

Pemrograman Berorientasi. Abstract & Interface

Konsep Pemrograman Berorientasi Obyek

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Pemrograman Lanjut. Class : Deeper Look 2

Konsep Dasar Pemrograman Berorientasi Obyek I JAVA. Anugrah Kusuma Seno Adi Putra

5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

BAB II TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT

06/03/2018. Tidak memiliki parameter. Melakukan inisialisasi semua variabel private dengan nilai awal.

Citra Noviyasari, S.Si, MT SI - UNIKOM

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

BAB 1 PENDAHULUAN. Dalam pengembangan perangkat lunak, tim developer membangun cetak

Pemograman Berorientasi Objek. Week 3 Abstrak dan Interface dalam suatu kelas

Inheritance dan Kata Kunci static

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

Tutorial FDM Nurul Huda 2008, bundled by samsonasik. Modul Java 1

Dasar Pemrograman Java. H. Risdiandri Iskandar, SKom,MM 1

Bahasa Pemograman II. Object Oriented Programming

Modul II Object Oriented Programming

Konsep Dasar Pemrograman Berorientasi Objek

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

Pengenalan pemrograman berorientasi obyek

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

Object Oriented Programming 1

Pemrograman Lanjut. Interface

PRAKTIKUM OBJECT ORIENTED PROGRAMING

Class & Object 2. Imam Fahrur Rozi

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

OBJECT ORIENTED PROGRAMMING DENGAN PHP. Janitra Panji

BAB II DASAR TEORI Pengertian Framework

Pemrograman Berorientasi. Class dan Obyek 2

MINGGU V : PBO (PEWARISAN)

PEMROGRAMAN PHP DASAR

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

PENERAPAN DESIGN PATTERNS UNTUK PERANCANGAN BERBASISKAN OBJEK ORIENTED

LAPORAN PERCOBAAN V ( APLIKASI NILAI MAHASISWA) BERBASIS JAVA

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

CONTOH IMPLEMENTASI DESIGN PATTERN

Pemrograman Lanjut Review Class dan Object PTIIK

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

PERTEMUAN 11 KONSEP PEMROGRAMAN BERORIENTASI OBJEK

LAPORAN PERCOBAAN IV PEMBUATAN CALCULATOR ( MENGHITUNG GAJI KARYAWAN DAN TUNJANGANNYA) BERBASIS JAVA

PENERAPAN DESIGN PATTERNS UNTUK PERANCANGAN BERBASISKAN OBJEK ORIENTED. Kusnawi Dosen STMIK AMIKOM Yogyakarta

TUGAS AKHIR APLIKASI KALKULATOR BOLA BERBASIS JAVA

BEKERJA DENGAN JAVA CLASS LIBRARY

Polymorphism (Polimorfisme)

Praktikum Minggu VI 1 dan 2 Dasar-dasar Object Oriented Programming PHP

Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

PERTEMUAN 2 PEMOGRAMAN BERORIENTASI OBJEK L/O/G/O

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

8 - Overriding dan Overloading

Object OOP. Polymor phism

TCP dan Pengalamatan IP

Pemrograman Berorientasi. Inheritance

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

PEMROGRAMAN BERORIENTASI OBJEK

PEMROGRAMAN JAVA. Yoannita, S.Kom. Class & Method sederhana Konsep Pemrograman Berorientasi Objek. Company LOGO

PEMROGRAMAN BERORIENTASI OBJEK

Diciptakan oleh James Gosling. Resmi diperkenalkan tahun Merupakan bahasa pemrograman berorientasi obyek murni. Pada awalnya hanya mampu

Bahasa Pemrograman 2.

Dasar Pemrograman Web. Pemrograman Web. Adam Hendra Brata

Pemrograman Berorientasi Obyek. Ramos Somya

:: abstract class + interface. :: abstract class

BAB II LANDASAN TEORI

Pemodelan Berorientasi Objek

9/26/2011. Tujuan. Bekerja dengan Java Class Library. Pengenalan OOP. Pengenalan OOP. Class dan Object. Enkapsulasi

OBJECT ORIENTED PROGRAMMING

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

Adam Hendra Brata Teknik Informatika FILKOM UB Semester Genap 2015/2016

Kurikulum Qt. Chapter 8 - Polymorphism. Polimorfisme. Problema Pewarisan Tunggal (Single Inheritance)

Pertemuan4 Konsep Object Oriented Programming pada Python

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

C#, Programming, Object-oriented. Pengenalan C# Erick Pranata. Edisi I

Transkripsi:

Design Pattern Creational Pattern Factory Method, Abstract Factory, Singleton Adam Hendra Brata

PPP Tujuan Perkuliahan Memahami creational pattern : Factory Method Memahami creational pattern : Abstract Factory Memahami creational pattern : Singleton

PPP Peringatan Mulai dari sini, seluruh peserta mata kuliah PPP akan mempelajari jenis jenis PPP berdasarkan kategorisasi GoF Diperlukan kemampuan pemrograman yang mumpuni serta pemahaman tentang pemodelan dan pemrograman berorientasi objek yang cukup baik

PPP Factory Method

PPP Factory Method Tujuan Mendefinisikan antarmuka untuk menciptakan sebuah objek, tetapi membiarkan subklas yang memutuskan klas mana yang akan diinstansiasi Factory Method memungkinkan sebuah pendelegasian tanggung jawab instansiasi sebuah klas tertentu oleh subklas Juga dikenal sebagai: Virtual Constructor

PPP Factory Method Motivasi (1) Bagaimana agar bisa membuat pizza lebih dari satu jenis? Digunakan Abstract class atau Interface? Design should be open for extension but closed for modification

PPP Factory Method Motivasi (2) Sekarang kita lewatkan tipe pizza ke method orderpizza Berdasarkan tipe pizza, kita instansiasi concrete class yang sesuai dan kita masukkan pada variabel instance dari pizza Setiap pizza disini harus mengimplementasikan interface Pizza Kemudian setelah kita memiliki objek Pizza, maka akan disiapkan agar siap dimasak, dipotong kemudian mungkin akan dibungkus Setiap subtipe dari Pizza, seperti CheesePizza, VeggiePizza dll. mengetahui cara untuk mempersiapkan dirinya sendiri

PPP Factory Method Motivasi (3) Ini merupakan bagian yang menjelaskan tentang setiap tipe pizza yang ada, misalkan jika ada perubahan tipe maka kita harus merubahnya terus menerus sesuai dengan perubahan tersebut Bagaimana jika ada perubahan jenis pizza? Harus membuka hard code? Kemudian bagian ini akan selalu sama setiap waktu, karena proses persiapan, memasak dan pembungkusan akan selalu sama setiap waktu Sehingga kode bagian ini tidak akan berubah

PPP Factory Method Motivasi (4) Kemudian agar lebih efisien kita coba untuk memisahkan kode dengan cara menarik keluar kode untuk proses pembuatan objek dari method orderpizza Pizza Factory

PPP Factory Method Motivasi (5) Class terpisah

PPP Factory Method Motivasi (6) Sekarang kita buat reference dari klas Pizza Store ke klassimplepizzafactory PizzaStore mendapatkan informasi factory yang dilewatkan melalui konstruktornya Dan method orderpizza() digunakan oleh factory untuk membuat pizza dengan cara yang sederhana, hanya dengan melewatkan tipenya saja Sebagai catatan, kita sudah mengganti operator baru dengan cara membuat method pada objek factory, sehingga tidak perlu lagi ada instansiasi klas konkrit disini

PPP Factory Method Pemakaian / Applicability Sebuah klas tidak dapat mengantisipasi objek dari klas mana yang harus diinstansiasi Sebuah klas ingin subklasnya yang mempunyai tanggung jawab untuk menentukan objek mana yang klas tersebut harus ciptakan Klas mendelegasikan tanggung jawab tersebut pada salah satu dari beberapa subklas pembantu Kemudian kita sendiri ingin melokalisasi (menemukan) pengetahuan subklas pembantu mana yang dimaksud atau subklas pembantu mana yang menjadi delegasi tersebut

PPP Factory Method Struktur Semua product harus mengimplementasikan interface yang sama sehingga klas yang yang ingin menggunakan product dapat berkomunikasi dengan antarmukanya, bukan ke klas konkrit secara langsung Klas ConcreteCreator inilah yang bertanggung jawab untuk membuat 1 atau lebih concrete product Ini adalah satu-satunya klas yang memiliki pengetahuan tentang bagaimana cara membuat product Creator adalah klas yang berisi implementasi dari semua method yang dapat memanipulasi product, selain untuk method dari factory Method abstrak factorymethod() yang harus diimplementasikan oleh setiap subklas Klas ConcreteCreator yang mengimplementasikan method factorymethod(), yang sebenarnya adalah method yang memproduksi product

PPP Factory Method Partisipan / Penyusun Product mendefinisikan antarmuka dari objek yang diciptakan oleh factory method Concrete Product mengimplementasikan antarmuka product Creator Mendefinisikan factory method yang mengembalikan objek berupa jenis dari produk dapat berisi implementasi standar dari factory method bergantung pada subklasnya untuk mendefinisikan factory method sehingga dapat mengembalikan sebuah instance dari ConcreteProduct yang sesuai ConcreteCreator Meng-override factory method untuk dapat mengembalikan instance dari ConcreteProduct

PPP Factory Method Kolaborasi Creator bergantung pada subklasnya untuk mendefinisikan factory method sehingga mengembalikan sebuah instance dari ConcreteProduct yang tepat Konsekuensi Factory menghilangkan kebutuhan untuk mengikat kelas khusus dari aplikasi (application specific classes) ke dalam kode kita hanya berkaitan dengan antarmuka Product, sehingga dapat bekerja dengan beragam klas ConcreteProduct yang ditetapkan pengguna Kelemahan potensialnya adalah klien mungkin harus melakukan penurunan klas Creator terlebih dahulu hanya untuk membuat objek ConcreteProduct tertentu

PPP Factory Method Implementasi Ada 2 variasi yang dapat dilakukan Creator adalah klas abstrak dan tidak menyediakan implementasi untuk factory method membutuhkan sub-klas untuk mendefinisikan implementasinya, tetapi kita tidak perlu menginstansiasi klas yang sifatnya tidak terduga Creator adalah kelas konkrit dan menyediakan implementasi default untuk factory method Creator menggunakan factory method terutama untuk isu fleksibilitas, yang memungkinkan subklas mengubah kelas dari objek yang kelas parentnya diinstansiasi jika diperlukan

PPP Factory Method Implementasi Factory method dengan parameter Membuat beberapa jenis product berdasarkan parameter yang diberikan Semua objek yang diciptakan oleh factory method menciptakan berbagi antarmuka Product yang sama class Creator { Product FactoryMethod(ProductID id){ if(id==mine) return new MyProduct(); if(id==yours) return new YourProduct(); } }

PPP Factory Method Contoh Kode (1)

PPP Factory Method Contoh Kode (2)

PPP Factory Method Contoh Kode (3)

PPP Factory Method Contoh Kode (4)

PPP Factory Method Contoh Kode (5)

PPP Factory Method Contoh Kode (6)

PPP Factory Method Contoh Kode (7)

PPP Abstract Factory

PPP Abstract Factory Tujuan Mendefinisikan sebuah antarmuka untuk menciptakan 1 rumpun objek yang sifatnya saling terkait atau saling tergantung tanpa menspesifikkan kelas konkritnya Juga dikenal sebagai Kit Motivasi Pertimbangkan pizza yang diproduksi oleh toko yang berbeda Setiap pizza harus memiliki bahan-bahan berkualitas baik sesuai dengan toko masing-masing toko yang berbeda memiliki bahan bahan yang berbeda juga Untuk menjadi lebih portabel di toko yang berbeda, pizza seharusnya tidak di hard-code untuk bahan dari toko tertentu

PPP Abstract Factory Sebuah sistem harus independen dari bagaimana produk tersebut dibuat, disusun dan direpresentasikan Sebuah sistem harus dapat dikonfigurasi dengan salah satu dari beberapa produk yang serumpun Produk produk yang serumpun ini dirancang untuk dapat digunakan bersama-sama, dan kita perlu untuk memastikan hal ini Kita ingin menyediakan pustaka klas dari produk tersebut dan kita hanya ingin mengungkap antarmukanya saja, bukan implementasinya

PPP Abstract Factory Struktur

PPP Abstract Factory Partisipan / Penyusun AbstractFactory mendefiniskan sebuah antarmuka untuk operasi-operasi yang bertujuan membuat objek produk abstrak ConcreteFactory mengimplementasikan operasi untuk menciptakan ConcreteProduct AbstractProduct mendefinisikan sebuah antarmuka untuk 1 jenis produk ConcreteProduct Client mendefinisikan objek produk yang akan dibuat oleh ConcreteFactory tertentu mengimplementasikan antarmuka AbstractProduct hanya dapat menggunakan antarmuka yang didefinisikan oleh AbstractFactory dan AbstractProduct

PPP Abstract Factory Kolaborasi Biasanya satu instance dari klas ConcreteFactory dibuat pada saat run-time ConcreteFactory diimplementasikan sebagai Singleton Pabrik abstrak mendelegasikan proses penciptaan objek produk kepada sub-klas ConcreteFactory, dengan menggunakan pola Factory Method Imeplementasi Factory sebagai Singleton sebuah aplikasi biasanya hanya membutuhkan satu instance dari ConcreteFactory per 1 rumpun keluarga produk Singleton Membuat Product : Abstract Factory hanya mendefinisikan sebuah antarmuka untuk proses penciptaan produk semuanya terserah atau diserahkan pada kepada sub-klas ConcreteProduct untuk benarbenar membuat Product tersebut

PPP Abstract Factory Konsekuensi AbstractFactory dapat mengisolasi klas-klas Ini membantu kita untuk mengontrol kelas objek yang diciptakan oleh aplikasi Ini dapat mengisolasi Client untuk mengakses implementasi dari klas dan memanipulasinya langsung, Client hanya dapat berkomunikasi dengan klas-klas tersebut melalui antarmuka abstrak yang sudah didefinisikan Hal ini membuat pertukaran antar rumpun produk yang masih sekeluarga menjadi lebih mudah klas ConcreteFactory hanya muncul sekali dalam aplikasi Hal ini membuat perubahan pada ConcreteFactory yang digunakan oleh aplikasi menjadi lebih mudah Hal ini dapat membuat penggunaan konfigurasi produk yang berbeda menjadi lebih mudah karena hanya dengan mengubah ConcreteFactory-nya saja

PPP Abstract Factory Konsekuensi Mempromosikan konsistensi antar produk Ketika serumpun keluarga objek produk dirancang untuk dapat bekerja sama, maka yang perlu diingat adalah bahwa aplikasi hanya dapat menggunakan satu keluarga pada suatu waktu Dukungan untuk produk jenis baru menjadi agak sulit Memperluas tugas AbstractFactory untuk menghasilkan jenis produk baru menjadi sangat sulit karena antarmuka AbstractFactory adalah tetap dan pasti hanya untuk serangkaian produk yang sudah didefinisikan sebelumnya Dukungan terhadap produk baru membutuhkan proses memperluas antarmuka Factory, yang juga harus mengubah kelas AbstractFactory dan semua subklas ConcreteFactory

PPP Abstract Factory Contoh Kode (1)

PPP Abstract Factory Contoh Kode (2)

PPP Abstract Factory Contoh Kode (3)

PPP Abstract Factory Contoh Kode (4)

PPP Abstract Factory Perbandingan Abstract Factory dan Factory Method AbstractFactory Creator ConcreteFactory ConcreteCreator AbstractProduct Product Product ConcreteProduct

PPP Singleton

PPP Singleton Tujuan Memastikan sebuah klas hanya dapat memiliki satu instance dan memberikan titik akses global padanya Motivasi: Beberapa kelas harus memiliki tepat satu instance (satu spooler cetak, satu sistem file, satu window manager) Bagaimana kita memastikan bahwa sebuah klas hanya dapat memiliki satu instance yang mudah diakses? Sebuah variabel global membuat sebuah objek mudah diakses namun tidak dapat melarang instansiasi lebih dari 1 objek Klas itu sendirilah yang harus bertanggung jawab untuk melacak instance yang dihasilkan oleh klas tersebut

PPP Singleton Pemakaian Harus ada tepat satu instance dari klas dan objek hasil instansiasi tersebut harus dapat diakses oleh klien dari jalur akses biasa Ketika satu-satunya instance tersebut harus diperluas oleh subklasnya maka klien harus dapat menggunakan instance yang sudah diperluas tersebut tanpa harus memodifikasi kodenya

PPP Singleton Struktur

PPP Singleton Partisipan / Penyusun Singleton Kolaborasi Mendefinisikan sebuah instance yang memungkinkan klien mengakses antarmukanya yang unik Instance adalah sebuah kelas operasi (static di Java) Bertanggung jawab untuk menciptakan instance yang unik Client Mengakses instance Singleton hanya melalui method Instance()

PPP Singleton Konsekuensi Akses terkontrol ke instance tunggal Karena klas Singleton mengenkapsulasi instancenya maka dia memiliki kontrol yang ketat atas bagaimana dan kapan klien harus mengaksesnya Mengurangi name space Pola Singleton adalah perbaikan dari variabel global menghindari penggunaan name space dari variabel global yang menyimpan instance tunggal Memudahkan proses representasi operasi Klas Singleton dapat di-inheritance dengan sangat mudah, dan jika ingin mengkonfigurasi aplikasi yang menggunakan instance dari klas yang diperluas ini kita dapat mengkonfigurasi aplikasi hanya dengan sebuah instance dari klas yang kita butuhkan pada saat run-time Memungkinkan adanya variable number of instances pola ini memudahkan jika kita ingin punya lebih dari satu instance dari kelas Singleton

PPP Singleton Contoh Kode

PPP Terimakasih v^^ Web Services I m with you till the end of the line