BAB II STUDI PUSTAKA 2.1 CODE GENERATOR

dokumen-dokumen yang mirip
3.1 APLIKASI YANG DITANGANI OLEH CODE GENERATOR

PENGEMBANGAN CODE GENERATOR BERBASIS WEB UNTUK MEMBANGKITKAN KODE MODUL APLIKASI WEB

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

Mengenal Codeigniter (CI) Framework

CODEIGNITER 3. Belajar Mandiri. Zamah Sari

BAB II LANDASAN TEORI Konsep Dasar Membangun Aplikasi Berbasis Web

BAB 2 TINJAUAN PUSTAKA

TUGAS PEMROGRAMAN III

BAB IV ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

Bab 2 Tinjauan Pustaka 2.1 Kajian Pustaka

PENERAPAN JAVA SERVER FACES UNTUK DESIGN PATTERN WEB

PRAKTIKUM. Rekayasa Web. Modul 6: Restful API Server & Client Codeigniter. Laboratorium Teknik Informatika Universitas Pasundan

BAB III LANDASAN TEORI

BAB III LANDASAN TEORI

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

PENDAHULUAN. 1.1 Latar Belakang Masalah BAB I

4.1 RANCANGAN KELAS APLIKASI CODE GENERATOR

BAB II LANDASAN TEORI. bidang media komunikasi dan informasi. Internet adalah suatu jaringan komputer

BAB III LANDASAN TEORI

PEMROGRAMAN PHP DASAR

Rancang Bangun Aplikasi Perangkat Bergerak Layanan Pemesanan Barang (Studi Kasus Dinas Kebersihan dan Pertamanan Kota Surabaya )

Bab 2 Tinjauan Pustaka

BAB III LANDASAN TEORI

BAB II ANALISIS DAN PERANCANGAN. Sistem informasi penjualan dan pembelian Tissue SMART NARENA

Bab 2 Tinjauan Pustaka 2.1 Penelitian terdahulu

FRAMEWORK. Dengan framework seorang web programmer dapat membangun aplikasi

3 BAB III LANDASAN LANDASAN TEORI

BAB III LANDASAN TEORI

Rekayasa Web Pertemuan 8

BAB II LANDASAN TEORI

Implementasi Manajemen Perpustakaan menggunakan Framework Codeigniter (CI) Dengan Teknik Hierarchical model view controller (HMVC) ARI MUZAKIR *

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB II TINJAUAN PUSTAKA

BAB III LANDASAN TEORI

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI 2.1 LAYANAN BERBASIS WEB (WEB SERVICE)

BAB 2 TINJAUAN PUSTAKA DAN DASAR TEORI. adalah perbandingan antara karya tulis yang telah dibuat dan karya tulis yang akan

SUMBER BELAJAR PENUNJANG PLPG

BAB I PENDAHULUAN. Dari tahun ke tahun sudah tidak dapat dipungkiri bahwa teknologi informasi

BAB II ANALISIS DAN PERANCANGAN. pendekatan perancangan sistem berorientasi objek. Perancangan sistem

PHP (HYPERTEXT PREPROCESSOR)

MODUL 4 PHP PART 1 (PENGENALAN PHP + VARIABEL)

MODUL 3 Tipe Data, Variabel Dan Konstanta Pada Php

BAB II TINJAUAN PUSTAKA. Bab ini membahas teori-teori yang dijadikan acuan tugas akhir ini.

XML vs JSON. by: Ahmad Syauqi Ahsan

BAB II LANDASAN TEORI

Pengenalan Script. Definisi HTML

BAB III LANDASAN TEORI

BAB I PERSYARATAN PRODUK

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI

Sistem Informasi Akademik Berbasis Framework Codeigniter Pada SMA Muhammadiyah 6 Palembang MenggunakanMetode (HMVC)

BAB II LANDASAN TEORI. Internet adalah singkatan dari Interconnection network, merupakan

HASIL DAN PEMBAHASAN Investigasi Awal

BAB 4 IMPLEMENTASI DAN EVALUASI. perangkat keras yang dibutuhkan pengguna maupun pengembang web serta penjelasan

BAB 2 LANDASAN TEORI

Pengenalan JavaScript

MI2193 PEMROGRAMAN WEB LANJUT PHP FRAMEWORK. Created by MTA Revised by HPU

BAB 3 LANDASAN TEORI

TPI4202 e-tp.ub.ac.id

BAB 3 LANDASAN TEORI

Mengenal Pemrograman Web Dengan JSP

PERANCANGAN SISTEM INFORMASI MANAJEMEN PERPUSTAKAAN MENGGUNAKAN POLA MODEL-VIEW- CONTROLLER (MVC)

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. sebuah sistem pencarian lokasi kuliner berbasis mobile web untuk wilayah

BAB I PENDAHULUAN 1.1. Latar Belakang

BAB II TINJAUAN PUSTAKA

Chapter 2. Tipe Data dan Variabel

HTML 5. Geolocation Web SQL Database, media penyimpanan database lokal

BAB III ANALISA DAN PERANCANGAN SISTEM. permasalahan yang ada sebagai dasar untuk membuat sebuah solusi yang

BAB 3 LANDASAN TEORI

Pemrograman Web Berbasis Framework. Pertemuan 4 : Konsep MVC : Controller. Hasanuddin, S.T., M.Cs. Prodi Teknik Informatika UAD

BAB III LANDASAN TEORI. pengembang untuk membuat sebuah aplikasi web. Dilengkapibanyak library dan

SISTEM MONITORING PERALATAN BENGKEL MENGGUNAKAN METODE WATERFALL DENGAN MVC CODEIGNITER. Andriyani Siyoperman Gea ABSTRAK

Materi 2 E-Commerce Lanjut (CodeIgniter) 3 SKS Semester 7 S1 Sistem Informasi UNIKOM 2015 Nizar Rabbi Radliya

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. bentuk web. Bahasa pemrograman yang digunakan PHP, HTML, CSS, AJAX

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. dilakukan dengan menggunakan teknologi yang berbeda beda. Selain itu terdapat

