## Implementasi LINQ Pada Aplikasi Student Helper

## Sugianto Palar
Teknik Informatika, Sekolah Tinggi Ilmu Komputer Bina Indonesia, Mamuju, Indonesia Email: zabogarpalar@gmail.com

## Abstrak
Berdasarkan dari penelitian yang dilakukan oleh penulis, Saat ini para programmer masih melakukan rutinitas yang panjang dalam mengolah data dan selain itu tuntutan untuk menguasai banyak teknologi semakin besar seiring dengan semakin luasnya cakupan aplikasi. LINQ hadir untuk menyederhanakan segala rutinitas koding dan meminimalkan perulangan yang tidak perlu. Tujuan penelitian ini yaitu (1) Untuk menyederhanakan rutinitas pengaksesan data, (2). Menguji aplikasi Student Helper yang dijadikan contoh implementasi LINQ. Student Helper ini dibangun dengan menggunakan bahasa pemrograman Visual Basic 9. Agar sasaran penulis dapat tercapai, maka penulis mengumpulkan data dengan studi kepustakaan dan lewat media forum internet.  Untuk pengujian sistem, digunakan  metode black-box. Dari hasil pengujian  memperlihatkan Student Helper yang dirancang dengan menggunakan LINQ dapat berjalan dengan baik dan mudah.
Kata Kunci: LINQ, Student Helper, Visual Basic, Desktop App, Basis data

## Abstract
Based on the research conducted by the author, currently programmers are  still doing a long routine in processing data and besides that the demand for mastering many technologies is getting bigger along with the wider scope of application. LINQ is here to simplify all  coding routines and  minimize  unnecessary repetition. The purpose  of this study is (1) To  simplify the routine of accessing data, (2). Test the Student Helper application which is an example of LINQ implementation. This Student Helper was built using Visual Basic programming language 9. So that the author's goals can be achieved, the writer collects data  with literature studies and through  internet forum  media. For system testing, the black-box  method  is used. From the results of testing showing the Student Helper designed using LINQ can run well and easily.
Keywords : LINQ, Student Helper, Visual Basic, Desktop app, Database

