• Tidak ada hasil yang ditemukan

BAB II STUDI PUSTAKA 2.1 CODE GENERATOR

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II STUDI PUSTAKA 2.1 CODE GENERATOR"

Copied!
25
0
0

Teks penuh

(1)

II-1

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 tugas-tugas yang berulang-ulang secara otomatis. Sisa pekerjaan yang lebih kompleks dapat dilakukan oleh porgrammer. Pada Gambar II-1, dapat dilihat posisi code

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

(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].

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

(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

inline-code expander, generator akan mencari kata kunci yang ditulis secara khusus dan

(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

(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

partial-class 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

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

(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

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

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.

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.

[ 1, 2, 3, “nilai 4”] { “a”:1, “b”:2, “c”:3 }

Kode II-1 Contoh JSON - Pasangan Key/Value

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

Keterangan:

Json : Input string JSON

Assoc : Apabila nilainya true, maka objek yang dikembalikan akan dikonversi ke asssociative array.

json_decode ( string $json [, bool $assoc= false [, int $depth= 512 ]] )

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

2.2.3.3 Fungsi json_last_error

Fungsi ini akan mengembalikan error terakhir pada eksekusi parsing JSON terakhir (bila ada).

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,

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. string json_decode (mixed $value [, int $options= 0])

Kode II-4 Fungsi json_encode

int json_last_error (void)

(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

(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

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

(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

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

(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

(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

(20)

komponen-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 }

(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

(22)

__autoload(). Instansiasi dan invokasi method suatu objek ditunjukkan dalam Kode II-7.

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.

$param_input = 1;

$objek_a = new KelasA();

$objek_a->procedureA($param_input);

(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

(24)

modul aplikasi web yang bisa langsung dijalankan. Struktur kode dari masing-masing 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 }

} ?>

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

Gambar

Gambar II-1 Posisi code generator dalam proses implementasi perangkat lunak
Gambar II-2 Unsur-unsur penting dalam pembangkitan kode
Gambar II-5 Mekanisme mixed-code generator
Gambar II-6 Mekanisme partial-class generator
+6

Referensi

Dokumen terkait

Persepsi siswa terhadap pembelajaran Multiple Intelligences apabila dilihat dari segi motif, minat, persiapan dan kesiapan dapat dilihat bahwa persepsi siswa

Penelitian ini bertujuan untuk menggali lebih lanjut dan memberikan informasi secara empirik tentang perbedaan stres kerja dan work life balance ditinjau dari

Kain gringsing adalah satu-satunya kain tenun tradisional Indonesia yang dibuat menggunakan Kain gringsing adalah satu-satunya kain tenun tradisional Indonesia yang dibuat

37 Wawancara pada tanggal 12 September 2016 pukul 11.00 WIB dengan pangeran Rintoisworo dan pangeran Jatiningrat(keduanya adalah putra Sultan Hamengku Buwono VIII

Keuntungan dari bakteri ini adalah memiliki protein yang dapat bekerja pada kondisi lingkungan dengan suhu tinggi dimana protein/ enzim lain dapat mengalami denaturasi.. Salah

Peserta yang tidak ada atau tidak mendampingi kendaraannya tanpa melapor kepada penyelenggara setelah 2 (dua) kali kunjungan oleh tim juri akan didiskualifikasi. Peserta

SRT akan mencakup enam fungsi kerja sebagai berikut: (i) penyebaran informasi terkait program yang ada, dan terutama pada program jaminan sosial yang baru saja diluncurkan,

Altimetri sendiri adalah Radar (Radio Detection and Ranging) gelombang mikro yang dapat digunakan untuk mengukur jarak vertikal antara permukaan bumi dengan wahana antariksa