BAB II KAJIAN PUSTAKA. seluler (mobile) seperti telepon pintar (smartphone) dan komputer tablet. Android

Membuat Toko Online dengan Teknik OOP, MVC, dan AJAX

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

BAB 3 LANDASAN TEORI

BAB I PENDAHULUAN... I-1

BAB III LANDASAN TEORI. dengan istilah web adalah sebuah sistem terhubung dari hypertext document yang

RANCANG BANGUN SISTEM PENGELOLAAN DATA KULIAH KERJA LAPANG PLUS MEMANFAATKAN FRAMEWORK CODEIGNITER DENGAN MENGGUNAKAN METODE WATERFALL

PEMAHAMAN DASAR DASAR JAVA

Analisis Penanganan SQL Injection pada Basis Data MySQL dengan Framework Code Igniter dan PHP

Kholid Fathoni EEPIS ITS Surabaya

BAB II. KAJIAN PUSTAKA. beberapa aktifitas yang dilakukan oleh manusia seperti system untuk software

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. Tinjauan pustaka yang dipergunakan dalam penelitian disajikan melalui

BAB III LANDASAN TEORI. Pengertian sistem menurut Jogianto (2005 : 2) mengemukakan

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

3.1 Ganesha Digital Library

BAB IV HASIL DAN PEMBAHASAN

BAB III LANDASAN TEORI. Pada bab ini akan dibahas dasar-dasar teori yang berkaitan dengan pembangunan sistem.

Rancang Bangun Aplikasi Code Sharing Sebagai Alat Bantu Media Interaktif Perkuliahan Pada Mata Kuliah Pemrograman Web

BAB III LANDASAN TEORI

BAB V IMPLEMENTASI DAN PENGUJIAN

BAB 2 LANDASAN TEORI. disebut HTML (HyperText Markup Langauge). Pada perkembangan berikutnya,

Transkripsi:

BAB II STUDI PUSTAKA Bab ini berisi penjelasan hasil studi pustaka mengenai dasar teori, konsep, dan teknologi yang berkaitan dengan Tugas Akhir ini. Penjelasan yagn terdapat pada bab ini meliputi penjelasan mengenai, dasar teori tentang code generator, JavaScript Object Notation, dan penjelasan mengenai aplikasi web berorientasi objek. 2.1 CODE GENERATOR Code generator pada dasarnya adalah sebuah program yang menulis kode program lain. Sebuah code generator akan membaca meta-data dari rancangan perangkat lunak dan membangkitkan kode program dari informasi tersebut. Meskipun dulu kurang populer, konsep pembangkitan kode otomatis ini bukanlah konsep yang baru [STE02]. Dengan berkembangnya framework-framework yang kompleks, maka kebutuhan akan sebuah program yang dapat membantu pengembangan aplikasi semakin meningkat. Semakin kompleks sebuah framework, maka semakin terasa kegunaan dari sebuah Code Generator [HER03]. Code generator dapat membantu pengembang dalam melakukan sebuah pekerjaan yang berulang-ulang. Memang sebuah code Generator bukanlah cara paling efektif dan efisien untuk membantu pengembangan sebuah perangkat lunak. Akan tetapi, dengan adanya sebuah Code Generator, pekerjaan pengembang perangkat lunak menjadi lebih ringan karena pekerjaan yang dapat dilakukan secara otomatis sudah terselesaikan. 2.1.1 Mekanisme Code Generator Seperti telah disebutkan pada Subbab 1.1, code generator dapat melakukan tugastugas yang berulang-ulang secara otomatis. Sisa pekerjaan yang lebih kompleks dapat dilakukan oleh porgrammer. Pada Gambar II-1, dapat dilihat posisi code generator dalam sebuah proses implementasi perangkat lunak [HER03]. Dapat II-1

II-2 dilihat bahwa sebuah code generator akan menerima definisi atau template sebuah kode dan setelah digabungkan dengan hasil kode suntingan programmer, maka kode-kode tersebut dapat dikompilasi dan diuji. Untuk proses pengembangan yang menggunakan bahasa yang tidak perlu dikompilasi, maka bagian kompilasi dapat diabaikan dan proses pengujian langsung dilakukan. Gambar II-1 Posisi code generator dalam proses implementasi perangkat lunak Gambar II-2 menunjukkan 3 hal penting yang perlu diperhatikan dalam membuat code generator. Ketiga hal ini harus benar-benar dimengerti dan dapat diprediksi variasinya. Hal-hal tersebut adalah [STE02]: 1. Template kode sebagai hasil dari perancangan perangkat lunak 2. Meta-data yang biasanya berupa model data yang digunakan dalam perangkat lunak yang akan dibangkitkan. 3. Domain Rule yang mengatur fungsi dan behaviour dari model data yang diberikan. Biasanya domain rule ini diberikan dalam bentuk hasil perancangan perangkat lunak atau template kode.

II-3 Gambar II-2 Unsur-unsur penting dalam pembangkitan kode 2.1.2 Jenis Code Generator Code Generator terbagi menjadi 2 kategori, yaitu pasif dan aktif. Code Generator pasif hanya bertugas untuk membangkitkan kode awal yang harus dikembangkan lagi oleh programmer. Semua bagian dari hasil kode yang dibangkitkan dapat diubah dengan sesuka hati oleh programmer yang bertanggung jawab atas kode tersebut [HER03]. Generator pasif ini tidak bisa menerima input tambahan dari pengguna untuk mengubah kode hasil keluarannya. Sebuah Code Generator aktif dapat membangkitkan sebuah kode yang sama berulang kali. Apabila perubahan dibutuhkan, maka pengguna dapat memasukkan parameter input yang baru dan kode yang dihasilkan pun akan berubah sesuai keinginan pengguna. Jenis generator yang akan dibahas pada subbab ini adalah jenis Code Generator aktif. Code Generator aktif terbagi atas beberapa model yang meliputi berbagai solusi, mulai dari yang paling sederhana sampai yang paling rumit. Ada banyak cara dalam mengelompokkan generator, salah satunya pengelompokan dilihat dari masukan dan hasil keluarannya. Dilihat dari sudut padang ini, Code Generator dapat dikelompokkan menjadi 6 tipe yaitu Code Munger, Inline-Code Expander, Mixed-code Generator, Partial Class Generator, Tier/Layer Generator dan Full- Domain Language Generator [HER03].