## 1. PENDAHULUAN
Membicarakan tentang perangkat lunak atau software itu sederhana, kita akan langsung memikirkan tentang dua hal yaitu, kode dan data. Tapi Membuat software tidaklah semudah membicarakannya dan satu aktivitas utama yang termasuk di dalamnya adalah menulis kode yang mengakses data. Dalam penulisan kode, kita bisa memilih berbagai macam bahasa pemrograman. Pemilihan bahasa pemrograman untuk sebuah aplikasi dapat tergantung dari konteks bisnis,dari pilihan programmer /  tim yang akan membuat, dari sistem operasi yang digunakan hingga kebijakan perusahaan.
Bahasa apapun yang akhirnya dipilih, pada titik tertentu harus berurusan dengan sejumlah data, data ini bisa berupa file-file yang ada pada disk,  tabel-table dalam database, atau dokumen XML yang berasal dari web, bahkan tidak jarang kita harus berhadapan dengan kombinasi dari semua ini. Dan akhirnya, mengatur data adalah kebutuhan setiap proyek perangkat lunak yang akan kita kerjakan.
Bahwa berurusan dengan data merupakan pekerjaan yang rutin untuk setiap pengembang perangkat lunak, kita akan  mengharapkan sebuah platform pengembang software yang besar dan kaya seperti .NET Framework yang  akan  memberikan  kita  kemudahan  dalam  melakukan  semua  kegiatan  itu.  Namun,  Walaupun  .NET menyediakan dukungan yang sangat luas dalam hal berurusan dengan data, tetap saja kita akhirnya perlu untuk melakukan  rutinitas  panjang  seperti  menghubungkan  objek  ke  database,  melakukan  query  ke  database  dan akhirnya  menampung  hasil  itu  kembali  ke  objek.  Masalahnya  adalah  dalam  banyak  kasus,  setidaknya  pada relational database, sepertinya terdapat gap atau pemisah antara bahasa pemrograman yang kita gunakan dengan database itu. Tapi dalam beberapa tahun ini penggunaan relasional database sudah sangat mengakar dan itu berarti kita masih akan tetap berjuang dengan akses data dan sibuk dengan pengukuhan objek-objek ke database dalam seluruh program yang kita buat.
Microsoft  melalui  Visual  Studio,  resmi  menyertakan  LINQ  (Language  Integrated  Query)[1],  Sebuah teknologi baru untuk bahasa pemrograman .NET dalam mengatasi masalah konseptual dan kesulitan teknis yang ditemui setiap menggunakan database. Selain niat awal untuk mengatasi kesulitan tadi, melalui LINQ ini, tercipta juga solusi baru dalam pemetaan object relasional dan penyederhanaan interaksi antara objek dan data source.
Dalam  pengembangannya,  LINQ  akhirnya    menjadi  sebuah  perangkat  umum  bahasa  yang  langsung mengintegrasikan query ke dalam bahasa pemrograman .NET seperti C# dan Visual Basic melalui sekumpulan extension.  Perangkat  ini  dapat  digunakan  dalam  mengakses  data  yang  berasal  dari  kumpulan  objek  (LINQ  to Object),  Database  (LINQ  to  SQL),  dokumen  XML  (LINQ  to  XML).  LINQ  menyatukan  akses  data,  apapun sumber data itu, dan membiarkan kita untuk menggabung data dari berbagai sumber yang berbeda [2]. LINQ  juga menyediakan  bahasa  query  dan  kumpulan  operasi,  seperti  yang  telah  di  tawarkan  oleh  SQL  untuk  mengakses database. Sebelum LINQ, kita harus menggunakan berbagai bahasa seperti SQL, XML, atau Xpath beserta dengan teknologi  –  teknologi  lain  dan  API  seperti  ADO.NET  atau  System.Xml  dalam  setiap  aplikasi  yang  ditulis
menggunakan C# atau VB.NET, dan sepertinya penggunaannya meluas begitu saja tanpa pernah dikatakan bahwa cara ini sebenarnya mempunyai kekurangan. LINQ merekat beberapa dunia sekaligus dan menolong kita untuk mengatasi kesulitan yang sering kita temui di sepanjang jalan pada dunia yang satu dan dunia yang lainnya Mengacu  pada  masalah  yang  dijelaskan  oleh  penulis  diatas,  maka  penulis  akan  mencoba  untuk memperkenalkan  dan  mengulas  penerapan  LINQ  untuk  menyederhanakan  penggunaan  Objek  dengan  XML, Objek dengan database, serta database dengan XML[3][4]. Untuk penerapannya, penulis akan membuat sebuah aplikasi  Student  Helper,  suatu  aplikasi  sederhana  yang  bertujuan  untuk  membantu  setiap  mahasiswa  mencatat informasi seputar kampus dan kegiatan perkuliahan[5].
Berdasarkan uraian diatas, maka perumusan masalahnya adalah bagaimana mengimplementasikan LINQ dalam menyederhanakan  rutinitas  pengaksesan  data.  Tujuan  dari  penelitian  ini  adalah  untuk  mengimplementasikan LINQ melalui contoh aplikasi student helper.

## 2. METODE PENELITIAN

## 2.1 Waktu dan Tempat Penelitian
Penulis  melakukan  penelitian  dengan  mengambil  lokasi  pada  STMIK  Bina  Indonesia  dengan  pertimbangan kemudahan  dalam  mengumpulkan  data  serta  pertimbangan  bahwa  di  institusi  lokal  penulis  mendapatkan kemudahan  dalam  melakukan  diskusi  dengan  para  sivitas  akademik    Jenis  penelitian  penulis  adalah  termasuk penelitian pustaka, di mana penulis mencoba mengangkat dan membahas lebih dalam suatu literatur ataupun ilmu yang telah ada.

## 2.2. Teknik Pengumpulan dan Analisa Data
Dalam  melaksanakan  penelitian  ini  penulis  menggunakan  metode  pengumpulan  data  yaitu  Studi  literatur, Melakukan  pengumpulan  data  dengan  cara  mempelajari  literatur  berupa  buku-buku  pedoman,  buku-buku perpustakaan, situs-situs dari internet yang berkaitan dengan penelitian, serta sumber lain yang dianggap perlu. Beberapa  tema  yang  menjadi  perhatian  penulis  dalam  studi  literatur  ini  adalah  Net  Framework,  LINQ,  Visual Basic, dan XML. Dalam melakukan analisa data penulis menggunakan metode analisis perancangan perangkat lunak  berbasis  teknologi  objek  menggunakan  bahasa  pemodelan  UML  yang  terdiri  dari diagram usecase dan activity.

## 3. ANALISA DAN PEMBAHASAN

