BAB II DASAR TEORI 2.1.
Pemrograman Berorientasi-Objek Pemrograman berorientasi-objek menggunakan cara pandang objek dalam
dunia nyata untuk melihat sistem. Contoh: Manusia mempunyai atribut yang melekat pada dirinya berupa nama, alamat, tanggal lahir, dan sebagainya. Mahasiswa merupakan manusia, maka Mahasiswa mewarisi semua sifat manusia. [1]
Dalam penyimpanannya ke dalam basisdata, penurunan sifat maupun
hubungan antar objek daat menjadi masalah tersendiri. Apalagi sebuah objek mendukung aksi(method) akan tetapi tidak dengan basisdata. Pemrograman Berorientasi-Objek merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya. Pemrograman berorientasi-objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Sebuah sistem manajemen basisdata relasional atau dalam bahasa Inggrisnya dikenal sebagai relational database management system (RDBMS) adalah sebuah program komputer (atau secara lebih tipikal adalah seperangkat program komputer) yang didisain untuk mengatur/memanajemen sebuah basis data sebagai sekumpulan data yang disimpan secara terstruktur, dan melakukan operasi-operasi atas data atas permintaan penggunanya.[13] 2.1.1. Konsep dasar dari Pemrograman Berorientasi-Objek Pemrograman orientasi-objek menekankan beberapa konsep dalam penerapannya. Beberapa konsep tersebut adalah[11]: a. Kelas Merupakan kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai
macam perilaku/turunan dari anjing. Sebuah kelas adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi objek. Sebuah kelas secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah kelas sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya. b. Objek Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer, objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek. c. Abstraksi Adalah kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan. d. Enkapsulasi Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dari sebuah objek dengan cara yang tidak layak, hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut. e. Polimorfisme Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan, metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesan tersebut
dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tunggal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelaspertama. f. Inheritas Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada, objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa harus mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.) Dengan menggunakan konsep dari pemrograman berorientasi-objek maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bagian administrasi, maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas administrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
2.2.
Model Basis Data Model Basis Data merupakan sekumpulan tool yang menyatakan data,
hubungan antar data, makna data, dan batasan data.[12] Ada dua jenis model data yang digunakan salam penyusunan tugas akhir ini, yaitu : 1. Model ER (Entity – Relationship) 2. Model Relasional Selain kedua model di atas, ada beberapa model data lainnya yaitu model data semi terstruktur, model object-oriented, network model dan hierarchical model. 2.2.1. Model ER (Entity - Relationalship)
Gambar 2.1. Contoh Skema E-R[12] Model ER adalah sebuah model basis data yang terdiri dari sekumpulan objek (entity) dan hubungan (relationship) antar objek tersebut. Jika dilihat dari contoh skema di atas, maka yang di maksud objek disini adalah customer dan account. Dimana yang dimaksud dengan relationship adalah himpunan hubungan depositor yang menghubungkan antara customer dengan account. Rancangan database dalam model E-R biasanya diubah ke rancangan dalam model relasional yang digunakan untuk penyimpanan dan pemrosesan data. 2.2.2.
Model Relasional
Model Relasional memodelkan basis data dalam bentuk tabel dimana tabel tersebut menyatakan baik data maupun hubungan antar data tersebut.
Tabel 2.1. Contoh data model relasional
192-83-7465
Customername Adie
Customerstreet Teuku Umar
019-28-3746 192-83-7465 321-12-3123 019-28-374
Budi Adie Sandi Budi
Imam Bonjol Teuku Umar Sukabirus Imam Bonjol
Customer-id
Banjaran
Accountnumber A-101
Soreang Banjaran Bandung Soreang
A-215 A-201 A-217 A-205
Customer-city
Dari data tabel di atas, dapat kita lihat bahwa urutan record tidak relevan, tabel dengan urutan record yang berbeda dianggap sama. Tabel di atas merupakan model relasional dari beberapa tabel yang saling berhubungan. Tabel 2.2. Contoh basis data relasional Customer-id
Customer-name
Customer-street
Customer-city
192-83-7465
Adie
Teuku Umar
Banjaran
019-28-3746 321-12-3123 113-03-0033 015-13-2314 546-34-7865
Budi Sandi Roland Santi Agung
Imam Bonjol Sukabirus Sukapura Adiyaksa Bojongsoang (a) Tabel Customer
Soreang Bandung Bandung Banjaran Soreang
Account-number Balance A-101 500 A-215 700 A-201 350 A-217 600 A-205 450 (b) Tabel Account
Customer-id Account-number 192-83-7465 A-101 019-28-3746 A-215 192-83-7465 A-201 321-12-3123 A-217 019-28-3746 A-205 (c) Tabel Depositor
Dari tabel di atas dapat kita lihat bagaimana basis data relasional dimodelkan menjadi data model relasional yang ada pada tabel sebelumnya. Dimana tiap tabel memiliki satu primary key yang menjadi penghubung antara tabel yang satu dengan yang lainnya. 2.3.
Object Relational Mapping (ORM)
Object Relational Mapping merupakan sebuah teknik yang digunakan dalam
pemrograman
untuk
menggunakan
basisdata
relasional
sebagai
penyimpanan data dengan bentuk objek.[3] Teknik ini biasa digunakan dalam bahasa pemrograman berorientasi objek saat harus menggunakan basisdata relasional dalam penyimpanannya. Bahasa pemrograman menggunakan ORM untuk memetakan objek ke dalam database. Objek yang kita masukkan akan dibaca oleh ORM tersebut kemudian diubah ke dalam Sintaks SQL. Selanjutnya baru kemudian dijalankan di basisdata relasional dan hasilnya kembali ke ORM.
Gambar 2.2. Arsitektur ORM[8] 2.4.
Propel Adalah sebuah framework ORM (Object Relational Mapping) untuk PHP5
yang pada awalnya dibasiskan pada proyek Apache Torque. Alat ini menyediakan sebuah abstraction layer yang memberikan kemudahan dalam mengakses basis
data menggunakan objek-objek lain di dalam PHP sehingga tidak perlu repotrepot mengatur koneksi ke database atau menulis SQL.[5] Selain itu, Propel juga memiliki berbagai fitur seperti validasi input untuk meningkatkan keamanan aplikasi database. Beberapa kelebihan yang dimiliki oleh Propel[5]: 1)
Tidak perlu khawatir terhadap koneksi-koneksi basis data atau
penulisan SQL 2)
RDBMS di definisikan ke dalam sebuah format XML yang sederhana
(atau Propel bisa juga membangunnya dari basis data yang sudah ada) dan Propel akan membuat file-file inisialisasinya untuk basis data yang akan dibangun serta akan meng-generate kelas-kelas statis dan objek-objek ke dalam sebuah OO interface ke dalam basis data yang dibuat. 3)
Propel membangun kelas-kelas berdasarkan struktur dari basis data
agar performansinya meningkat.
Gambar 2.3. Arsitektur Propel[5] 2.4.
Doctrine
Doctrine adalah sebuah ORM untuk PHP 5 yang terletak di atas DBAL (Database Abstraction Layer). Salah satu fitur yang menjadi andalannya adalah
kemampuan dalam menuliskan query basis data dalam bentuk OO (Object Oriented) SQL-dialect atau yang dikenal dengan DQL yang terinspirasi oleh Hibernates HQL.[2] Beberapa kelebihan yang dimiliki oleh Doctrine : 1) Mendukung hierikal data 2) Mendukung hook (metode yg bisa memvalidasi atau mengubah database input dan output) dan bahkan memperhatikan ke struktur logika bisnis yg terkait. 3) Kolum perwarisan/inheritas agregasi. 4) Model behavior. 5) Perpindahan database. 6) Fungsi compile untuk mengkombinasi banyak file PHP dari beberapa framework ke dalam satu tempat.
Gambar 2.4. Arsitektur Doctrine[2]