II-4 2.1.2.1 Code Munger Munging merupakan sebuah kata informal dalam bahasa inggris berarti mengubah sesuatu menjadi bentuk lain. Dari kode masukan yang diberikan, Code Munger akan memilih hal-hal penting dari kode tersebut dan menggunakannya untuk membuat satu atau lebih file keluaran dalam berbagai jenis file. Skema mekanismenya dapat dilihat pada Gambar II-3. Dengan memberikan sebuah source code sebagai masukan, Code Munger akan melakukan parsing kode dan dengan memanfaatkan template yang ada, membangkitkan file keluaran. Gambar II-3 Mekanisme code munger Code munger dapat dimanfaatkan untuk membangkitkan kode pada banyak kasus aplikasi. Penggunaan paling umum adalah untuk membuat sebuah dokumentasi dari program yang ada. Selain itu, code munger juga dapat digunakan untuk membaca nilai-nilai konstanta atau prototipe fungsi dari sebuah file. 2.1.2.2 Inline-code Expander Skema dari inline-code expander yang dapat dilihat pada Gambar II-4, mirip dengan code munger. Yang berbeda adalah masukan dan hasil keluarannya. Masukan kode untuk jenis generator ini memiliki bagian kode yang ditandai agar dapat dikenali dan dikembangkan oleh program generator. Bagian kode yang ditandai ini akan diganti menjadi kode yang dibangkitkan dan dimasukkan ke file keluaran. File keluaran yang dihasilkan adalah kode yang berformat sama dengan file masukan.

II-5 Gambar II-4 Mekanisme inline-code expander Contoh paling umum pemanfaatan inline-code expander adalah penambahan kode SQL ke dalam sebuah source code. Program expander akan membaca kode masukan, lalu menambahkan kode SQL di tempat yang telah diberikan tanda khusus pada kode masukan. Selanjutnya, kode yang telah diubah disimpan ke dalam file baru. 2.1.2.3 Mixed-code generator Gambar II-5 Mekanisme mixed-code generator Mixed-code generator menggunakan mekanisme yang mirip dengan inline-code expander. Perbedaan dengan inline-code expander adalah generator tipe ini memodifikasi langsung file masukan dan menimpa file masukan. File keluarannya dapat langsung dikompilasi atau dieksekusi, atau dimasukkan kembali ke dalam generator untuk ditambahkan kode lainnya. Perbedaan lainnya adalah bagian kode khusus yang dikenali sebagai bagian yang akan dibangkitkan. Pada inlinecode expander, generator akan mencari kata kunci yang ditulis secara khusus dan berbeda dengan bahasa pemrogramannya. File input dari inline-code expander

II-6 tidak bisa langsung dikompilasi atau dieksekusi. Sedangkan pada mixed-code generator, kata kunci tersebut dimasukkan ke dalam komentar yang berlaku dalam bahasa pemrograman target. Skema yang menunjukkan cara kerja dari mixed-code generator dapat dilihat pada Gambar II-5. Teknik pembangkitan kode mixed-code generator dapat digunakan di berbagai hal dalam pengembangan perangkat lunak, antara lain: 1. Membangkitkan kode antarmuka untuk menyematkan variabel ke kontrol antarmuka. 2. Mambangun kasus uji dari data uji yang disimpan dalam komentar 3. Membuat kode akses basis data dari spesifikasi yang disimpan dalam komentar 2.1.2.4 Partial-class Generator Gambar II-6 Mekanisme partial-class generator Sebuah partial-class generator mambaca file yang berisi definisi abstrak yang menyimpan informasi yang cukup untuk membangun suatu kumpulan kelas. Dengan template yang ada, sebuah kelas dasar dapat dibangun oleh generator jenis ini. Kelas yang dibangun akan menjadi kelas dasar yang dapat dikembangkan oleh programmer menjadi kelas-kelas turunan yang dapat digabungkan ke dalam aplikasi. Gambar II-6 menunjukkan mekanisme dari partial-class generator. Sebuah partial-class generator dapat menjadi dasar dari pembuatan sebuah generator yang bisa membangkitkan keseluruhan kode dari sebuah tier pada

II-7 sebuah aplikasi. Pada kasus generator jenis ini, yang melengkapi tier-nya adalah programmer. 2.1.2.5 Tier/Layer Generator Model ini adalah pengembangan dari partial-class generator. Perbedaan terbesar antara partial-class dan tier generator adalah tier generator bertanggung jawab penuh atas sebuah tier dalam aplikasi n-tier. Programmer tidak perlu lagi menambahkan kelas turunan seperti pada model partial-class. Model ini memberikan keuntungan dalam kecepatan implementasi. Namun, apabila kelas yang akan dibangkitkan sangat khusus, pengembang tetap membutuhkan partialclass generator. Gambar II-7 menunjukkan mekanisme dari tier generator. Gambar II-7 Mekanisme tier generator 2.1.2.6 Full-domain Language Generator Generator model ini menggunakan metode mesin turing yang memiliki definisi penuh sebuah bahasa pemrograman. Pengembang dapat membuat segala macam kemungkinan logika, objek dan aturan yang bisa diakomodasi oleh bahasa yang digunakan. Penggunaan metode ini sangat memudahkan pengembangan, namun untuk mengembangkan generatornya sangat rumit karena diperlukan pengetahuan mendalam tentang bahasa yang digunakan. Selain itu, generator model ini tidak memperhatikan struktur kelas secara semantik. Contoh penggunaan generator ini adalah Mathematica, sebuah bahasa yang mendukung penggunaan matriks secara sederhana. Penggunaan matriks termasuk rumit dalam bahasa pemograman