## 3.1 Analisa Kondisi Awal
LINQ yang dimasukkan sebagai pustaka baru di dalam .NET Framework 3.5, dengan namespace linq dan terdaftar sebagai  bagian  dari  pustaka  langsung  dari  system.  Sehingga  untuk  menggunakan  pustaka  LINQ  penulis  harus mendeklarasikan  atau  mengikutsertakan  pustaka  LINQ  di  dalam  aplikasi  Student  Helper  lewat  namespace System.Linq.
Student Helper adalah sebuah aplikasi pembantu yang diperuntukkan kepada setiap mahasiswa. Aplikasi ini berfungsi untuk mencatat informasi seputar kegiatan perkuliahan. Student helper mempunyai fitur untuk mencatat informasi  detail  mengenai  kelas  yang  diikuti  mahasiswa,  membuat  roster  atau  jadwal  perkuliahan,  mencatat jadwal  kuis  dan  ujian,  mencatat  informasi  detail  para  dosen  pengajar,  dan  membuat  daftar  kontak.  Adapun beberapa tools yang dibutuhkan untuk merancang dan mengimplementasikan LINQ pada aplikasi Student Helper antara lain sebagai berikut:
1. UML, yaitu tools untuk merancang perangkat lunak
2. Visual Basic 9, yaitu bahasa pemrograman yang akan digunakan.
3. Microsoft SQL Server 2005, yaitu aplikasi penyimpanan data
4. XML To Schema, Template Tambahan yang menambah kemampuan LINQ dalam mengenali struktur XML
Kesalahan yang paling sering dilakukan dan umum dilakukan adalah penulisan kode program ataupun query yang akan menyebabkan compile error dan run time error yang menyita banyak waktu. Bahasa pemrogramanpun tidak menyediakan fasilitas yang cukup untuk menawari programmer berbagai bantuan dalam penulisan program. Pada saat berurusan dengan XML, penggunaan DOM (Document Object Model) yang memerlukan kode yang sangat tidak intuitif dalam pembuatan dokumen XML.
3.2 Rancangan Sistem a. Use case diagram Adapun diagram use case yang menggambarkan fungsionalitas sistem [6] yang dibangun secara umum sebagai berikut :
Tabel 1. Use case login Aktor Administrator dan User Tujuan Masuk dalam aplikasi Deskripsi Mengisi User Name dan Password Tabel 2. Use case input data XML Aktor Administrator dan User Tujuan Memasukkan data ke dalam file XML Deskripsi File XML mencakup data pribadi setiap user Tabel 3. Use case edit data XML Aktor Administrator dan User Tujuan Merubah data yang telah ada di dalam file XML Deskripsi File XML mencakup data pribadi setiap user Tabel 4. Use case hapus data XML Aktor Administrator dan User Tujuan Menghapus data ke dalam file XML Deskripsi File XML mencakup data pribadi setiap user Tabel 5 . Use case lihat data XML Aktor Administrator dan User Tujuan Melihat data yang ada di dalam file XML Deskripsi File XML mencakup data pribadi setiap user Tabel 6. Use case menyusun query Aktor Administrator dan User Tujuan Membangun Query Dinamis Deskripsi Aktor dapat menentukan Where dan Orderby Clause Tabel 7. Use case input data DB Aktor Administrator Tujuan Menginput data yang penyimpanannya dalam bentuk SQL database Deskripsi Data dari SQL database mencakup Student dan Teacher Tabel 8. Use case edit data DB Aktor Administrator Tujuan Merubah data yang ada di dalam SQL database Deskripsi Data dari SQL database mencakup Student dan Teacher Tabel 9. Use case hapus data DB Aktor Administrator Tujuan Menghapus yang ada di dalam SQL database Deskripsi Data dari SQL database mencakup Student dan Teacher Tabel 10. Use case lihat data DB Aktor Administrator Tujuan Melihat data yang ada di dalam SQL database Deskripsi Data dari SQL database mencakup Student dan Teacher. Tabel 11. Use case input Data Select Query Aktor Administrator Tujuan Menampilkan laporan data dari per database tabel berdasarkan field – field yang diinginkan Deskripsi Aktor dapat memilih field-field yang ingin diikutkan dalam membuat laporan.

