12. BAB II - Perpustakaan Universitas Mercu Buana

advertisement
BAB II
LANDASAN TEORI
2.1 Kompresi Data
Secara singkat Khalid Sayood (2006: 1) menyebut bahwa kompresi data
adalah sebuah seni atau ilmu dalam menyajikan data dalam bentuk yang lebih
compact. Kompresi data adalah proses merubah suatu input (data asli) menjadi
sebuah data lain dengan ukuran yang lebih kecil (David Salomon: 2004, 1-2).
Gambar 2.1 Analogi Kompresi Data.
(Sumber: http://www.newmediarepublic.com/dvideo/compression/adv04.html)
Dapat dilihat pada gambar 2.1, kompresi data dianalogikan seperti melipat
sebuah surat yang akan dimasukan ke dalam amplop yang kecil, agar dapat
dikirim dengan mudah dan murah. Data yang telah dikompres (seperti halnya
surat yang dilipat) tidak mudah dibaca dan harus didekompres terlebih dahulu
untuk mengembalikan ke bentuk aslinya.
5
http://digilib.mercubuana.ac.id/
6
Kompresi data adalah sebuah metode untuk mengurangi ukuran file agar
proses pengiriman file tersebut lebih efisien (Minhaj Ahmad Kahn 2012: 362).
Secara umum, proses kompresi data adalah mengambil sekelompok simbol dari
suatu input teks, memprosesnya dan mengubahnya ke dalam bentuk kode-kode
yang kemudian
ditulis ke dalam file hasil kompresi. Tujuan dilakukan
pengompresian data tersebut adalah untuk meminimalkan ukuran data dan
memaksimalkan kecepatan transfer data dari suatu lokasi ke lokasi lainnya yang
biasanya melewati suatu media transmisi. Kompresi data dikatakan efektif jika
hasil dari kode-kode itu lebih kecil dibandingkan dengan simbol-simbol aslinya.
Dalam istilah kompresi data, simbol adalah unit terkecil dari suatu informasi.
Pembuatan kode untuk simbol tertentu berdasarkan pada suatu model.
Model adalah kumpulan dari data statistik yang digunakan untuk memproses input
simbol-simbol dan menentukan kode-kode apa saja sebagai output-nya. Untuk
pengubahan simbol ke dalam bentuk kode yaitu dengan menggunakan suatu
aturan yang disebut encoding.
Teknik kompresi data sangat membantu pada bidang teknologi sehingga
terus dikembangkan oleh para ahli teknologi di selurah dunia. Contoh nyata yang
dapat kita temui dalam kehidupan sehari-hari adalah pada penggunaan teknologi
internet. Data yang diminta oleh pengguna pada pengaksesan suatu informasi
pada sebuah internet akan dikompres dahulu agar informasi dapat lebih cepat
dibaca, sehingga pada akhirnya meminimalkan waktu transfer data.
2.1.1 Kompresi Lossless dan Lossy
Teknik pengompresian dapat diklasifikasikan menjadi dua tipe kompresi
yaitu pengompresian lossless dan lossy. Kompresi lossless dan lossy merupakan
istilah yang mendeskripsikan apakahseluruh informasi data dari suatu file asli
dapat dikembalikan ke seperti semula atau tidak pada saat proses dekompresi.
Dalam kompresi lossless, setiap bit data padafile asli tidak akan berubah
setelah file didekompres. Semua informasi dikembalikan secara lengkap.
Kompresi ini pada umumnya digunakan untuk menyimpan semua jenis data
termasuk teks, file lembar kerja, basis data, program
komputer, informasi
finansial, dan informasi lainnya yang harus disimpan dalam bentuk aslinya. Pada
http://digilib.mercubuana.ac.id/
7
aplikasi-aplikasi ini kompresi lossless sangat diperlukan karena jika terjadi
kehilangan walaupun hanya satu bit akan merupakan masalah besar.
Pada sisi lain, kompresi lossy mengurangi suatu file secara permanen
dengan menghilangkan informasi tertentu. Pada saat file tersebut didekompres,
hanya sebagian informasi dari file asli yang tidak berubah. Kompresi lossy pada
umumnya digunakan untukfile audio dan video, dimana jumlah informasi tertentu
yang hilang tidak akan terdeteksi oleh kebanyakan pemakai. File gambar JPEG,
biasanya digunakan untuk foto menggunakan kompresi lossy dengan cara
membuang sejumlah bit gambar untuk membuat gambar berukuran lebih kecil.
Tingkat pembuangan informasi gambar ini biasanya ditentukan oleh pemakai.
2.1.2 Encoding, Decoding dan Rasio Kompresi
Pada umumnya pengompresan data terdiri dari dua proses yang digunakan
dalam program yaitu:
1. Encoding adalah suatu proses pada software atau hardware dimana program
atau peralatan melakukan pengkodean dalam format tertentu. Program atau
peralatan melakukan proses encoding disebut encoder atau coder. Dalam
kompresi data, file-file data yang akan dikompres menggunakan program
encoding. Bit-bit dalam file aslinya akan di-encode dengan menggunakan
algoritma pengompresan yang diinginkan, sehingga ukuran hasil kompresi
akan lebih kecil dari ukuran aslinya.
2. Decoding adalah suatu proses pada software atau hardware dimana program
atau peralatan melakukan penguraian kode dari file hasil encoding. Program
atau peralatan yang melakukan proses decoding disebut decoder. Peralatan
yang dapat melakukan proses decoding disebut codec. Dalam proses
decoding, file hasil dari proses encoding akan dikembalikan ke bentuk aslinya
dengan menggunakan algoritma pengompresan.
Rasio kompresi adalah sebuah nilai untuk mengukur performa suatu
metode kompresi (David Salomon,2004,10).Rasio kompresi dapat dihitung
dengan rumus 2.1.
=
...(2.1)
(Sumber: David Salomon,2004,10)
http://digilib.mercubuana.ac.id/
8
Dimana, R = Rasio Kompresi
O = Ukuran filesetelah dikompres
P = Ukuran filesebelum dikompres
Jika sebuah nilai rasio 0.6 artinya sebuah kompresi menghasilkan data
yang lebih kecil 60% dari ukuran aslinya.
2.1.3 Teori Umum Kompresi Data
Beberapa teknik pengompresan data secara lossless yang dapat digunakan
pada berbagai tipe data yaitu:
1. Run Length Encoding
Run
Length
Encoding
adalah
suatu
teknik
kompresi
yang
menggantikansimbol yang berurutan dengan simbol itu sendiri diikuti dengan
jumlah perulangan yang terjadi. Sebagai contoh,string 111110000003355
dapat diekspresikan dengan 15063252.Sudah jelas bahwa teknik kompresi ini
sangat berguna untuk simbol-simbol yang berurutan dan berulang. Dengan
demikian, teknik kompresi ini berguna untuk file-file gambar dimana pixelpixel gambar tersebut mempunyai nilai yang sama.
2. Relative Encoding
Relative Encoding adalah suatu teknik kompresi yang mencoba untuk
membuktikan efisiensi dengan mentransmisikan perbedaan antara masingmasing nilan dan predecessor-nya, ke tempat nilai itu sendiri. Dengan
demikian, nilai 15106433003 akan ditransmisikan sebagai 1+4-4-1+6-2-1+03+0+3. Akibatnya transmitter memprediksikan bahwa masing-masing nilai
adalah sama seperti predecessor-nya dan data yang ditransmisikan merupkan
perbedaan hasil prediksi dan nilai sebenarnya.Different Pulse Code
Modulation (DPCM) adalah contoh dari relative encoding ini.
3. Huffman Coding
Huffman Coding merupakan salah satu teknik pengompresan yang banyak
digunakan dan sangat popular. Teori pengkodean ini diciptakan oleh David A.
Huffman pada tahun 1952. Huffman Coding yaitu teknik pengompresan data
yang menempatkan Variable Length Codes(VLC) ke dalam simbol-simbol,
sehingga simbol-simbol yang sering muncul memiliki kode yang paling
http://digilib.mercubuana.ac.id/
9
singkat. Pada proses dekompresi simbol-simbol tersebut akan dikembalikan
ukuran kode aslinya. Ketika digunakan untuk mengompres teks, contohnya
Variable Length Codes digunakan sebagai ganti kode-kode ASCII, dan
karakter-karakter yang sering muncul, biasanya spasi,c dan a digunakan
sebagai kode-kode terpendek. Dengan cara ini jumlah total bit yang
diperlukan untuk mentransmisikan data dapat dipertimbangkan lebih sedikit
dibandingkan jika kode yang diambil sama untuk semua karakter. Huffman
Coding secara khusus lebih efektif jika simbol pada data tidak banyak variasi.
4. Arithmetic Coding
Walaupun Huffman Coding sangat efisien, teknik tersebut hanya optimal jika
kemungkinan simbol-simbol adalah 2n.Arithmetic Coding tidak mempunyai
pengecualian ini dan biasanya lebih efisien dibandingkan dengan teknik
Huffman Coding yang lebih popular.Walaupun lebih efisien, algoritma
Arithmetic Coding lebih rumit.
5. Lempel-Ziv Coding
Lempel-Ziv coding menggunakan sebuah kamus simbol-simbol yang
berurutan. Ketika sebuah urutan tersebut diulang maka akan diganti dengan
suatu referensi ke posisinya dalam kamus tersebut. Ada beberapa variasi dari
teknik Lempel-Ziv coding dan masing-masing berbeda dalam pengaturan
kamusnya.Teknik kompresi data dari Lempel-Ziv yang paling terkenal yaitu
Lempel-Ziv Welch.
2.2 Teori Huffman Coding
Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT David
Huffman pada tahun 1952, merupakan salah satu contoh metode paling terkenal
dalam kompresi teks. Algoritma Huffman menggunakan prinsip pengkodean yang
mirip dengan kode Morse, yaitu setiap karakter atau simbol dikodekan hanya
dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan
dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan
dengan rangkaian bit yang lebih panjang.
Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal
(isi data yang diinput) menjadi sekumpulan prefix code, algoritma Huffman
http://digilib.mercubuana.ac.id/
10
Coding termasuk kedalam kelas yang menggunakan metode statik. Metode statik
adalah metode yang selalu menggunakan peta kode yang sama, metode ini
membutuhkan dua fase: fase pertama menghitung frekuensi kemunculan setiap
karakter atau simbol dan membetuk sebuah binary tree yang disebut Huffman
Tree, selanjutnya fase kedua adalah mengubah teks menjadi susunan prefix code.
Dalam studi komparasi algoritma terhadap teks tahun 2011 memberikan
hasil: rasio kompresi untuk Huffman coding algoritma jatuh di kisaran 0,57-0,81.
Rasio kompresi yang diperoleh algoritma ini lebih baik dibandingkan dengan
algoritma Shannon-Fano denganjumlah bitsrata-rata per karakter adalah 5.27
(Robert Lourdusamy 2011: 72).
2.2.1 Huffman Tree
Setiap node yang bukan leaf dari suatu tree mempunyai 2 childnode,
childnode kiri dan childnode kanan.Node yangbukan leaf merupakan parent dari
dua node ini.Demikian pula, parent dari parentnode adalah grandparent dari
childnode yang disebut sebagai descendants’ dari ancestors. Pada tree Gambar
2.2,node 3 adalah parent dari node 6 dan7. Node 1 adalah parent dari 3 yang juga
merupakan grandparent dari node 6 dan 7. Maka, node 3 dan 1 adalah ancestors
dari node 6 dan 7.
Gambar 2.2 Huffman Tree
http://digilib.mercubuana.ac.id/
11
Ingat bahwa jika n karakter terdapat dalam sebuah file maka jumlah node
dalam Huffman tree adalah 2n-1. Jumlah kode maksimum untuk mewakili sebuah
karakter adalah jumlah level dikurangi 1.
Panjang kode sebuah karakter dapat ditentukan dari level dimana karakter
tersebut berada. Jika panjang kode sebuah karakter adalah n, maka karakter
tersebut terletak pada level ke-n+1 dari tree tersebut. Contohnya, kode karakter D
adalah 011, panjang kodenya adalah 3, maka karakter ini terletak pada level 4
tree.
Untuk mendapatkan kode dari tiap karakter dimulai dari rootnode dan
kemudian telusuri kearah leafyang mewakili karakter.Ketika bergerak ke
childnodekiri, “0” ditambahkan pada kode dan ketika bergerak ke childnode
sebelah kanan, “1” ditambahkan pada kode.
Dapat dilihat pada gambar 2.2 Untuk mendapatkan kode ‘A’ dari tree,
pertama-tama kita mulai dari root node (node 1). Karena karakter ‘A’ adalah
descendant dari childnode sebelah kanan (Kita tentukan cabang mana yang diikuti
dengan melihat cabang lain yang merupkan leafnode dari karakter atau ancestornya) kita bergerka ke kanan dan menambahkan ‘1’ untuk kode karakter ‘A’.
Sekarang kita berada di node 3.Leafnode dari karakter ‘A’ terletak di sebelah
kanannode ini,sehingga kita bergerak lagi ke kanan dan menambahkan ‘1’ ke
kodenya. Sekarang kita telah sampai pada node 7 dimana merupakan leafnode
dari karakter ‘A’. Jadi, kode untuk karakter ‘A’ adalah 11. Dengan cara yang
sama, kode untuk karakter lain dapat diperoleh. Kita dapat melihat bahwa kode
karakter yang sering muncul lebih pendek dari karakter yang jarang muncul.
2.2.2 Pembuatan Huffman Tree
Huffman Coding pada dasarnya merupakan prefix code. Prefix code
adalah himpunan yang berisi sekumpulan kode biner, dimana pada prefix code ini
tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Prefix code
biasanya direpresentasikan sebagai birnary tree yang diberikan nilai atau label.
Langkah-langkah pembentukan Huffman Tree adalah sebagai berikut:
1. Baca semua karakter di dalam teks untuk menghitung frekuensi kemunculan
setiap karakter.
http://digilib.mercubuana.ac.id/
12
2. Urutkan berdasarkan frekuensi kemunculan.
3. Gabungkan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah
root. Setelah digabungkan root tersebut mempunyai frekuensi dari jumlah dua
buah pohon-pohon penyusunnya.
4. Ulangi langkah 3 sampai hanya tersisa satu buah root.
2.2.3 Encoding dan Decoding
Encoding adalah cara menyusun string biner dari teks yang ada. Proses
untuk satu karakter dimulai dengan membuat Huffman Tree terlebih dahulu.
Setelah itu, kode untuk satu karakter dibuat dengan menyusun bilangan biner yang
dibaca dari root sampai leaf dimana karakter tersebut ditempatkan.
Langkah-langkah untuk men-encoding suatu teks adalah sebagai berikut:
1. Tentukan karakter yang akan di-encoding.
2. Mulai dari root, setiap melewati leaf sebelah kiri maka tambahkan bit 0 pada
prefix code dan sebaliknya jika melewati leaf kanan tambahkan bit 1 pada
prefix code sampai berada padaleaf dimana karakter itu berada.
3. Ulangi langkah 2 sampai seluruh karakter di-encoding.
Untuk merubah hasil kompresi menjadi bentuk awal teks maka dilakukan
decoding.Decoding merupakan
kebalikan
menyusun
string
kembali
susunan
dari encoding.Decoding
biner
menjadi
sebuah
berarti
karakter
kembali.Decoding dapat dilakukan dengan dua cara, yang pertama dengan
menggunakan Huffman Tree dan yang kedua dengan menggunakan tabel
Huffman Coding.
Langkah-langkah untuk men-decoding dengan menggunakan Huffman
Tree adalah sebagai berikut:
1. Baca sebuah bit biner.
2. Mulai dari root.
3. Untuk setiap bit pada langkah1, jika bit bernilai 1, arahkan pencarian ke leaf
kanan dan jika bit bernilai 0 maka arahkan pencarian ke leaf sebelah kiri.
4. Ulangi langkah 1, 2, dan 3 sampai bertemu dengan leaf.
5. Ulangi dari langkah 1 sampai semua bit di-decoding.
http://digilib.mercubuana.ac.id/
13
2.3 Bahasa Pemrograman Java
Java adalah bahasa pemrograman yang dapat berjalan pada berbagai jenis
platform komputer seperti Windows,MacOS,linux bahkan telepon genggam.
Bahasa pemrograman ini dikembangkan pertama kali oleh James Gosling saat
masih bergabung dengan sebuah perusahaan bernama Sun Microsystem dan dirilis
pada tahu 1995. Sintak bahasa pemrogram java banyak mengadopsi sintaksi yang
terdapat dalam C maupun C++ namun lebih sederahana. Aplikasi-aplikasi
berbasis java umumnya dikompilasi kedalam bytecode dan berjalan dalam Java
Virtual Machine (JVM). Java merupakan bahasa pemrograman umum, dan secara
khusus didesain untuk memanfaatkan dependensi implementasi seminimal
mungkin. Fungsionalitasnya memungkinkan aplikasi berbasis java mampu
berjalan di beberapa platform berbeda, sesuai dengan slogannya “tulis sekali,
jalankan dimanapun”.
Sebagai sebuah platform, Java terdiri atas dua bagian utama yaitu:
1. Java Virtual Machine (JVM).
2. Java Application Programming Interface (API).
Java
memiliki
beberapa
kelebihan
dibandingkan
dengan
bahasa
pemrograman lainnya. Adapun kelebihan tersebut diantaranya:
1. Sederhana
Jika dibandingkan dengan bahasa pemograman lainnya seperti C++, Java lebih
sederhana.Walaupun sebagian besar Java dibuat menggunakan bahasa C++,
tetapi Java dibuat lebih sederhana dan memiliki kemampuan yang lebih
tinggi.Java menggunakan alkasi memori otomatis dan memiliki garbage
collection.
2. Berorientasi objek
Java dirancang untuk memenuhi kemampua pemograman berorientasi
objek.Pemograman berorientasi objek merupakan pendekatan atau metodologi
perancangan program berdasarkan objek.Semua hal dalam pemograman
berorientasi objek dapat dianggap sebagai objek.
3. Distributed
http://digilib.mercubuana.ac.id/
14
Distributed Computingadalah metode komputerisasi dengan menggunakan
beberapa komputer yang dihubungkan dengan jaringan untuk mengelola
tugas-tugas tertentu. Java memilki kemampuan networking yang baik, yang
menjadikan programmer networking dapat mengirim dan menerima data dari
sebuah file.
4. Netral terhadap berbagai arsitektur
Program yang dihasilkan oleh Java tidak tergantung kepada arsitektur
computer tertentu, karena Java berjalan dalam lingkungan JVM (Java Virtual
Machine), program Java dapat dijalankan pada arsitektur computer yang
berbeda-beda.
5. Terintrepetasi
Ini merupakan karakteristik yang penting dan harus dimengerti oleh pengguna
Java yang baru mengenal Java. Java adalah bahasa yang menggunakan
interpreter atau penerjemah untuk dapat menjalankan program. Agar program
dapat dijalankan, makan computer tujuan harus memiliki interpreter. Hal
tersebut dikarenakan interpreter Java menerjemahkan kode bytecode ke dalam
bahasa mesin dari computer yang bersangkutan.
6. Robust
Robust berarti dapat diandalkan. Java dapat diandalkan untuk berbagai
keperluan karena Java telah melewati berbagai macam proses dalam
perkembangannya. Java telah menghilangkan dan mengantisipasi berbagai
macam gangguan (bug) dan kesalahan-kesalahan yang umum terjadi dalam
pemrograman
7. Multithreated
Java juga dibekali dengan pemrosesan beberapa tugas seara bersamaan (multithreading) seperti bahasa pemograman lainnya (C, C++, dsb).Kemampuan ini
sangat baik digunakan pada GUI (GraphicalUserInterface) dan pemograman
jaringan.Pada pemograman GUI banyak hal bisa terjadi bersamaan, misalnya
user dapat mendengarkan music sambil mengetik.Pada pemograman jaringan
sebuah server dapat melayani beberapa permintaan servis dari client-client
secara bersamaan.
8. Pengumpulan sampah otomatis
http://digilib.mercubuana.ac.id/
15
2.3.1 J2SE (Java 2 Standard Edition)
Aplikasi yang dibuat penulis dalam penulisan ini menggunakan bahasa
pemrograman berbasis Java 2 Standard Edition (J2SE). Pada bagian ini, penulis
akan menjelaskan dasar-dasar J2SE.
J2SE atau Java 2 Standard Edition merupakan salah satu arsitektur Java
untuk aplikasi desktop. Pada J2SE terdapat 2 kelompok komponen Java untuk
membantu membuat dan menjalankan aplikasi, tanpa tergantung jenis platform
yang digunakan, yaitu:
1. Java
Runtime
Environtment
(JRE),
tugasnya
adalah
menyediakan
perpustakaan, Java Virtual Machine (JVM), dan komponen lain untuk
menjalankan applet dan aplikasi yang ditulis dengan bahasa pemrograman
Java.
2. Java Development Kit (JDK), merupakan perangkat lunak yang digunakan
untuk manajemen dan membangun berbagai aplikasi Java.
Tabel 2.1 Tabel Package pada J2SE
Package
Language
Utilities
I/O
Nama Package
java.lang
java.util
java.io
Text
java.text
Math
java.math
AWT
Swing
java.awt
java.swing
Javax
Applet
Beans
Reflection
SQL
RMI
Networking
Security
javax
java.applet
java.beans
java.lang.reflect
java.sql
java.rmi
java.net
java.security
Keterangan
Class-class yang merupakan inti dari bahasa Java.
Class-class yang mendukung utilitas struktur Java
Class-class yang mendukung berbagai macam tipe input dan
output
Class yang mendukung lokalisasi penanganan teks, tanggal,
bilangan, dan message.
Class untuk melakukan perhitungan aritmatik arbitraryprecission, baik integer atau floating point
Class untuk perancangan user-interface dan event-handling
Class untuk membuat berbagai komponen dalam Java uang
bertingkah laku sama dengan berbagai platform
Perluasan dari bahasa Java
Class untuk membuat applet
Class untuk membuat Java beans
Class untk memperoleh informasi runtime
Class untuk mendukung akses dan pengolahan database
Class untuk mendukung distributed programming
Class untuk mendukung aplikasi jaringan
Class untuk mendukung keamanan dan kriptografi
http://digilib.mercubuana.ac.id/
16
Bahasa pemrograman java menyediakan beberapa pustaka standar yang
telah di-compile dan dapat langsung digunakan dalam implementasi pembuatan
sebuah aplikasi.Dapat dilihat pada Tabel 2.1, pada sebuah pustaka terdapat
berbagai macam class yang dapat digunakan dan telah dikelompokan ke dalam
package sesuai dengan fungsi class-class tersebut.
2.3.2 Swing
Java Swing merupakan library Java yang digunakan untuk membuat
Graphical User Interface (GUI) yang berbasis cross platform atau OS
independent. Antarmuka grafis yang dibangun dengan Java dapat dijalankan pada
sistem operasi yang mendukung Java dengan tampilan yang relatif sama, bahkan
dapat menyerupai antarmuka Windows XP, Mac Os atau Linux.
Swing diperkenalkan sebagai mekanisme yang dapat dilihat dan dirasakan
tiap-tiap komponen dalam sebuah aplikasi tanpa membuat perubahan pada
substansi dalam pengkodean dari aplikasi.
Secara umum, komponen swing terdiri dari lima bagian yang sering
digunakan, yaitu:
1. Top-level container
Merupakan container dasar dimana komponen lainnya diletakan. Toplevel
Container
ini
terdiri
dari
Frame,
Dialog,
dan
Applet
yang
diimplementasikan dalam class JFrame, JDialog dan JApplet.
2. Intermediate Container
Merupakan komponen perantara untuk peletakan komponen lainnya, yaitu
JPanel.
3. Atomic Container
Merupakan komponen yang memiliki fungsi spesifik dan biasanya user
berinteraksi langsung dengan jenis komponen ini. Contohnya: Jbutton,
Jtextfield, dan masih banyak lagi.
4. Layout Manager
Layout Manager berfungsi untuk mengatur posisi dari komponen yang
diletakan pada container. Terdapat 5 macam layout, yaitu: BorderLayout,
BoxLayout, FlowLayout, GridBagLayout, dan GridLayout
http://digilib.mercubuana.ac.id/
17
5. Event Handling
Event Handling berfungsi untuk menangani event yang dilakukan user,
misalnya menekan tombol, klik mouse, dan lain sebagainya.
2.3.3 Java Graphics
Kelas Graphics adalah kelas abstrak yang menyediakan interface grafis
untuk menampilkan bentuk dan gambar di layar (screen) di platform berbeda.
Ketika metoda paint(Graphics g) atau paintComponent(Graphics g) digunakan, g
adalah objek subclass konkret dari kelas abstrak Graphics.
Tabel 2.2 menunjukan kelas Graphics mempunyai banyak metoda yang
dapat digunakan untuk menggambar string, line, dan berbagai bentuk bangun
(lihat Tabel 2.2).Anda dapat memanggil metoda-metoda tersebut menggunakan
variabel acuan g yang mengacu ke objek dari kelas Graphics, yang merupakan
parameter dari metoda pain dan paintComponent
Tabel 2.2 Metoda Dalam Kelas Graphics
Nama Metoda
drawstring(String str,int x,int y)
drawLine(int x1,int y1,int x2,int y2)
drawRect(int x,int y,int width,int height)
fillRect(int x,int y,int width,int height)
drawOval(int x,int y,int width,int height)
fillOval(int x,int y,int width,int height)
drawRoundRect(int x,int y,int width,int
height,int arcWidth,int arcHeight)
fillRoundRect(int x,int y,int width,int
height,int arcWidth,int arcHeight)
draw3DRect(int x,int y,int width,int
height,Boolean b)
fill3DRect(int x,int y,int width,int
height,Booleanb)
Keterangan
Menggambar string dengan(koordinat) ditentukan
oleh x dan y
Menggambar garis dengan titik pertama x1 dan y1
dan titik kedua x2 dan y2
Menggambar persegi panjang dengan sudut kiri atas
ditentukan oleh x dan y serta lebar dan panjang
ditentukan oleh width dan height
Menggambar persegi panjang berwarna dengan
sudut kiri atas ditentukan oleh x dan y serta lebar
dan panjang ditentukan oleh width dan height
Menggambar lingkaran lonjong dengan panjang
dan sudut kiri atas ditentukan oleh x dan y. Lebar
dan panjang ditentukan oleh width dan height
Menggambar lingkaran berwarna dengan panjang
dan sudut kiri atas ditentukan oleh x dan y. Lebar
dan panjang ditentukan oleh width dan height
Menggambar persegi panjang dengan sudut
melingkar, lebar dan tinggi ditentukan oleh width
dan height. Sudut-sudut melingkar ditentukan oleh
arcWidth dan arcHeight
Menggambar persegi dengan sudut melingkar
berwarna, lebar dan tinggi ditentukan oleh width
dan height. Sudut-sudut melingkar ditentukan oleh
arcWidth dan arcHeight
Menggambar persegi dengan efek tiga dimensi
Menggambar persegi dengan efek tiga dimensi
http://digilib.mercubuana.ac.id/
18
2.4 Java IDE
IDE atau Integrated Development Environment merupakan tools
pembantu untuk pembuatan program atau aplikasi Java. Berbeda dengan Visual
Basic atau bahasa pemrograman lain dimana pengguna tidak diperbolehkan
memilih IDE-nya sendiri. Java membebaskan penggunanya untuk memilih IDE
yang mereka sukai.
Beberapa IDE Java yang populer antara lain sebagai berikut:
1. Netbeans
2. Eclipse
3. Jdeveloper
2.5 Simulasi
2.5.1 Pengertian Simulasi
Simulasi adalah suatu peniruan sesuatu yang nyata, keadaan sekelilingnya,
atau proses.Aksi melakukan simulasi sesuatu secara umum mewakilkan suatu
karakteristik kunci atau kelakuan dari sistem-sistem fisik atau abstrak
(Wikipedia).
Clark Aldrich (2004:i) menyebutkan bahwa simulasi adalah sebuah
perubahan dalam sistem pendidikan setelah buku tulis (textbook). Simulasi
memasukan lapisan otomatisasi untuk mempermudah suatu proses pembelajaran.
James J. Nutaro (2011:1) menyebutkan juga bahwa simulasi memungkinkan
sebuah sistem yang tidak dapat dipraktekan menjadi dapat dipraktekan.Simulasi
juga dapat mengurangi biaya karena dengan adanya sebuah sistem simulasi biaya
pengadaan untuk prototype dapat dikurangi.
2.5.2 Struktur Dasar Model Simulasi
Setiap model memiliki unsur-unsur berikut ini:
1. Komponen-komponen model, yakni entitas yang membentuk model,
didefinisikan sebagai objek system yang menjadi perhatian pokok.
2. Variabel, nilai yang selalu berubah.
http://digilib.mercubuana.ac.id/
19
3. Parameter, yakni nilai yang tetap pada suatu saat, tapi bias berubah pada
waktu yang berbeda.
4. Hubungan fungsional, yakni hubungan antar komponen-komponen model.
5. Konstrain, yakni batasan dari permasalahan yang dihadapi.
2.5.3 Langkah-langkah Simulasi
Dalam melakukan simulasi terdapat langkah-langkah yang perlu
dilakukan:
1. Pendefinisian sistem, menentukan batasan system dan identifikasi variabel.
2. Formulasi Model, merumuskan hubungan antar komponen.
3. Pengambilan data, yakni identifikasi data yang diperlukan model sesuai tujuan
pembuatannya.
4. Pembuatan model, yakni menyesuaikan penyusunan model dengan jenis
bahasa simulasi yang digunakan.
5. Verifikasi Model, yakni proses pengecekan terhadap model apakah sudah
bebas dari kesalahan. Dalam tahap ini perlu disesuaikan dengan bahasa
simulasi yang digunakan.
6. Validasi model, yakni proses pengujian terhadap model apakah sudah sesuai
dengan sistem nyatanya.
7. Skenariosasi, penyusunan scenario terhadap model. Setelah model dianggap
valid, maka berikutnya adalah membuat beberapa scenario atau eksperimen
untuk memperbaiki kinerja system sesuai dengan keinginan.
Secara umum jenis-jenis skenario ini adalah:
a. Skenario parameter dilakukan dengan mengubah nilai parameter
model.
b. Skenario struktur dilakukan dengan mengubah struktur model.
8. Interpretasi Model, yakni proses penarikan kesimpulan dari hasil output model
simulasi.
9. Implementasi, yakni penerapan model pada system nyata.
10. Dokumentasi, proses penyimpanan hasil output model.
http://digilib.mercubuana.ac.id/
20
2.6 UML
Menurut Dan Pilone dan Neil Pitman (2005:14) UML atau Unified
Modeling Language adalah sebuah bahasa visual untuk merepresentasikan design
dan patterns suatu software. UML juga berfungsi untuk menggambarkan
hubungan dan perilaku objek-objek dalam suatu rancangan sistem atau sistem.
UML
adalah
suatu
bahasa
yang
digunakan
untuk
menentukan,memvisualisasikan, membangun, dan mendokumentasikan suatu
sistem
informasi.UML
juga
dapat
digunakan
untuk
memahamidan
mendokumentasikansistem informasi.
UML menyediakan macam-macam diagram untuk memodelkan aplikasi
berorientasi objek, yaitu:
1. Use case Diagram untuk memodelkan proses bisnis.
2. Activity Diagram untuk memodelkan perilaku Use cases dan objek di dalam
sistem.
3. Sequence Diagram untuk memodelkan pengiriman pesan (message) antar
objek.
4. Class Diagram untuk memodelkan struktur kelas.
2.6.1 Use Case Diagram
Use case diagram mendeskripsikan fungsi dan kebutuhan terhadap sistem.
Use case diagram berisi sebuah fungsi, dan sesuatu atau seseorang yang
menggunakan fungsi tersebut (Dan Pilone: 2005,115).
Use case diagram menjelaskan tentang hubungan antara sistem dengan
aktor. Hubungan ini dapat berupa input dari aktor ke sistem ataupun output dari
sistem ke aktor. Use case diagram merupakan dokumen naratif yang
mendeskripsikan kasus-kasus atau kejadian-kejadian daripada aktor dalam
menggunakan sistem untuk menyelesaikan proses. Dalam sebuah use case
diagram terdapat beberapa komponen notasi diantaranya:
1. Use cases
Uses Cases merepresentasikan fungsi dari sistem atau apa saja yang dapat
dilakukan
user
terhadap
sistem.
Seperti
pada
http://digilib.mercubuana.ac.id/
Gambar
2.3,
use
21
casesdinotasikan dengan sebuah oval. Nama uses case ditulis didalam oval
tersebut dan harus unik.
Gambar 2.3Notasi use case
2. Actors
Actors adalah para pengguna (users) dari sebuah sistem. Kadangkala sebuah
sistem merupakan actors bagi sistem lain. Actor adalah seseorang atau sesuatu
yang harus berinteraksi dengan sistem. Pada Gambar 2.4 kita dapat melihat
bahwa actors dinotasikan dengan sebuah “stick man” dan memiliki sebuah
label dibawahnya. Label ini adalah sebuah instant dari actor, contoh:
pelanggan, dosen, dan kasir.
Gambar 2.4Notasi Actor
3. Communication Line
Sebuah garis yang menghubungkan actors dengan Use Case.
4. Use Case Relationship
Hubungan antar use cases, dinotasikan dengan tanda anak panah putus-putus
dengan sebuah label. Gunakan label <<Extend>> jika use case yang satu mirip
dengan use case yang lain, dan gunakan label <<Include>> jika use case
menggunakan kembali use case yang lain.
5. System Boundaries
Dinotasikan dengan sebuah persegi yang membungkus semua use case,
System Boundaries ini membedakan sistem satu dengan yang lain dalam hal
fungsi dan tanggung jawab sistem tersebut.
http://digilib.mercubuana.ac.id/
22
2.6.2 Activity Diagram
Activity diagram menggambarkan aliran aktifitas dalam sistem yang
sedang dirancang, bagaimana masing-masing aliran berawal, decision yang
mungkin terjadi, dan bagaimana aliran proses itu berakhir.
Menurut Dan Pilone (2005: 152) activity diagram fokus terhadap
rangkaian eksekusi dan aliran proses sebuah sistem daripada bagaimana sistem
tersebut dibangun.
Gambar 2.5Contoh Activity Diagram
(Sumber: http://msdn.microsoft.com/en-us/library/dd409360.aspx)
Gambar 2.6Activity Diagram Dengan Concurence Flow
(Sumber: http://msdn.microsoft.com/en-us/library/dd409360.aspx)
http://digilib.mercubuana.ac.id/
23
Gambar 2.5 dan gambar 2.6 adalah contoh activity diagram, penjelasan
mengenai simbol-simbol notasi dapat dilihat pada tabel 2.3 di bawah ini.
Tabel 2.3 Notasi Activity Diagram
No
Nama Element/Notasi
Deskripsi
1
Action
State dari sistem yang mencerminkan eksekusi suatu
aksi
2
Control Flow
Menunjukan urutan dalam sebuah aktivitas.
3
Initial Node
Awal sebuah activity
4
Activity Final Node
Akhir dari activty
5
Decision Node
Kondisi percabangan, memiliki 1 buah input dan 2
atau lebih output.
6
Guard
7
Merge Node
Dibutuhkan untuk menggambungkan aliran yang
sebelumnya displit oleh decision node.
8
Comment
Untuk tambahan informasi mengenai elemen terkait.
9
Call Behaviour
Sebuah action yang memiliki detail dari activity
diagram lain.
11
Fork Node
Membagi aliran proses menjadi beberapa aliran yang
saling konkuren.
12
Join Node
Menggambung aliran paralel.
13
Send Signal Action
Notasi untuk pengiriman sinyal atau pesan.
14
Accept Event Action
Notasi untuk penerimaan sinyal atau pesan.
2.6.3 Sequence Diagram
Sequence diagram menggambarkan urutan interaksi antar objek dalam
sistem (Russ Miles: 2006, 109). Sequence diagram terdiri dari dimensi vertikal
dan dimensi horizontal. Dimensi vertikal adalah poros waktu, berjalan ke
bawah.Sedangkan dimensi horizontal merepresentasikan objek-objek individual.
Tiap objek (termasuk aktor) mempunyai waktu aktif yang gambarkan oleh kolom
vertikal yang disebut lifeline.Pesan direpresentasikan sebagai tanda panah dari
suatu lifeline ke lifeline yang.
http://digilib.mercubuana.ac.id/
24
Simbol dan notasi dasar sequence diagram adalah sebagai berikut:
1. Class Roles
Class roles menggambarkan way (jalan) sebuah objek akan menunjukan
reaksi dalam sebuah keadaan.Notasi untuk class roles dapat dilihat pada
gambar 2.7.
Gambar 2.7 Notasi Activations
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-sequence-diagram/)
2. Activation
Activation merepresentasikan waktu yang dibutuhkan oleh objek untuk
melaksanakan proses.Notasi untuk activation dapat dilihat pada gambar 2.8.
Gambar 2.8Notasi Activations Lainnya
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-sequence-diagram/)
3. Messages
Pada gambar 2.9messages
digambarkan dengan tanda panah
merepresentasikan komunikasi
antar objek.
yang
Message berguna untuk
mengirimkan perintah kepada lifeline.Message bisa berasal dari aktor kepada
http://digilib.mercubuana.ac.id/
25
lifeline atau dari lifeline ke lifeline lainnya.Gambar 2.10 menunjukan berbagai
notasi message.
Gambar 2.9 Notasi Message
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-sequence-diagram/)
Gambar 2.10 Notasi Message Lainnya
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-sequence-diagram/)
4. Lifelines
Lifeline
digambarkan
dengan
garisputus-putusvertikalyang
menunjukkankeberadaanobjekdari waktu ke waktu.Gambar 2.11 adalah
contoh notasi lifeline.
http://digilib.mercubuana.ac.id/
26
Gambar 2.11 Notasi Lifeline
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-sequencediagram/)
5. Destroying Objects
Obyek dapat dihentikan lebih awal menggunakan panah yang bertuliskan
"<<destroy>>" yang menunjuk ke sebuah X. Lihat Gambar 2.12.
Gambar 2.12 Notasi Destroy
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-sequence-diagram/)
6. Loops
Suatu pengulangan digambarkan dengan perseagi panjang. Kondisi untuk
keluar dari loop ditulis pada bagian kiri bawah.Lihat gambar 2.13.
http://digilib.mercubuana.ac.id/
27
Gambar 2.13 Notasi Loop
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-sequencediagram/)
2.6.4 Class Diagram
Menurut Dan Pilone & Neil Pitman (2005, 29) class mewakili sekelompok
hal-hal yang memiliki keadaan atau sifat dan perilaku. Contohnya: Volkswagen,
Toyota, dan Ford dapat diwakili dengan class bernama mobil. Sedangkan menurut
Russ Miles and Kim Hamilton (2006, 64) class adalah tipe dari sesuatu.Class
adalah sebuah “cetak biru” dalam sebuah objek yang akan dibangun. Class
merupakan sekelompok hal-hal yang memiliki keadaan dan perilaku umum.
Class diagram adalah salah satu jenis diagram yang paling mendasar
dalam UML. Class diagram digunakan untuk merepresentasikan hubungan statis
sistem, classapa saja yang mengandung referensi class lain, class apa saja yang
dimiliki oleh suatu class (Dan Pilone & Neil Pitman: 2005, 28).
Elemen-elemen notasi class diagram dalam UML terdiri dari:
1. Classes
Pada Gambar 2.14 sebuah class dinotasikan dengan gambar persegi yang
dibagi menjadi 3 bagian dipisahkan oleh sebuah garis. Bagian paling atas diisi
oleh namaclass ditulis kapital dan tebal. Bagian kedua berisi atribut-atribut
yang dimiliki class.Bagian paling bawah diisi oleh operasi-operasi yang dapat
dilakukan class.
http://digilib.mercubuana.ac.id/
28
Gambar 2.14 Notasi Class
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-class-diagrams/)
2. Active Classes
Kelas aktif memulai dan mengontrol aliran aktivitas, sedangkan kelas pasif
menyimpan data dan melayani kelas-kelas lain. Menggambarkan kelas aktif
dengan perbatasan tebal seperti pada Gambar 2.15.
Gambar 2.15 Notasi Class Lainnya
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-class-diagrams/)
3. Visibility
Notasi visibility adalah sebuah tanda untuk membedakan hak akses terhadap
informasi yang ada pada suatu class.Jika sebuah atribut atau operasi memiliki
visibilitas private maka informasi disembunyikan dari luar class.Public
memungkinkan class-class lain melihat/mengambil informasi.Sedangkan
Protected membolehkan hanya class-class turunan saja.Visibility dinotasikan
dengan simbol +, _, dan # seperti ditunjukan oleh Gambar 2.16.
4. Associations
Associations adalah hubungan statis antar class. Nama Associations
ditempatkan di atas atau di bawah garis yang menghubungkan 2 class.Tanda
panah menandakan arah hubungan. Roles merepresentasikan peran class
terhadap class lain. Contoh notasi dapat dilihat pada Gambar 2.17.
http://digilib.mercubuana.ac.id/
29
Gambar 2.16 Notasi Visibility
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-class-diagrams/)
5. Multiplicity/Kardinalitas
Sebuah asosiasi yang merupakan hubungan struktural antara objekobjek.Dalam banyaksituasipemodelan,penting untuk menyatakan berapa
banyak objek dapatdihubungkan melintasi sebuah instancedalam sebuah
asosiasi. Gambar 2.18 merupakan contoh notasi multiplicity, satu buah
perusahaan mempunyai satu atau lebih karyawan dan seorang karyawan
bekerja pada satu perusahaan.
Gambar 2.17 Notasi Associations
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-class-diagrams/)
Gambar 2.18 Notasi Multiplicity
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-class-diagrams/)
http://digilib.mercubuana.ac.id/
30
6. Composition dan Aggregation
Menunjukan hubungan antar class “terdiri atas..”. Gambar 2.19 menunjukan
notasi Compostion dan Aggregation bahwa classA terdiri atas class B.
Gambar 2.19 Notasi Composition dan Aggregation
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-class-diagrams/)
7. Generalisasi
Generalisasi adalah istilah lain untuk penurunan atau inheritance. Sebuah
class bisa saja turunan dari class lain. Sebuah class turunan mempunyai semua
atribut dan operasi dari parent class-nya.Gambar 2.20 menunjukan contoh
notasi untuk generalisasi pada class diagram.
Gambar 2.20 Notasi Generalisasi
(Sumber: http://www.smartdraw.com/resources/tutorials/uml-class-diagrams/)
2.7 Rekayasa Perangkat Lunak
Rekayasa Perangkat Lunak menurut Roger S. Pressman (2001) adalah
disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai tahap
http://digilib.mercubuana.ac.id/
31
awal spesifikasi sistem sampai pemeliharaan sistem setelah digunakan. Beberapa
tujuan dari rekayasa perangkat lunak yaitu :
1.
Meningkatkan keakuratan, performance & efficiency produk secara
keseluruhan dalam pengembangan.
2.
Menerapkan metodologi yang terdefinisi dengan baik
untuk resolusi
perangkat lunak.
3.
Rekayasa Perangkat Lunak berhubungan dengan masalah-masalah praktis
untuk menghasilkan suatu perangkat lunak. Pendekatan dilakukan dengan
model bisnis dan strategi bisnis suatu perangkat lunak.
Dalam perancangan perangkat lunak dikenal istilah SDLC (System Development
Life Cycle) yaitu tahapan-tahapan pekerjaan yang dilakukan oleh analis sistem
dan programmer dalam membangun sistem informasi. Pada pengembangan
aplikasi simulasi algoritma Huffman Coding ini, penulis menerapkan model
pengembangan perangkat lunak waterfall.
Model waterfall, kadang disebut juga classic life cycle adalah sistem
pendekatan pengembangan perangkat lunak secara linear sequential. Dapat dilihat
pada gambar 2.4 model pengembangan waterfall dimulai secara berurutan seperti
berikut:
1. Analisis.
Langkah pertama adalah analisa kebutuhan sistem.Apa saja masukan ke
sistem. Apa saja proses yang dilakukan sistem serta apa saja yang dikeluarkan
(output) oleh sistem.
2. Desain.
Proses ini berfokus pada: struktur data, arsitektur perangkat lunak,
representasi interface, dan detail (algoritma) prosedural.
3. Kode atau implementasi.
Desainharus diterjemahkanke dalam bentukmesin yang dapat dibaca.
Langkahpembuatan kodemelakukantugas ini. Jikadesaindilakukandengan cara
yangrinci, pembuatan kodedapat diselesaikansecara mekanis.
4. Pengujian.
Tujuan testing adalah menemukan kesalahan-kesalahan terhadap sistem
tersebut dan kemudian bisa diperbaiki, memastikan semua fungsi berjalan
http://digilib.mercubuana.ac.id/
32
dengan baik, juga memastikan bahwa output sistem sudah sesuai dengan
kondisi input. Terdapat 2 metode pengujian terhadap perangkat lunak, yaitu:
a. Whitebox
Pengujianyang
didasarkan
pada
pengecekan
terhadap
detail
perancangan, menggunakan struktur kontrol dari desain program
secara prosedural untuk membagi pengujian ke dalam beberapa kasus
pengujian. Secara sekilas dapat diambil kesimpulan white box testing
merupakan petunjuk untuk mendapatkan program yang benar secara
100%.
b. Blackbox
Pengujian blackbox hanya fokus pada fungsional aplikasi tanpa
melihat struktur internal aplikasi. Pengujian blackbox cenderung
menemukan: kesalahan fungsi, kesalahan antarmuka, kesalahan
performa, dan lain-lain.
Gambar 2.21 Alur Pendekatan PL Model Waterfall
http://digilib.mercubuana.ac.id/
Download