II-8 tradisional seperti C, C++ atau Java. Dengan mathematica, maka pengembang tidak perlu lagi memikirkan masalah fungsi matematik matriks yang rumit. 2.1.3 Keuntungan dan Kerugian Penggunaan Code Generator Ada beberapa keuntungan dan kerugian penggunaan code generator. Tidak semua keuntungan dan kerugian tersebut dapat terbukti dengan menerapkan code generator pada satu kasus saja. Keuntungan dan kerugian ini mungkin berlaku untuk kasus satu, tetapi tidak berlaku untuk kasus lainnya. 2.1.3.1 Keuntungan Penggunaan Code Generator Keuntungan penggunaan code generator adalah: 1. Konsistensi. Kode yang dibangkitkan oleh mesin akan konsisten karena dilakukan melalui proses yang selalu sama. Perbedaan pendekatan yang dilakukan oleh banyak programmer sebagai salah satu penyebab inkonsistensi kode bisa diminimalisasi 2. Kualitas yang baik. Apabila sebuah generator dikembangkan dengan baik, maka kode yang dihasilkan akan baik juga. Jumlah kesalahan yang dilakukan manusia akibat keteledoran akan berkurang dengan signifikan 3. Waktu perancangan yang lebih besar. Dengan berkurangnya waktu implementasi, maka perancangan bisa lebih mendapat porsi waktu yang besar. 4. Programmer bisa lebih berkonsentrasi pada hal-hal yang lebih spesifik. 2.1.3.2 Kerugian Penggunaan Code Generator Kerugian penggunaan code generator adalah: 1. Waktu inisiasi pengembangan bertambah karena pembangunan code generator sendiri membutuhkan waktu yang cukup besar. 2. Code generator hanya dapat diterapkan pada kondisi yang spesifik.

II-9 3. Untuk kode yang berhubungan dengan basis data, skema basis data yang dipakai harus sudah dirancang dengan baik.. 2.2 JAVASCRIPT OBJECT NOTATION (JSON) JavaScript Object Notation atau lebih dikenal dengan sebutan JSON merupak sebuah format pertukaran data yang disebut-sebut sebagai pengganti dari format XML. Menggunakan format dasar JavaScript, JSON menjadi salah satu pilihan format pertukaran data di internet. 2.2.1 Gambaran Umum JSON JavaScript Object Notation atau JSON adalah format pertukaran data yang berukuran kecil dan ringan untuk digunakan. JSON berformat file teks terstruktur yang mengikuti format JavaScript, dan sifatnya tidak terikat oleh bahasa pemrograman yang digunakan. JSON dirancang agar dapat digunakan secara mudah oleh manusia dan komputer. Sisi kemudahan untuk manusianya adalah, JSON lebih mudah dibuat karena strukturnya mirip dengan JavaScript. Selain itu, tidak ada tag-tag khusus yang perlu diingat untuk menggunakannya. Sedangkan pada sisi komputer atau mesin, proses parsing tidak terlalu sulit karena nilai-nilai di dalamnya sudah dibungkus dalam sebuah objek. Data yang disimpan dalam JSON memiliki 6 tipe dasar, yaitu: 1. Number (integer, real, atau floating point) 2. String (format Unicode, dengan dukungan backslash escape character) 3. Boolean (true atau false) 4. Array (kumpulan nilai terurut yang dipisahkan oleh koma dan ditutup oleh tanda kurung siku) 5. Object (koleksi pasangan key dan value, dipisahkan oleh tanda koma dan ditutup oleh tanda kurung kurawal) 6. null

II-10 2.2.2 Struktur JSON Format JSON adalah sebuah bentuk literal. Bentuk literal dalam sains komputer adalah notasi dalam source code yang merepresentasikan sebuah nilai konstan. Nilai untuk literal ditetapkan pada waktu kompilasi. Sedangkan nilai yang dihasilkan dari perbandingan variabel diberikan pada saat runtime. Format JSON dibangun di atas 2 struktur [SHI09]. Kedua struktur tersebut adalah: 1. Pasangan key/value Dalam berbagai bahasa pemrograman, struktur seperti ini direalisasikan sebagai objek, record, struct, dictionary, hash table, list yang menggunakan key, atau associative array. Contoh bentuk ini ditunjukkan dalam Kode II-1. { a :1, b :2, c :3 } Kode II-1 Contoh JSON - Pasangan Key/Value Dalam Kode II-1, ada tiga pasangan key/value yang menggunakan key a, b, dan c dan masing-masing bernilai 1, 2, dan 3. 2. List nilai terurut Dalam berbagai bahasa pemrograman, struktur seperti ini direalisasikan sebagai array, vector, list, atau sequence. [ 1, 2, 3, nilai 4 ] Kode II-2 Contoh JSON - List Nilai Terurut Dalam Kode II-2, terdapat sebuah array dengan nilai integer 1, 2, 3 dan string berisi nilai 4. Bentuk-bentuk tersebut adalah struktur data yang universal yang didukung oleh banyak bahasa pemrograman modern. Jadi, data dalam JSON dapat dengan mudah dipertukarkan dari satu bahasa ke bahasa lain.