## b. Diagram Activity
Diagram activity merupakan diagram yang digunakan untuk menggambarkan aliran proses yang terjadi pada setiap use case yang terdapat dalam sistem guna memberikan gambaran mengenai proses yang terjadi.
Gambar 1.  Diagram activity dari use case login
Gambar 2.  Diagram activity dari use case menyusun query
Gambar 3.  Diagram activity dari use case input data DB
c. Rancangan Terinci
Adapun arsitektur perangkat lunak aplikasi Student Helper seperti ditampilkan pada gambar 4:
Gambar 4. Arsitektur perangkat lunak
User  menjalankan  aplikasi  lewat  Subsistem  User  Interface  yang  menyediakan  antarmuka  yang  bisa  digunakan untuk menggunakan seluruh fungsionalitas yang ditawarkan oleh aplikasi Student  Helper. Segala perintah yang dimasukkan oleh user akan kemudian diproses oleh Visual Basic dan LINQ processing Engine (pemroses LINQ) yang  akan  mengolah  dan  mengembalikan  feedback  yang  seharusnya  kembali  kepada  user  yang  juga  melalui antarmuka. Aplikasi ini menggunakan dua basis data untuk menyimpan informasi, yaitu database SQL dan XML file  [7].  LINQ  Engine  yang  digunakan  disini  berfungsi  sebagai  jembatan  tambahan  yang  menyambung  setiap aliran input output. Setiap jenis sumber data akan ditangani oleh LINQ Provider yang sesuai. XML akan diproses dengan LINQ To XML,SQL Database ditangani dengan LINQ To SQL sedangkan LINQ To Object dipakai untuk memproses data diluar kedua sumber tadi[8] . Basis Data Yang digunakan pada aplikasi ini ada 2 yaitu:

## A. SQL DATABASE
Media penyimpanan data default ataupun data paten yang dimiliki oleh admin. Beberapa form atau proses yang menggunakan SQL database sebagai media penyimpananya adalah :
a. Data Student
Berisi data Account User Name untuk setiap murid atau mahasiswa pengguna.
b. Data Teacher
Berisi data dan informasi lengkap para guru atau dosen pengajar.

## B. XML File
Media Penyimpanan dalam bentuk XML, file ini dimiliki oleh setiap user. Ini memungkinkan setiap user memiliki data yang berbeda dengan user lainnya.
a. Data Schedule
Setiap mahasiswa dapat memiliki jadwal yang berbeda dengan yang lainnya.
b. Data Class
Setiap mahasiswa dapat menyimpan informasi tentang kelas yang telah atau sedang diikuti.
c. Data Exam
Setiap  mahasiswa  dapat  memiliki  informasi  tentang  jadwal  dan  deskripsi  ujian  atau  kuis  yang  akan dilaksanakan.
d. Data Contact
Setiap mahasiswa dapat membuat contact atau friend list yang mencatat infomasi yang dibutuhkan
e. Data Setting
Setiap mahasiswa dapat menyimpan konfigurasi setting aplikasi.

## 4. IMPLEMENTASI
Aplikasi ini memunculkan halaman login saat pertama kali dijalankan dapat dilihat pada gambar 5 :
Gambar 5.  Halaman Login
Setelah berhasil login, maka aplikasi akan langsung menampilkan halaman utama program seperti yang terlihat pada gambar 6.
Gambar 6.  Halaman Utama 4.1 Implementasi LINQ a.  LINQ To SQL
LINQ  To  SQL  menyediakan  bahasa  terintegrasi  akses  data  dengan  menggunakan  mekanisme  extensi dari LINQ yang memetakan tabel dan tiap baris record pada kelas dan objek. sebuah tabel bisa dipetakan dalam sebuah kelas dan kolom-kolom tabel ke property dari kelas. LINQ To SQL secara otomatis menyimpan segala perubahan pada objek dan memperbarui database melalui query SQL dinamis. yang membuat kita tidak perlu lagi menghabiskan banyak waktu untuk menulis sendiri SQL Query.
Pada aplikasi Student Helper, LINQ To SQL diterapkan dengan menggunakan template file dari kelas LINQ To SQL, yang merupakan sebuah class dimana seluruh tabel yang akan digunakan harus dipetakan agar selanjutnya bisa dikenali saat melakukan coding dalam aplikasi.
Gambar 7 Tampilan LINQ To SQL Class
b. LINQ To XML
LINQ To XML menawarkan kemampuan query untuk mengolah XML tanpa memerlukan API baru, jadi kita  tetap  dapat  menggunakan  sintak  yang  tidak  jauh  berbeda  dengan  LINQ  Query  yang  lain  seperti penggunaan pada database ataupun objek. Selain itu, LINQ tetap menyediakan sebuah API khusus dalam mengolah  XML,  API  ini  sangat  ringan,  yang  dirancang  khusus  untuk  bisa  memanfaatkan  pustaka- pustaka dalam .NET Framework yang terbaru. LINQ To XML mengatasi kelemahan penggunaan DOM (Document Object Model) yang memerlukan kode yang sangat tidak intuitif dalam pembuatan dokumen XML. Lewat LINQ To XML, Visual Basic dilengkapi dengan pembuatan dokumen XML Literal, yaitu membuat dokumen yang langsung menyerupai dokumen XML itu sendri. Di bawah ini adalah contoh pembuatan dokumen XML menggunakan Library yang disediakan oleh LINQ To XML Provider. LINQ To  XML  memungkinkan  kita  untuk  melakukan  query  terhadap  XML  yang  sama  sekali  belum  bisa dilakukan sebelumnya. Penulis menggunakan query ini untuk mendapatkan data yang user inginkan pada saat pencarian.
Dim MyContact = Xelement.Load(ContactXMLFilePath) Dim ContactQuery = From CQ In MyContact...<Contact> _ Where CQ.<Name>.Value Like _ Me.SearchToolStripTextBox.Text & "*" _ Select CQ
Pada  Query  diatas,   source  pencarian  adalah  MyContact,  yang  sebelumnya  telah  diisi  dari  data  XML lewat  perintah  load  pada  kelas  Xelement.    Sintaks  “…”  berarti  menyatakan  turunan  dari  simpul <Contact>, kurung siku < > digunakan untuk menuliskan nama simpul yang ada dan harus sesuai dengan struktur XML yang case sensitive. Pada Prakteknya, Cukup merepotkan bila seorang programmer harus mengingat setiap struktur XML yang mereka buat, selain itu kesalahan pengetikan masih sangat mungkin terjadi.  Sesuai  dengan  salah  satu  tujuan  penciptaan  LINQ  yang  berusaha  meminimalkan  kesalahan coding saat berurusan dengan data source di luar bahasa pemrograman yang dipakai, XML To Schema pun diciptakan, Sebuah Template yang akan menambah kemampuan LINQ To XML dalam mengenali struktur XML File.
Lewat  XML  To  Schema  ini,  penulis  memasukkan  struktur  XML  file  yang  digunakan  agar  selanjutnya  bisa dikenali saat menuliskan kode program.
Gambar 9. Menunjukkan intellisense VB yang mengenali elemen XM

