2. TEORI PENUNJANG
Dalam bab ini akan diberikan pembahasan mengenai Teori Antrian yang digunakan dalam simulasi, teknik dasar pemrograman menggunakan Java dan akses database.
2.1. Teori Antrian
Antrian adalah suatu keadaan sistem pelayanan dimana waktu kedatangan (?) lebih besar daripada waktu pelayanan (µ).Contoh suatu antrian adalah pelayanan di bank, di mana waktu kedatangan nasabah (?) lebih besar daripada waktu pelayanan teller (µ), sehingga akan menyebabkan terjadinya antrian.
Dalam sistem antrian kereta api, waktu pelayanan adalah waktu yang diperlukan sebuah kereta api untuk melalui satu jalur, sedangkan waktu kedatangan adalah waktu kedatangan dari kereta yang lain untuk menggunakan jalur yang sedang digunakan.
Dalam sistem pelayanan jalur kereta api berlaku suatu aturan 1“Satu jalur kereta api hanya boleh dilalui oleh satu kereta api.” Hal ini berarti jika dalam satu jalur terdapat sebuah kereta api yang melaju dengan kecepatan x km/jam, maka tidak diperbolehkan adanya kereta api lain melaju kearah yang sama walaupun kecepatannya kurang dari x km/jam. Oleh sebab itu kereta api yang kedua harus menunggu di stasiun terdekat untuk antri mendapatkan pelayanan.
Ada beberapa macam sistem antrian yang sering digunakan, yaitu: o FCFS (First Come, First Served), pelayanan didasarkan pada waktu
kedatangan, contoh sistem: antrian loket atau kasir.
o LCFS (Last Come, First Served), contoh sistem: stack pada data minimum sistem (push - pull).
1
Dikutip dari wawancara dengan Bpk. Sudarsono dari humas PT. Kereta Api Persero Daerah Operasi VIII.
o RR (Round Robin), pelayanan diberikan untuk jangka waktu tertentu saja, kemudian dialihkan pada yang lainnya. Contoh sistem: pararel jobs pada sistem komputer.
o SPT (Shortest Processing Time First), pelayanan didahulukan untuk pekerjaan yang memakan waktu lebih sedikit.
o Priority, pelayanan didasarkan pada prioritas.
Untuk mengatasi antrian yang paling terpenting adalah menyiapkan ruang tunggu (buffer) yang memadai. Selain itu beberapa cara berikut ini juga dapat digunakan untuk mengatasi masalah antrian:
o Menambah jumlah pelayanan
Menambah jumlah pelayanan dalam topik antrian kereta api adalah dengan menambah jumlah rel yang sudah ada. Hal ini tidak efisien, karena biaya yang digunakan sangat besar.
o Mempercepat waktu pelayanan
Mempercepat waktu pelayanan berarti menambah kecepatan kereta untuk melewati jalur yang padat. Cara ini dapat menjadi salah satu alternatif mengurangi antrian, tetapi beresiko cukup tinggi.
2.2. Java
2.2.1. Pengenalan Java
Bahasa pemrograman dikenal ada 3 macam, yaitu:
? Machine Language
Machine languange adalah bahasa pemrograman mesin yang terdiri dari angka
biner 1 dan 0. Sekumpulan angka 1 dan 0 tersebut diterjemahkan sebagai suatu instruksi untuk melakukan sesuatu oleh mesin/komputer.
? Low Level Languange
Bahasa pemrograman yang setingkat diatas Machine Language karena menggunakan 1 atau 2 kata seperti add, mov atau jump. Digunakannya bahasa yang dikenal manusia itu adalah untuk mempermudah melakukan pemrograman.
? High Level Languange
Bahasa pemrograman yang sudah tinggi tingkatannya dan apabila sudah dibuat dalam satu program akan dapat dengan mudah di-trace ulang oleh penggunanya. Sebagai contoh dalam Java: System.out.println(“Hello World”); Java adalah salah satu bahasa pemrograman dengan High Level
Languange yang dikembangkan oleh Sun Microsystems. Teknik dasar
pemrograman Java memiliki kemiripan dengan bahasa pemrograman C++. Karena keduanya memiliki akar yang bisa dibilang sama. Serta pemrogramannya berorientasi pada object (object oriented programming). Java juga memiliki banyak library package yang sangat berguna dalam penulisan program.
Sebuah kompiler dari bahasa pemrograman bekerja dengan cara merubah bahasa pemrograman menjadi machine languange untuk kemudian diteruskan pada CPU untuk diproses dan dijalankan. Setiap jenis CPU memiliki machine languange yang berbeda-beda, seperti Intel menggunakan SPARC processor. Java memiliki kelebihan yaitu menterjemahkan program kedalam machine languange untuk digunakan pada “Java Virtual Machine”, sehingga Java bekerja tidak langsung pada CPU, tetapi melalui JVM.
Keuntungannya adalah Java dapat dijalankan di CPU yang berbeda-beda serta operating system yang berbeda pula, perhatikan gambar 2.1 berikut ini:
Gambar 2.1 Java Platform
JAVA Virtual Machine myProgram.java JAVA API
Hardware-Based Platform
JAVA Platform
2.2.2 Object-Oriented Programming
Ide dasar dari pemrograman berorientasi pada object adalah mengkombinasikan data dan fungsi untuk mengakses data menjadi satu kesatuan unit yang dikenal dengan nama object. Setiap object didesain sesuai dengan fungsinya masing-masing untuk mengolah data, sebagai contoh, dalam kehidupan sehari-hari yaitu dalam perkantoran, tiap pegawai memiliki fungsi masing-masing, seperti manajer, sekretaris, marketing, dan lainnya. Apabila seorang manajer memerlukan data tentang janji yang dibuatnya, maka yang harus dihubungi oleh manajer adalah object sekretaris. Jika memerlukan data-data penjualan yang dihubungi adalah object marketing.
Setiap object, tiap object memiliki fungsi masing-masing. Untuk lebih memperjelas gambaran tentang object yang berisi data dan fungsi dapat diperhatikan pada gambar 2.2 berikut:
Gambar 2.2 Contoh Object dan Fungsi
Pewarisan Hubungan Kerja Data Fungsi 1 Fungsi 2 Pegawai Data a Fungsi a Fungsi b Manajer Data b Fungsi c Fungsi d Sekretaris Data c Fungsi e Fungsi f Marketing Data d Fungsi g Fungsi h Marketing
Pada pemrograman berorientasi object data yang terdapat pada tiap
object disebut sebagai Variabel Instants, sedangkan fungsi yang dimiliki disebut
dengan Method. Setiap statement program harus diletakkan di dalam method dan setiap method berada di dalam class. Kumpulan dari class disebut dengan
package.
Pada Pemrograman berorientasi object, ada tiga karakteristik utama yang dimiliki, yaitu:
a. Encapsulation
Encaptulation adalah pengemasan variabel dan method dalam satu object,
dimana variabel tidak lagi diperlakukan sebagai data saja, melainkan mempunyai kedudukan sama dengan method, dan dapat diakses seperti
method.
b. Inheritance (pewarisan)
Karakteristik yang penting dalam pembentukan object adalah Inheritence. Sebuah object dapat dibuat dengan melakukan pewarisan sifat-sifat dari suatu
object, seperti pada gambar 2.2 di mana object manajer, sekretaris dan
marketing adalah turunan dari object pegawai. Jadi sifat-sifat dasar yang dimiliki oleh pegawai dimiliki juga oleh object turunannya.
Object yang mewarisi sifat-sifat dari object atasannya bisa saja memiliki method yang tidak dimiliki oleh atasannya. Fungsi-fungsi sebagai marketing
tidak dimiliki oleh object pegawai dan object sekretaris memiliki fungsi sebagai sekretaris.
c. Polymorphism
Polymorphism adalah suatu method yang memiliki fungsi yang sama, tetapi
pemanggilan method memiliki fungsi yang berbeda, sebagai contoh: - gambar(int x, int y); : method untuk menggambar titik
- gambar(int x, int y, int r); : method untuk menggambar lingkaran - gambar(int x, int y, int x2, int y2); : method untuk menggambar garis
Beberapa hal yang mungkin dapat membingungkan adalah method dalam sebuah class dapat dijalankan oleh class lain dengan meng-create object dari class yang memiliki method tersebut, perhatikan contoh berikut ini:
public class Calculation{ Class Calculation
public int tambah(int a, int b){ Method tambah, fungsi menambah int a dan int b return (a+b); Karena public int, berarti harus ada nilai return }
public void cetak(String a){ Method untuk mencetak String a System.out.println(a); Mencetak a
} }
public class ProgramUtama{ Class ProgramUtama
Calculation cal = new Calculation(); Create object dari class Calculation public static void main(String[] args){ Main constructor
int a = cal.tambah(10,15); Tambahkan nilai 10 dan 15 cal.cetak(“” + a); Cetak Nilai tambah 10 dan 15 }
}
Contoh diatas terdiri dari 2 class, yaitu Calculation dan ProgramUtama. Class ProramUtama memiliki main constructor yang dijalankan pertama kali. Program kemudian meng-create object cal dari class Calculation untuk mendapatkan fungsi dari object cal yaitu method tambah dan method cetak.
Pada class ProgramUtama terdapat method: “public static void main(String[] args)”, method ini adalah method yang pertama kali dijalankan dalam suatu package yang di compile. Parameter “String[] args” adalah bagian yang diperlukan dalam method main. Kata “static” mengartikan bahwa main
method tidak akan mengubah object dalam class ProgramUtama. Kata “void”
mengartikan bahwa method ini tidak akan mengembalikan nilai apapun, sedangkan main sendiri harus static.
2.2.3 Access Modifier
Pada setiap method atau variabel terdapat access modifier (didepan setiap method atau variabel). Fungsi access modifier adalah memberikan autoritas untuk mengakses method atau variabel tersebut. Ada 4 (empat) macam access
modifier yaitu: default (no modifier), private, public dan protected. Fungsi access modifier didalam satu package berbeda dengan jika sebuah package diakses dari
luar package itu.
Pada tabel 2.1 berikut akan dijelaskan perbedaan fungsi access modifier untuk didalam satu package dan diluar package.
Tabel 2.1 Access Modifier
Antar Class Dalam Satu
Packages Diluar Satu Packages Access Modifier
Dapat
Diturunkan Dapat Diakses
Dapat
Diturunkan Dapat Diakses
Default (no modifier) Ya Ya Tidak Tidak
Private Tidak Tidak Tidak Tidak
Public Ya Ya Ya Ya
Protected Ya Ya Ya Tidak
Untuk mengakses sebuah package digunakan constructor import <package name>. Sebagai contoh: <import java.util.*;> artinya semua class dalam package java.util dapat diakses dari package yang sudah mengimpornya, dengan memperhatikan access modifier-nya. Letak constructor import adalah diatas constructor class.
2.2.4 Thread
Dalam package java.lang terdapat sebuah class penting yang digunakan dalam simulasi ini, yaitu Thread. Sebagai contoh untuk memberikan gambaran kegunaan dari class Thread yaitu seseorang yang sedang menerima telepon tetapi ia sedang mencatat dalam memonya dan juga menunggui sebuah mesin fotocopy didepannya. Proses yang dilakukan oleh orang tersebut disebut multiple task karena ia melakukan lebih dari satu tugas dalam waktu bersamaan.
Suatu program umum hanya dapat melakukan satu pekerjaan dalam satu waktu disebut dengan sequential access, sebaliknya Java memiliki kemampuan untuk melakukan multiple task dengan class Thread nya. Untuk dapat menggunakan fasilitas ini, sebuah class dapat meng-implement atau meng-extends
class Thread dalam package java.lang. Untuk menjalankan Thread, suatu class
harus memiliki method run(). Apabila method ini dijalankan, maka object dari
class tersebut dapat berdiri independent tanpa menunggu perintah dari object
lainnya.
2.2.5 Graphical User Interface
Graphical User Interface (GUI) adalah sebuah tampilan yang digunakan
untuk berinteraksi dengan pengguna software. Dalam Java, package dari GUI dapat ditemukan pada javax.Swing atau java.AWT. Java menyediakan sebuah tampilan GUI yang cukup menarik dan mudah digunakan, karena sudah di buat dalam package-package yang di dalamnya terdapat banyak object-object yang dapat digunakan dengan mudah.
Untuk dapat menampilkan GUI, sebuah object harus meng-implement atau meng-extends Jframe dari package javax.swing dan untuk memberikan
Action Handling (menangkap tindakan yang dilakukan oleh pengguna) method
dalam java.AWT dapat digunakan.
2.2.6 Java Database Connectivity (JDBC)
Untuk melakukan koneksi antara Java dan database digunakan JdbcOdbcDriver. Berikut adalah 8 prosedur sederhana untuk melakukan koneksi pada database:
a) Keluarkan Driver Class dengan menggunakan method Class.forName
Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
b) Create object Connection dari java.sql dan lakukan koneksi dengan menggunakan method DriverManager.getConnection()
String dbURL = “Jdbc:Odbc:<ODBC data source name>”;
Connection con = DriverManager.getConnection(dbURL, name, pass);
c) Create object Statement dan gunakan method createStatement
d) Create object ResultSet dari java.sql dan gunakan method dari Statement yaitu executeQuery() untuk mendapatkan data dari database
ResultSet rS = stmt.executeQuery(“SELECT * FROM MyTable”);
e) Ambil data yang terdapat dalam ResultSet f) Tutup ResultSet
g) Tutup Statement h) Tutup Connection
Penting untuk dilakukan yaitu melakukan method Connection.close agar integrity data dapat dijaga dengan baik.
2.3. Database System
Penyimpanan data-data dapat dilakukan dengan beberapa cara, antara lain dengan cara langsung menyimpan dan mengenskrip data pada sebuah file. Kelemahan terbesar adalah diperlukan suatu proses pengambilan seluruh data sebelum data akan dipilah untuk kemudian dirubah atau dihapus. Metode lain untuk melakukan penyimpanan data adalah menggunakan suatu sistem database di mana proses pencarian/perubahan data dapat dilakukan dengan mudah hanya dengan menggunakan satu query.
Database adalah sekumpulan koleksi data serta media penyimpanannya
dan sistem manajemen database yaitu DBMS (Database Management System) yang mengontrol penyimpanan, pengambilan dan pengguna data. Untuk mengakses data dalam sistem database, ada beberapa software yang sering digunakan, antara lain: Microsoft Access, Sysbase, Oracle, Informix dan Microsoft SQL Server.
Keuntungan yang didapatkan dengan menggunakan sistem database antara lain:
- Data dapat di digunakan oleh lebih dari satu pengguna (shared)
- Ada standarisasi sistem sehingga data dapat dipertukarkan antar sistem operasi melalui DBMS.
- Keutuhan data dapat dijaga dalam artian data yang diakses oleh banyak pengguna diatur oleh DBMS dan dijamin integritas dan sinkronisasi perubahan datanya.
Salah satu keuntungan paling besar dengan penggunaan database adalah proses
sharing data di mana data dapat diakses langsung oleh lebih dari satu pengguna.
Dalam database dikenal istilah SQL, yaitu semacam bahasa pemrograman sederhana untuk melakukan proses dalam database, dikenal juga dengan sebutan query. Berikut adalah beberapa query yang digunakan dalam SQL
? SELECT
Digunakan untuk mengambil data dari sebuah tabel, bentuk query-nya:
SELECT <fields name> FROM <table name>
contoh penggunaan:
SELECT * FROM MyTable
SELECT Name, Address FROM MyTable
? INSERT
Digunakan untuk menambahkan data dalam sebuah tabel, bentuk query-nya:
INSERT INTO <table name> (fields name) VALUES (fields values)
contoh penggunaan:
INSERT INTO MyTable (Name, Address, Phone) VALUES (‘Alfred’, ’Ad 23’, Null)
? UPDATE
Digunakan untuk merubah data dalam sebuah tabel, bentuk query-nya:
UPDATE <table name> SET <field name> WHERE <clause>
contoh penggunaan:
UPDATE MyTable SET Name = ‘Andrew’ WHERE Id = ‘2312’
? DELETE
Digunakan untuk menghapus data dalam sebuah tabel, bentuk query-nya:
DELETE FROM <table name> WHERE <clause>
contoh penggunaan:
DELETE FROM MyTable WHERE Id = ‘123’
? WHERE
Digunakan untuk memilah data, bentuk query-nya:
Statement WHERE digunakan dengan penggabungan dengan statement lain, perhatikan contoh pada statement UPDATE dan DELETE