II-11 Berikut ini adalah layout spesifik JSON [BMC06]: Tabel II-1 Layout spesifik JSON Nama Deskripsi object {} { members } members string : value members, string : value array [] [ elements ] elements value elements, value value string, number, object, array, boolean, null 2.2.3 JSON Dalam PHP Banyak framework PHP yang sudah mendukung penggunaan JSON, misalnya SolarPHP, atau Zend. Pada PHP standar, sejak versi 5.2.0, PHP sudah menyediakan library untuk melakukan parsing terhadap JSON. Untuk versi sebelum 5.2.0, library tersebut dapat ditambahkan ke dalam program yang dibuat. Ada 3 fungsi utama dalam library JSON pada PHP, yaitu json_decode, json_encode, dan json_last_error. 2.2.3.1 Fungsi json_decode Fungsi ini menerima masukan input string JSON dan mengkonversinya ke dalam PHP variabel. json_decode ( string $json [, bool $assoc= false [, int $depth= 512 ]] ) Kode II-3 Fungsi json_decode Keterangan: Json : Input string JSON Assoc : Apabila nilainya true, maka objek yang dikembalikan akan dikonversi ke asssociative array.

II-12 2.2.3.2 Fungsi json_encode Fungsi ini menerima masukan dalam bentuk apapun asalkan dalam ter-encode dalam bentuk UTF-8 dan akan mengembalikan string dalam format JSON. string json_decode (mixed $value [, int $options= 0]) Kode II-4 Fungsi json_encode Keterangan: value : Input string JSON options : Nilai bitmask yang terdiri atas JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_FORCE_OBJECT. Nilai defaultnya adalah 0. 2.2.3.3 Fungsi json_last_error Fungsi ini akan mengembalikan error terakhir pada eksekusi parsing JSON terakhir (bila ada). int json_last_error (void) Kode II-5 Fungsi json_last_error 2.3 APLIKASI WEB BERORIENTASI OBJEK Seiring dengan berkembangnya terknologi, penggunaan internet juga berkembang sebagai sarana pertukaran informasi. Salah satu metode pertukaran informasi tersebut adalah dengan menggunakan aplikasi web. Hal ini menunjukkan bahwa pengembangan aplikasi web menjadi hal yang penting. Pembangunan aplikasi web tersebut menggunakan banyak metode dan bentuk. Salah satu bentuk pemrograman aplikasi web adalah aplikasi web berorientasi objek. 2.3.1 Gambaran Umum Aplikasi Web Pengembangan aplikasi web saat ini sudah berkembang sangat pesat. Di awal pengembangannya, sebuah aplikasi web hanya terdiri atas beberapa halaman web,

II-13 sebagian besarnya bersifat statik dengan tujuan informatif atau mengiklankan sesuatu. Saat ini, aplikasi web sudah menjadi sangat kompleks dan sudah menggunakan berbagai macam teknologi [ARR08]. Menurut definisi, aplikasi web adalah sebuah aplikasi client/server yang menggunakan browser web sebagai program client dan dengan menggunakan koneksi internet atau intranet terhubung dengan server yang melakukan layanan interaktif [SHK03]. Aplikasi web menampilkan konten-konten dinamis yang dirancang berdasarkan parameter request yang diberikan oleh pengguna dengan tetap memperhatikan sisi keamanan. Jadi, sebuah situs web yang terdiri atas halaman-halaman statik yang diakses langsung dari file-file berbeda tidak dapat dikategorikan sebagai aplikasi web. 2.3.2 Jenis Aplikasi Web Pengelompokan aplikasi web dapat dilihat dari berbagai macam sudut pandang. Dilihat dari sisi fungsionalitas, aplikasi web dapat dibagi menjadi sembilan kategori, yaitu [ARR08]: 1. Aplikasi Informasional Aplikasi web jenis ini hanya menyediakan informasi bagi penggunanya. Aplikasi web ini tidak terlalu membutuhkan interaksi pengguna dalam operasinya. Pengguna hanya melakukan navigasi dan sesekali mengisi form login, mencari sesuatu, atau hanya menelusuri halaman-halaman web yang ada. Contoh aplikasi web ini adalah koran online, manual online, katalog produk, buku online, dan laporan online. 2. Aplikasi Interaktif Aplikasi web jenis ini sangat membutuhkan interaksi dari pengguna karena aplikasi ini bertujuan untuk mengakomodasi kegiatan penggunanya. Dalam menggunakan aplikasi web yang bersifat interaktif, penggunanya biasanya diharuskan untuk mengisi form-form yang kompleks dan membutuhkan

II-14 perhatian yang lebih dalam mengisinya. Contoh aplikasi web jenis ini adalah online game dan registrasi suatu situs web. 3. Aplikasi Transaksional Aplikasi web jenis ini mengakomodasi penggunanya dalam melakukan transaksi secara online. Dalam aplikasi ini, entitas yang berhubungan tidak hanya pengguna dengan web browser sebagai client dan web server saja. Aplikasi ini juga bisa melibatkan pihak lain seperti bank atau penyedia metode pembayaran online. Contoh aplikasi web jenis ini adalah toko online, online banking dan agen perjalanan. 4. Workflow-oriented Application Jenis aplikasi web ini menekankan fungsinya pada alur kerja yang dilakukan pengguna. Aplikasi web ini akan membantu penggunanya dalam melakukan pekerjaan dengan memfasilitasi salah satu bagian dari pekerjaannya. Contoh aplikasi web ini adalah perencanaan dan scheduling online, manajemen inventory, dan status monitoring. 5. Lingkungan Kerja Kolaboratif Aplikasi web jenis ini mendukung suatu pekerjaan agar tetap bisa dilakukan bersama-sama meskipun anggota timnya tidak berada di suatu tempat yang sama. Dengan aplikasi web ini, pengguna dapat melakukan pembagian kerja dan melakukan koordinasi atas apa yang dikerjakan tanpa harus bertemu langsung dengan anggota tim lainnya. Contoh aplikasi ini adalah kakas perancangan kolaboratif dan kakas authoring terdistribusi. 6. Komunitas Online Aplikasi web jenis ini memfasilitasi para penggunanya dalam melakukan komunikasi satu sama lain. Jenis aplikasi web ini biasanya bersifat spesifik terhadap suatu masalah yang umum digunakan oleh penggunanya. Contoh aplikasi web ini adalah forum-forum online, diskusi kelompok dan lelang online.