## 5. KESIMPULAN
Dari hasil rancangan dan penerapan yang dilakukan, penulis dapat menyimpulkan 1. Penggunaan sintak query LINQ yang sangat mirip terhadap 2 data source yang sangat berbeda
2. LINQ To SQL memberikan kemudahan dan keamanan dalam melakukan koding terhadap data source SQL Database.
3. LINQ To XML memperkaya pustaka .NET Framework Dalam mengolah XML, sekaligus berhasil mengatasi kesulitan dalam penggunaan DOM (Document Object Model)  yang selama ini dianggap membingungkan.
Secara Keseluruhan, kehadiran LINQ selain dapat menyederhanakan dan meringankan penulsan kode juga telah berhasil menjadi jembatan antara bahasa pemograman dan data source yang akhirnya dapat memberikan alternatif bagi setiap pengembang untuk melakukan pengolahan data dengan cepat sesuai dengan kebutuhan aplikasi

## REFERENCES
[1] Sanders, Prashanthan, et al. "Performance of a new atrial fibrillation detection algorithm in a miniaturized insertable cardiac monitor: Results from the Reveal LINQ Usability Study." Heart Rhythm 13.7 (2016): 1425-1430.
[2] Tada,  Shizuka,  et  al.  "Investigation  on  the  optimal  implantation  site  and  setting  of  Reveal  LINQ®  avoiding  interference  with performance of transthoracic echocardiography." Journal of arrhythmia 34.3 (2018): 261-266.
[3] Chyan P., Marwi H. 2014. Sistem Temu Balik Citra Menggunakan Ekstraksi Fitur Citra Dengan Klasifikasi Region Untuk Identifikasi Objek, Jurnal Ilmiah TEMATIKA, Vol. 2, No. 2, 2014, hal: 63-72, ISSN: 2303-3878
[4] Chyan  P.,  Sumarta  S.  2015.  Rancang  Bangun  Search  Engine  dengan  Pendekatan  Temu  Balik  Berbasis  Konten,  Jurnal  ilmiah TEMATIKA, Vol. 3, No. 2, 2015, hal: 31-39, ISSN: 2303-3878
[5] Wihanry,  I.,  &  Chyan,  P.  (2015).  Perancangan  Aplikasi  Pembelajaran  Aksara  Lontara  Dengan  Metode  Game  Based Learning. TEMATIKA, Journal of Informatics and Information Systems , 3 (1), 1-8.
[6] Nugroho, A. (2009). rekayasa perangkat lunak menggunakan UML dan JAVA . Penerbit Andi
[7] Simarmata, J., & Paryudi, I. (2006). Basis data. Yogyakarta: Penerbit Andi .
[8] Melnik, Sergey, Philip A. Bernstein, and James F. Terwilliger. "Mapping and query translation between XML, objects, and relations." U.S. Patent No. 9,336,327. 10 May 2016.