design pattern

Upload: g4ruda

Post on 15-Oct-2015

6 views

Category:

Documents


0 download

TRANSCRIPT

  • 5/25/2018 Design Pattern

    1/10

    Design PatternMelwin Syafrizal, S.Kom

    Abstract

    Design Pattern dalam Rekayasa Perangkat Lunak dan ObjectOriented Programming merupakan sebuah solusi terhadapmasalah pemrograman umum yang sering dihadapi sertaberulang kali. Pattern adalah bagaimana mendesain class danbagaimana interaksi yang terjadi antar class tersebut sehinggaclass yang kita bangun bisa lebih elegan dan reusable (dapatdipakai berulang-ulang).

    Pendahuluan

    What is a Design Pattern?Christopher le!ander says" #$ach pattern describes a problem %hich

    occurs o&er and o&er again in our en&ironment" and then describes the coreo' the solution to that problem" in such a %ay that you can use this solution amillion times o&er" %ithout e&er doing it the same %ay t%ice# *+,,.Setiap pola mendeskripsikan sebuah permasalahan yang terus munculdalam lingkungan kita, dan kemudian mendeskripsikan inti solusi daripermasalahan tersebut sedemikian rupa sehingga Anda bisa menggunakansolusi ini sejuta kali tanpa harus melakukannya dengan cara yang sama duakali.

    1

  • 5/25/2018 Design Pattern

    2/10

    Design Patternadalah sebuah istilah !"nglish# dalam $ekayasa %erangkat&unak !Software "ngineering# yang mengacu kepada solusi umum yangdapat digunakan secara berulang kali untuk menyelesaikan masalah'masalah umum yang ditemukan dalam disain perangkat lunak. Sebuah

    design pattern tidak berbentuk solusi akhir yang dapat langsungditerjemahkan menjadi kode program.

    Design pattern merupakan penjelasan atau template yang menunjukkanbagaimana cara menyelesaikan sebuah masalah yang kemudian dapatdigunakan di berbagai situasi yang berbeda'beda. Design pattern untukobject-orientedbiasanya menunjukkan relasi dan interaksi antar kelas danobjek, tanpa menjelaskan kelas dan objek akhir yang terlibat dalam sebuahaplikasi. Algoritma biasanya tidak disebut sebagai design pattern, karenaalgoritma akan menjadi solusi masalah komputasi dan bukan masalah

    disain.

    Model dan Pola Rancang

    (agaimana cara seseorang mengolah informasi dalam otaknya) (agaimanacara Anda membaca tulisan ini) (ahasa *ndonesia dibaca dengan caradieja. +uruf ( dan A, dibaca (A, huruf - dan A, dibaca -A, demikianseterusnya. -oba kita lihat kata bahasa. Apakah otak Kita sewaktu melihatkata bahasa akan mengeja keenam huruf tersebut baru kemudian bisa

    diambil kesimpulan, bahwa keenam huruf b'a'h'a's'a itu harus dibacasebagai bahasa. Kita yang sudah terbiasa membaca, mengenali katabahasa dari bentuk, bukan dieja, kecuali untuk anak'anak sekolah dasartingkat awal.

    ika otak harus mengeja setiap kata yang dibaca, betapa meletihkanpekerjaan tersebut. /etapi otak tidak menggunakan cara yang melelahkantersebut, melainkan dengan cara mencocokkan pola !pattern matching#./iap kata digabungkan hingga menjadi kalimat yang dapat dipahami karenamemberi makna, sehingga sejumlah perkataan dalam bahasa yang cuma

    ada beberapa puluh ribu kata, tidak sulit bagi seseorang untukmengumpulkan pola'pola dalam otaknya. -ara yang sama juga dilakukanoleh pembaca huruf kanji /ionghoa, yang mempunyai puluhan ribu bentukberbeda. Seseorang mampu mengenali ribuan jenis huruf kanji yangberbeda itu bukanlah keajaiban, tetapi merupakan kemampuan dasar dariotak manusia. 0mumnya setiap orang akan mampu melakukannya jikamemang berniat mempelajarinya.

    2

  • 5/25/2018 Design Pattern

    3/10

    %engenalan pola memungkinkan otak manusia untuk menangani banyaksekali masukan dari alat indera kita. /anpa pengenalan pola, manusialumpuh. "dward de (ono meneliti tentang mekanisme berpikir danmenyimpulkan bahwa12 #' the brain %ere not a pattern-making system" %e

    %ould not be able to read" %rite" or talk. $&ery acti&ity" like getting dressed inthe morning" %ould be a major time consuming task. *port %ould beimpossible - 'or e!ample" a gol'er %ould ha&e consciously to direct e&ery

    part o' e&ery s%ing...#3 ika otak bukan sistem pemetaan pola, kita tidakakan mampu untuk membaca, menulis atau berbicara. Setiap kegiatanseperti berpakaian di pagi hari, akan menjadi kegiatan yang berat danmelelahkan. Sport tidak mungkin dilakukan, misalnya, seorang pemain golfharus dengan sadar menghitung setiap ayunan yang dia lakukan.

    Kali ini kita tidak akan membicarakan mekanisme berpikir lebih lanjut, tetapi

    contoh penggunaan pola dalam mekanisme berpikir merupakan sebuahcontoh yang bagus untuk memperlihatkan bagaimana cara pengenalan polamemungkinkan effisiensi di bidang lain.

    Salah satu dorongan terbesar pada perkembangan teknologi informasidalam dua dekade terakhir tahun terakhir ini, adalah implementasi dari carapemrograman berbasis pola. Secara luas, sistem semikian mendasarkanpada (ahasa %ola !Pattern Language#. *mplementasi %attern &anguagebukan sekedar pada cara pengembangan produk, tetapi juga sudah masukdalam spesifikasi produk itu sendiri sendiri.

    4alaupun teknologi informasi dan electical engineering saat kini merupakanbidang'bidang yang paling banyak menggunakan dasar pemikiran berbasispola, tetapi yang pertama kali merumuskannya secara komprehensif bukanseseorang yang berasal dari latar belakang teknologi informasi atauenjinering elektrical, tetapi seorang arsitek bangunan yang merancangpembangunan kota. 5amanya -hristopher Ale6ander. (ersama denganrekan'rekannya, dia menulis buku yang ternama dan menjadi karya klasik dibidang arsitektur, dan digunakan dalam banyak bidang lain, yaitu Pattern

    Language pada tahun 17889

    .

    1"dward de (ono, * am $ight, :ou Are 4rong2 ;rom /his to the 5ew $enaisance,

    1771.2-hristopher Ale6ander, Pattern Language /o%ns" 0uildings" Construction,

    1788

    3

  • 5/25/2018 Design Pattern

    4/10

    (uku tersebut diatas merupakan sumbangan buat bidang arsitektur, tetapipengaruhnya di Software "ngineering terlihat jauh lebih besar daripadapengaruhnya di bidang arsitektur. (uku itu kemudian diterjemahkan dalambahasa Software "ngineering oleh /he 1ang o' 2our pada tahun 177esign %atterns yang sudah diakui kemampuannya, diterimadan diaplikasikan oleh banyak praktisi. >esign %atterns yang cukup populeradalah yang diperkenalkan /he ?ang of ;our !?o;# ' "rich ?amma, $ichard+elm, $alph ohnson dan ohn @lissides. >alam /he ?ang of ;our !?o;#terdapat 9= %attern yang dibagi menjadi = kelompok besar, sebagai berikut 2

    Creational Patterns (cara class/object di-inisiasi).

    1. Abstract ;actory !-reates an instance of seeral families of classes#9. (uilder !Separates object construction from its representation#=. ;actory Method !-reates an instance of seeral deried classes#B. %rototype !A fully initialized instance to be copied or cloned#ecorator !Add responsibilities to objects dynamically#

  • 5/25/2018 Design Pattern

    5/10

    I. State !Alter an objectGs behaior when its state changes#7. Strategy !"ncapsulates an algorithm inside a class#1J. /emplate Method !>efer the e6act steps of an algorithm to a

    subclass#

    11. @isitor !>efines a new operation to a class without change#

    Secara singkatnya, design pattern adalah best practicepola'pola desainkelas pada perancangan berorientasi objek. >engan mengaplikasikandesign patternini, desain sebuah aplikasi dapat menjadi dinamis terhadapperubahan.

    (erikut ini beberapa contoh design patternyang umum digunakan2

    a. Creational(erurusan dengan pembuatan objek !object creation#. Patternjenis iniberkaitan dengan pembuatan objek.

    #. SingletonKelas yang hanya dapat diinstansiasi menjadi 1 objek. Setiap yangmembutuhkan layanan kelas ini akan mendapatkan instans objekyang sama. Kelas ini memiliki konstruktor yang hak aksesnyaadalah priate !atau protected dalam beberapa kasus#. Konstruktorhanya dapat dipanggil dari dalam kelas. Hbjek lain yangmembutuhkan kelas ini dapat meminta instans kelas dengan

    memanggil method statik GetInstance.

    -ontoh kelas !dalam bahasa jaa# yang merupakan Singleton2

    class Singleton { private static Singleton instance = null; // konstrukto yang modifiernya private private Singleton { } public static Singleton GetInstance() {

    if (instance == null) { instance = ne Singleton(); } return instance; }}

    5

    http://en.wikipedia.org/wiki/State_patternhttp://en.wikipedia.org/wiki/Strategy_patternhttp://en.wikipedia.org/wiki/Template_method_patternhttp://en.wikipedia.org/wiki/Visitors_patternhttp://en.wikipedia.org/wiki/State_patternhttp://en.wikipedia.org/wiki/Strategy_patternhttp://en.wikipedia.org/wiki/Template_method_patternhttp://en.wikipedia.org/wiki/Visitors_pattern
  • 5/25/2018 Design Pattern

    6/10

    9. $actor%Design patternini memisahkan kode untuk membuat objek, sehinggaketika jenis objek yang dapat dibuat bertambah, kode yang berubahhanya kode pembuatan objeknya saja.

    b. !eha"ioralDesign patternyang terkait dengan kelakuan !beha&ior#.

    #. &bser"er

    Mempertegas ketergantungan hubungan one to many antaraobjek'objek agar ketika satu ojek merubah keadaan !status#, makasemua objek yang memiliki ketergantungan melaporkan danmeng'update secara otomatis.

    ?ambar Hbserer 0M& class diagram

    9. Strateg%(erguna untuk memecah algoritma menjadi bagian'bagian kecil,yang dapat diganti dengan mudah.

    6

  • 5/25/2018 Design Pattern

    7/10

    c. StructuralPattern yang masuk jenis ini adalah yang terkait dengan masalahstruktural.

    1. Ada'ter%attern untuk menyesuaikan interface dari sebuah kelas menjadiinterface yang lain.

    9. $acade%attern untuk memisahkan kode rumit.

    Selain design pattern yang disebutkan di atas, masih banyak lagi designpatternlainnya yang tidak sepopuler design pattern-design patterndi atas.

    Pola Rancang (Design Pattern)

    Seperti yang disampaikan -hristopher Ale6ander2 Setiap polamendeskripsikan sebuah permasalahan yang terus muncul dalamlingkungan kita, dan kemudian mendeskripsikan inti solusi daripermasalahan tersebut sedemikian rupa sehingga Anda bisa menggunakansolusi ini sejuta kali tanpa harus melakukannya dengan cara yang sama duakali.

    Sederhana sekali, dan sebenarnya tanpa Ale6ander2 katakan sekalipun,

    semua orang juga sudah tahu tanpa disadari. $oda bulat sudah diciptakandari jaman dahulu kala, lalu rancangan itu dipergunakan dimana'manadalam banyak rancangan lain. Seorang perancang membuat satu pintu, laludipakai dimana'mana pada banyak rancangan. Anak'anak kecil jugamerupakan ahli dalam bidang pola !pattern#. Mereka bisa merangkai mainan&ego sedemikian rupa sampai mencapai bentuk yang rumit, padahalawalnya hanya merupakan repetisi dari elemen'elemen sederhana. Adayang merancang rumah dengan ukuran besar yang bisa dimasuki olehmanusia dari butir'butir kecil lego tersebut.

    Apa yang dikemukakan oleh -hristopher Ale6ander itu, sebenarnya tidakada yang luar biasa. /etapi dia mengemukakan hal yang belum benar'benardisadari banyak orang sebagai satu fondasi penting dalam rancang bangun.

    Ale6ander juga membicarakan tentang Katalog %ola !Pattern Catalog# yangtidak lain adalah pengorganisasian pola'pola yang ada. *tu juga sudahdilakukan orang sejak lama.

    7

  • 5/25/2018 Design Pattern

    8/10

    -oba Anda perhatikan perusahaan supplier, umumnya merekamenyediakan buku katalog produk'produk mereka. %erusahaan bahanbangunan, akan memberi kita katalog bahan'bahan bangunan. >alamkatalog itu disusun bahan'bahan dan komponen'komponen secara teratur,

    misalnya bagian pintu, nanti ada bagian %egangan %intu yang terdiri daribermacam'macam pegangan, bagian komponen dapur, dsb. Apa yangdimaksud dalam (ahasa %ola tentang Katalog %ola, adalah persis apa yangdirepresentasikan oleh buku katalog itu. adi apa susahnya) /idak ada...

    >imulai dengan pengetahuan bahwa pattern itu gampang, kita memulaie6plorasi kita dalam dunia pattern ini. /erkadang, cuma bahasa dan jargon'

    jargon yang bikin seseorang pusing, padahal konsep dibelakangnyasederhana sekali.

    Model "s Pattern

    0mumnya kita lebih mengenal Model daripada %attern. *tu disebabkanModel adalah konsep yang sudah matang, dan dipelajari di banyak tempat.Kita mengenal pesawat model, yaitu pesawat dalam bentuk yang lebih kecildaripada ukuran sebenarnya. Ketika kontraktor ingin membangun sebuahgedung, dia membuat model gedung dalam ukuran kecil, sehingga parainestor bisa mendapatkan gambaran tentang gedung yang ingin dibangun.

    %ara perancang pakaian menggunakan model untuk mempromosikan baju'baju rancangan mereka. adi sebelum seorang wanita memutuskanmembeli pakaian tersebut, lihatlah bagaimana pakaian itu dikenakan olehsang model -atherine 4ilson, dan calon pembelipun membayangkan dirinyaseperti -atherine 4ilson !walaupun mungkin dengan ukuran badan yangbeda#.

    Model adalah abstraksi dari realitas. $ealitas di dunia dalam pandanganpertama terlihat seperti chaos, tak teratur. Model memfilter bagian'bagianyang tidak diperlukan untuk memperlihatkan kerangka bagian utama, dan

    menjadikannya sebagai pengganti dari realitas tersebut untuk diamati ataudimengerti. Misalnya, sebuah patung pualam dari seorang wanita di $oma.4anita sebenarnya yang dibuat patung mempunyai banyak sekali bulu'buludi kulit, bintik'bintik di muka, semua itu disepuh halus pada pualam, danmemperlihatkan wanita secara sempurna. /idak heran ada cerita pemahatpatung :unani yang jatuh cinta pada patung yang diukirnya !%ygmalion#.

    8

  • 5/25/2018 Design Pattern

    9/10

    $umus'rumus dalam ilmu fisika merupakan model dari realitas juga, danselalu berdasarkan asumsi'asumsi tertentu. %ara ekonom seringmenggunakan kata ceteris paribus ketika mengemukakan sebuah modelsederhana, yang berarti model itu berlaku jika semua hal lain dianggap

    sama !yang dalam realitas sebenarnya pasti berbeda#.

    %ola atau pattern itu terutama bukan abstraksi dari realitas. %attern lebihmengacu pada pengalaman !e!perience# berrealitas. %engalamanmemperlihatkan adanya repetisi dari realitas. Suatu pattern selalu berulang!kalau tidak berulang, maka tidak lagi dinamakan sebagai pattern#. >aripengalaman seorang tukang jahit, dia bisa mendapatkan bahwa pola'polabaju pelanggannya mempunyai bagian yang sering berulang. >aripengalaman itu, dia bisa membuat pola standar, dan kemudian pola ini barudisesuaikan ke badan setiap orang !customi3ation#. Setiap benda di dunia

    ini, jika dipotong terus menerus menjadi kecil'kecil, dan akan sampaisaatnya ketika benda itu tidak bisa lagi dipotong tanpa menjadikan bagian'bagian potongan menjadi bahan lain. (agian terkecil itu kita sebut molekul.Setiap molekul dengan molekul lain membuat pola yang terus menerusberulang, dan dengan kemudian membuat benda dalam ukuran besar, danpada akhirnya membentuk jagad raya. Kita melihat jagad raya begitu luasdan kompleks, tetapi sebenarnya semua itu hanyalah pengulangan pola'pola dari molekul'molekul sederhana.

    esi'ulan

    (aik Model maupun %attern, punya satu tujuan utama, yaitu mengatasikompleksitas masalah. Model mengatasi kompleksitas masalah denganmemfilter hal'hal yang tidak signifikan untuk mendapatkan bagian yangterpenting yang bisa direpresentasikan. Sedangkan %attern mengatasikompleksitas dengan mendapatkan repetisi E pengulangan dari pola'poladasar.

    Model itu bersifat struktural, sedangkan %attern itu bersifat literal. >engan

    Model, kita melihat bagaimana komponen'komponen dalam model tersebutsaling berhubungan secara struktural dalam membangun model tersebut.>engan %attern, kita melihat bagaimana pola'pola dasar saling melengkapiuntuk membuat suatu gambaran yang lebih besar.

    9

  • 5/25/2018 Design Pattern

    10/10

    Kita menggunakan Model dan %attern untuk mengatasi kompleksitas darirealitas. %erpaduan antara model dan pattern, akan menghasilkan kekuatanganda dalam mengatasi kompleksitas. Kita bisa mendapatkan 4odelling%ith Patterns, dan Patterns o' 4odels. Semua ini adalah usaha untuk

    meningkatkan kemampuan kita dalam mengatasi persoalan yang semakinlama semakin rumit. /idak ada yang menyangkal bahwa persoalan teknologisaat ini jauh lebih rumit daripada puluhan tahun lalu. /etapi banyakperancang dan ahli teknologi masa kini merasa bahwa tugas mereka malahsemakin mudah, berkat digunakannya Model dan %attern. >ua konsep yangsebenarnya sederhana, tetapi mampu membuat pembedaan yang berarti.

    Da*tar Pustaa+

    http2EEale6budiyanto.web.idE9JJDEJ8E=JEintroducing'to'design'pattern.html,*ntroducing /o >esign %attern,Software "ngineringAle6 (udiyanto

    http2EEen.wikipedia.orgEwikiE>esignpattern!computerscience#

    http2EEwww.dofactory.comE%attern sE%attern s.asp6, >esign %atterns in -L and@(.5"/ ' ?ang of ;our !?H;#

    http2EEwww.socineer.comEt6tEsains'patmodel.html, Model dan %ola $ancang,

    /he ?ang of ;our !?o;# "rich ?amma, $ichard +elm,$alph ohnson, andohn @lissides. >esign %atterns2 "lements of $eusable Hbject'Hriented

    Software !*S(5 J'9J1'D==D1'9#

    10

    http://alexbudiyanto.web.id/2006/07/30/introducing-to-design-pattern.htmlhttp://alexbudiyanto.web.id/category/software-engineringhttp://alexbudiyanto.web.id/author/admin/http://en.wikipedia.org/wiki/Design_pattern_(computer_science)http://www.dofactory.com/Patterns/Patterns.aspxhttp://www.dofactory.com/Patterns/Patterns.aspxhttp://www.dofactory.com/Patterns/Patterns.aspxhttp://www.dofactory.com/Patterns/Patterns.aspxhttp://www.dofactory.com/Patterns/Patterns.aspxhttp://www.socineer.com/txt/sains-patmodel.htmlhttp://www.socineer.com/txt/sains-patmodel.htmlhttp://www.socineer.com/txt/sains-patmodel.htmlhttp://www.socineer.com/txt/sains-patmodel.htmlhttp://en.wikipedia.org/wiki/Erich_Gammahttp://en.wikipedia.org/wiki/Richard_Helmhttp://en.wikipedia.org/wiki/Ralph_Johnsonhttp://en.wikipedia.org/wiki/John_Vlissideshttp://en.wikipedia.org/w/index.php?title=Special:Booksources&isbn=0201633612http://alexbudiyanto.web.id/2006/07/30/introducing-to-design-pattern.htmlhttp://alexbudiyanto.web.id/category/software-engineringhttp://alexbudiyanto.web.id/author/admin/http://en.wikipedia.org/wiki/Design_pattern_(computer_science)http://www.dofactory.com/Patterns/Patterns.aspxhttp://www.dofactory.com/Patterns/Patterns.aspxhttp://www.dofactory.com/Patterns/Patterns.aspxhttp://www.socineer.com/txt/sains-patmodel.htmlhttp://en.wikipedia.org/wiki/Erich_Gammahttp://en.wikipedia.org/wiki/Richard_Helmhttp://en.wikipedia.org/wiki/Ralph_Johnsonhttp://en.wikipedia.org/wiki/John_Vlissideshttp://en.wikipedia.org/w/index.php?title=Special:Booksources&isbn=0201633612