II-15 7. Portal Sebuah web portal tidak hanya menyediakan sarana informasi bagi penggunanya. Web Portal juga biasanya menyediakan sarana komunikasi untuk penggunanya. Selain itu, sebuah portal juga bisa meyediakan layanan yang bersifat transaksional. Contoh aplikasi web jenis ini adalah mall online, portal bisnis online, dan portal komunitas tertentu. 8. Aplikasi Semantic Web Semantic web ini merupakan jenis aplikasi web yang tergolong baru dikembangkan. Aplikasi web jenis ini membutuhkan sebuah basis data atau basis pengetahuan sebagai sumber informasinya. Aplikasi web ini terkadang memanfaatkan beberapa konsep intelejensia buatan. Contoh aplikasi web ini adalah knowledge management system dan sistem rekomendasi. 9. Aplikasi Ubiquitous Aplikasi web jenis ini memanfaatkan hampir semua jenis aplikasi lainnya, mulai dari informasional, interaktif, hingga workflow-oriented dan semantic web. Aplikasi jenis ini biasanya spesifik terhadap masalah yang dihadapi pengguna. Aplikasi ini menjadi bersifat custom dan sangat kompleks bila dibandingkan dengan aplikasi jenis lannya. Contoh aplikasi jenis ini adalah layanan customized, multi-platform delivery, dan location-aware service. Aplikasi-aplikasi web tersebut memiliki kompleksitas yang berbeda, sesuai dengan fungsinya. Gambar II-8 menunjukkan grafik kompleksitas dan sejarah pengembangan aplikasi web yang dikelompokkan menurut fungsionalitasnya [SHK03]. Gambar tersebut menunjukkan bahwa semakin modern sebuah aplikasi web, kompleksitas dari aplikasi web yang ada semakin meningkat. Semakin modern sebuah aplikasi web, maka semakin komplekslah tugas dari web aplikasi tersebut. Pada aplikasi web tipe informasional, rancangan aplikasinya hanya berbasis hypertext dengan penambahan rancangan antarmuka. Pada aplikasi web yang lebih modern seperti aplikasi web ubiquitous dan semantic web, perancangan aplikasi akan melibatkan banyak aktivitas seperti perencanaan,

II-16 perancangan informasi, evaluasi, jaminan kualitas, performansi sistem, perawatan manajemen perubahan dan sebagainya. Pengecualian terjadi pada aplikasi portal. Meskipun portal lebih baru dari aplikasi kerja kolaboratif, tetapi tingkat kompleksitasnya tidak terlalu tinggi karena tidak banyak aspek yang rumit dalam sebuah portal. Gambar II-8 Kompleksitas dan Sejarah Pengembangan Jenis-jenis Aplikasi Web 2.3.3 Penggunaan Konsep Objek dan MVC dalam Aplikasi Web Pendekatan pemrograman berorientasi objek tidak terlihat secara nyata sebagai cara untuk menyederhanakan masalah. Pengembangan aplikasi berorientasi objek mungkin terlihat sebagai masalah baru yang lebih besar. Bagi pengembang aplikasi web, pendekatan objek bisa menjadi sebuah komplikasi baru terhadap masalah yang sudah rumit [LAV06]. Pendekatan objek bisa disimpulkan sebagai langkah menggunakan apa yang sudah ada dan tidak perlu menulis ulang. Sebuah objek yang sudah ada bisa

II-17 digunakan di mana saja, tanpa harus menulis ulang isi dari kode kelas objek tersebut seperti pada pemrograman prosedural. Dalam pengembangan web, konsep objek menyederhanakan masalah dengan mengeliminasi proses penyuntingan ulang untuk mengadopsi kode yang sudah ada. Misalnya pada suatu proses pengambilan data dari basis data, kode yang ada tidak perlu disalin di setiap bagian yang membutuhkan akses basis data, tetapi cukup menggunakan objek akses basis data yang sudah ada. Beberapa keuntungan dari penggunaan konsep objek adalah [HAY07]: 1. Reusability Sebuah objek adalah entitas yang memiliki property dan method dan bisa berinteraksi dengan objek lain. Sebuah objek memiliki sebuah tanggung jawab tertentu. Dalam berbagai kondisi, apabila ada masalah yang bisa diselesaikan oleh objek yang sama, maka objek tersebut bisa dipakai berulang kali 2. Refactoring Ketika pengembang perlu untuk melakukan refactoring proyeknya, penggunaan objek sangan memberikan keuntungan karena semua objek merupakan entitas kecil. Hal ini menyederhanakan masalah jika dibandungkan dengan konsep prosedural yang tidak membagi-bagi kode menjadi entitas-entitas kecil. 3. Perawatan Kode berorientasi objek mudah dirawat karena mengikuti konvensi kode yang cukup ketat dan ditulis dengan format yang jelas. Selain itu, karena sifatnya yang terbagi-bagi menjadi entitas kecil, sangat mudah untuk melakukan perubahan dalam masing-masing kodenya.

II-18 4. Efisiensi Konsep pemrograman berorientasi objek sebenarnya dikembangkan untuk meningkatkan efisiensi dan kemudahan proses pengembangan. Beberapa pola perancangan dikembangkan untuk membuat suatu kode yang efisien. Dalam konsep objek dikenal model MVC yang merupakan singkatan dari Model- View-Controler. Model MVC yang skemanya ditunjukkan pada Gambar II-9 melakukan pemisahan antara pemodelan data, pengolahan data, dan antarmuka untuk interaksi dengan pengguna. Pemisahan ini akan memudahkan modularitas dari suatu aplikasi, terutama modularitas antarmukanya. Dengan menggunakan model MVC, setiap bagian akan memiliki tanggung jawab masing-masing dan terpisah satu sama lain. Selain itu, masing-masing bagian akan ter-enkapsulasi sehingga lebih memenuhi konsep objek itu sendiri. Pola MVC merupakan pola arsitektural yang umum digunakan dalam aplikasi web. Pola ini merepresentasikan tiga logical layer dalam aplikasi web 3-tier. Gambar II-9 Skema model MVC Model dalam aplikasi web merepresentasikan business process layer. Bagian ini memodelkan data dan perilakunya pada proses bisnis dalam aplikasi. Model biasanya bertanggung jawab terhadap query yang dilakukan terhadap basis data, penghitungan dalam proses bisinis, dan pemrosesan data lainnya. Model

II-19 melakukan enkapsulasi data dan bersifat tidak terikat dengan cara menampilkan datanya. View dalam aplikasi web memodelkan layer presentasi. Fungsi dati view adalah menampilkan informasi sesuai dengan apa yang diminta oleh client. Informasi yang ditampilkan adalah hasil pengolahan data yang telah dilakukan oleh business process layer. Layer ini tidak bertanggung jawab terhadap sumber data yang dibutuhkan dan bagaimana pengolahan data yang dilakukan. Controller dalam aplikasi web berfuggsi sebagai penghubung antara interaksi pengguna dan business process layer. Controller merupakan layer yang bertanggung jawab atas pengambilan keputusan diantara banyak cara presentasi data. Request dari client ditangani dan diproses oleh controller. Pengambilan keputusan mengenai apa yang akan diproses dan apa hasil yang akan diperlihatkan ke client dilakukan oleh controlller. Secara umum, alur kontrol dari pola MVC yang ditunjukkan dalam Gambar II-9 adalah sebgai berikut: 1. Pengguna berinteraksi dengan antarmuka dengan cara tertentu. 2. Controller menangani masukan pengguna melalui antarmuka. 3. Controller memberikan notifikasi pada model. Proses ini mengubah status dari model. 4. View menampilkan data dengan memanfaatkan model secara tidak langsung. Dalam hal ini, model dan controller tidak mengetahui bagaimana data tersebut ditampilkan. 5. Antarmuka menunggu kembali respon dari pengguna. Proses ini akan dilanjutkan ke proses nomor 1 dan semua proses akan terus berulang selama aplikasi masih berjalan. Ketiga komponen tersebut tidak selalu dipisah sebagai tiga objek fisik yang berbeda. Ada kasus dimana layer-layer harus digabung dalam satu komponen aplikasi [SHI08]. Tetapi, melihat layer-layer tersebut sebagai komponen-

II-20 komponen terpisah akan lebih menguntungkan karena kita dapat menampilkan data dengan cara yang berbeda tanpa harus mengubah struktur keseluruhan aplikasi. 2.3.4 Implementasi Objek dalam PHP PHP merupakan sebuah bahasa scripting [LAV06]. Pada awalnya konsep objek tidak diterapkan dalam PHP. Pada versi ketiga yang dirilis pertengahan tahun 1998, kemampuan untuk melakukan dasar-dasar pemrograman berorientasi objek mula ditambahkan dalam PHP. Ketika versi keempat dirilis, tidak ada perkembangan yang signifikan dalam penerapan model objek di PHP. Hanya dasar dari objek seperti pembuatan kelas dan turunan dari sebuah kelas sudah didukung. Ketika PHP5 dirilis pada tahun 2004, ada banyak ruang untuk pengembangan kemampuan objek dalam PHP. Konsep objek sudah hampir seluruhnya diimplementasi pada PHP5. Dalam PHP5, sudah didukung proteksi data dalam objek, tidak seperti PHP versi sebelumya di mana semua elemen dari kelas dapat diakses secara publik. Selain itu, PHP5 juga sudah menyediakan kelas-kelas standar yang bisa digunakan langsung oleh pengembang. Sintaks pemrograman objek dengan PHP tidak jauh berbeda dengan bahasa pemrograman lainnya, mulai dari deklarasi kelas, properti, dan method. Yang berbeda adalah, semua method di PHP bersifat sebagai fungsi yang bisa mengembalikan nilai ataupun tidak. Dalam Error! Reference source not found. ditunjukkan contoh deklarasi sebuah kelas dalam PHP. <? //class KelasA class KelasA extends KelasParent implements InterfacA{ const constant_a; private $properti_a; private $properti_b; function construct() { //Konstruktor }

II-21 function destruct() { //dekonstruktor } public function functiona () { //Isi functiona //contoh method fungsi return ($properti_a + $properti_b); } public function procedurea ($parameter_a) { //Isi procedurea //contoh method prosedur } public funtion f_implement() { }?> } Kode II-6 Contoh Kode Kelas dalam PHP Pada Kode II-6 diperlihatkan contoh sebuah kelas yang bernama KelasA yang merupakan turunan dari KelasParent. KelasA juga mengimplementasi suatu interface, yaitu InterfaceA. KelasA memiliki 2 properti, yaitu properti_a dan properti_b dan sebuah konstatnta constant_a. Selain itu, kelas tersebur memiliki sebuah konstruktor dan dekonstruktor serta 2 method bernama functiona() yang mengembalikan suatu nilai dan procedurea() yang merupakan sebuah prosedur yang tidak mengembalikan nilai. Sebuah kelas bisa bersifat abstrak dengan menambahkan keyword abstract. Kelas-kelas dan method dalam PHP juga dapat ditambahakan keyword final untuk memproteksi kelas agar tidak bisa diturunkan dan proteksi method aga tidak bisa di-override. Untuk melakukan reference ke objek lain, digunakan sintaks include atau include_once yang sudah biasa dipakai dalam pemrograman prosedural PHP. Kelas yang sudah dibuat dapat langsung di-load secara otomatis dengan fungsi

II-22 autoload(). Instansiasi dan invokasi method suatu objek ditunjukkan dalam Kode II-7. $param_input = 1; $objek_a = new KelasA(); $objek_a->procedurea($param_input); Kode II-7 Instansiasi Objek dan Invokasi Method dalam PHP Selain fitur-fitur umum yang telah disebutkan, masih banyak lagi fitur umum yang bisa digunakan dalam pemrograman objek dengan PHP, seperti penggunaan exception, properti dan method statik, iterator, dan serialization. 2.3.5 Framework PHP yang menggunakan Model MVC Penggunaan model MVC bisa digunakan dalam PHP dengan menggunakan sebuah framework. Ada banyak framework PHP yang sudah mengimplementasikan model MVC. Contoh framework PHP yang mengimplementasi model MVC adalah CodeIgniter, CakePHP, atau Zend. Selain menggunakan framework yang sudah ada, pengembang juga dapat membuat framework PHP dengan MVC sendiri. Dengan menambahkan beberapa pengaturan dalam konfigurasi PHP-nya, pengembang dapat membuat framework PHP berkonsep MVC sendiri. Dalam subbab ini akan dibahas salah satu framework yang cukup populer, yaitu CodeIgniter 2.3.5.1 Arsitektur CodeIgniter Salah satu framework yang cukup populer dan relatif mudah untuk digunakan adalah CodeIgniter. Framework ini merupakan framework PHP yang menggunakan arsitektur MVC. Dalam CodeIgniter, alur aplikasi yang dibuat ditunjukkan dalam Gambar II-10. Penjelasan alur tersebut adalah sebagai berikut [COD09]: 1. File index.php berfungsi sebagai controller utama yang akan menginisiasi resource dasar yang dibutuhkan untuk menjalankan aplikasi.

II-23 2. Router memeriksa HTTP request yang diberikan untuk menentukan apa yang harus dilakukan dengan request tersebut. 3. Apabila terdapat file cache, maka file tersebut langsung dikirimkan ke browser dengan melewatkan eksekusi secara normal 4. Sebelum controller aplikasi diaktifkan, HTTP request akan diperiksa keamanannya oleh modul security dan data pengguna disaring terlebih dahulu. 5. Controller akan mengaktifkan model, library, helper, plugin, dan resource lain yang dibutuhkan terhadap request yang diberikan. 6. Setelah request diproses, view akan di-render dan dikirimkan ke browser untuk diperlihatkan pada pengguna. Apabila caching aktif, maka komponen view akan disimpan dalam cache terlebih dahulu agar request yang sama dapat diproses lebih cepat. Gambar II-10 Arsitektur CodeIgniter CodeIgniter menyediakan beberapa library yang dapat digunakan dalam pengembangan aplikasi web. Library yang akan disediakan antara lain validasi form, pembuatan file ZIP, library pembuatan HTML, library yang menangani proses upload dan download, dan library lain yang biasa digunakan dalam pembuatan aplikasi web. 2.3.5.2 Struktur Kode dalam CodeIgniter Dalam pengembangan aplikasi web menggunakan framework CodeIgniter, pengembang hanya perlu membuat 3 komponen, yaitu kelas controller, kelas model apabila ada data yang dimodelkan, dan kelas view untuk membuat suatu

II-24 modul aplikasi web yang bisa langsung dijalankan. Struktur kode dari masingmasing kelas adalah sebagai berikut: 1. Kelas Controller Dalam kelas controller, sebuah fungsi merupakan sebuah halaman web yang dapat diakses melalui alamat tertentu. Misalnya sebuah fungsi yang bernama fungsi_1 dapat diakses dengan alamat: http://server_web/nama_aplikasi/nama_controller/fungsi_1/parameter1/param eter2/. selain fungsi yang mewakili alamat web tadi, juga dapat didefinisikan fungsi yang bersifat private dengan menambahkan tanda underscore ( _ ) di depan nama fungsi. Dalam Kode II-8 ditunjukkan struktur kelas controller dalam CodeIgniter. Sebuah kelas berjenis controller merupakan turunan dari kelas dasar Controller milik CodeIgniter. Setiap kelas Controller disimpan dalam sebuah file yang diberi nama sama dengan nama kelasnya. File tersebut disimpan dalam direktori controllers pada framework CodeIgniter. <?php //deklarasi kelas, turunan dari kelas dasar Controller class nama_kelas extends Controller { //atribut var $nama_atribut //fungsi konstruktor function nama_kelas () { parent::controller(); } //body konstruktor //fungsi public function fungsi_public () { //body fungsi public } //fungsi private function _fungsi_private () { //body fungsi private } }?> Kode II-8 Struktur Kelas Controller dalam CodeIgniter

II-25 2. Kelas Model Kelas model dalam codeigniter sama strukturnya dengan kelas controller yang ditunjukkan dalam Kode II-8. Hal yang membedakan adalah, kelas model ini merupakan turunan dari kelas dasar Model milik CodeIgniter. Sama seperti kelas Controller, setiap kelas model ditulis dalam sebuah file bernama sama dengan nama kelas. File tersebut disimpan di direktori bernama models pada framework CodeIgniter. 3. Kelas View Kelas view dalam CodeIgniter tidak diimplementasikan dalam sebuah kelas yang merepresentasikan objek. View merupakan sebuah halaman web yang menggunakan format HTML disisipi oleh kode PHP untuk menampilkan data yang diberikan oleh kelas controller. Jadi, bagian view dalam CodeIgniter bukanlah sebuah kelas, melainkan halaman web yang akan di-load oleh controller untuk keperluan tampilan aplikasi. Nama file tempat disimpannya view-view ini juga tidak tergantung pada nama kelasnya. Setiap file view ini disimpan dalam direktori views pada framework CodeIgniter. Untuk menjalankan aplikasi yang menggunakan CodeIgniter, pengguna juga perlu mengatur konfigurasi dari CodeIgniter. Konfigurasi tersebut terletak pada direktori config. Setelah konfigurasi basis data dan konfigurasi web diatur, barulah aplikasi dapat diakses melalui browser web.