4.3. Implementasi Proses Latar
Dari perancangan proses latar yang telah dibuat terdapat 6 proses latar yang dikerjakan pada thread-thread yang berbeda, karena java mendukung konsep
pemrograman multithreading, berikut adalah pseudoceode dari proses background:
Pseudocode kompres sms: 1.
new thread 2.
String isi - getPesanTextbox text 3.
String biner - kompresisi 4.
biner - addVersionbiner 5.
byte[] hasil - StringToBytebiner 6.
return hasil
Gambar 4.7. Pseudocode Implementasi Proses Latar Algoritma Kompres
Proses kompresi dimulai dengan menciptakan thread baru kemudian mengambil pesan yang diketikkan pengguna dari Textbox dengan perintah
getPesanTextbox text
dan disimpan dalam variabel isi, variabel ini dijadikan sebuah parameter yang dilewatkan melalui method
kompresisi
yang proses di dalamnya yaitu mencari setiap karakter spasi dan membandingkan kata di sebelah
kirinya dengan tabel konversi kata dan merubahnya ke biner, jika tidak ditemukan kata yang cocok, tiap-tiap karakter pembentuk kata tersebut akan diubah ke biner
berdasarkan tabel Konversi huruf, hasil dari method ini berupa string biner. Sebelum string biner dikirimkan, akan ditambahkan 4 bit pada deretan awal string biner untuk
menandakan versi dari aplikasi pengirim dengan perintah
addVersionbiner
. Agar pesan dapat dikirimkan melalui method
BinaryMessage
, string biner harus diubah dulu ke bentuk byte dengan perintah
StringToBytebiner
dan hasilnya berupa byte akan dikembalikan kepada thread yang memanggil thread ini.
Pseudocode dekompres sms: 1.
new thread 2.
byte[] byte - getPesanbyte[] text 3.
String biner - ByteToStringbyte 4.
int version - getVersionbiner 5.
String hasil - dekompresbiner, version 6.
return hasil
Gambar 4.8. Pseudocode Implementasi Proses Latar Algoritma Dekompres
Proses dekompres dimulai dengan menciptakan thread baru kemudian mengambil pesan dengan perintah
getPesanbyte[] text
dan disimpan dalam variabel byte, karena isi dari variabel berupa byte, sebelum didekompres akan diubah
dulu ke bentuk string biner dengan perintah
ByteToStringbyte
dan diambil versi pesan dengan perintah
getVersionbiner
. Setelah mendapatkan pesan biner dan versinya, variabel-variabel tersebut akan dijadikan sebuah parameter yang dilewatkan
melalui method
dekompresbiner, version
yang proses di dalamnya yaitu mencari setiap deret biner yang merepresentasikan karakter spasi dan
membandingkan string biner di sebelah kirinya dengan tabel konversi kata dan merubahnya ke kata, jika tidak ditemukan string biner yang cocok, deretan string
biner tersebut akan diubah ke huruf per huruf berdasarkan tabel Konversi huruf, dan hasilnya berupa string akan dikembalikan kepada thread yang memanggil thread ini.
Pseudocode menerima sms: 1.
new thread 2.
MessageConnection con - Connector.open“sms::2007” 3.
Message mg - con.receive 4.
ifmg=null BinaryMessage bm - mg
Date tgl - bm.getTimeStamp String hasil - goDekompres
String no - mg.getAddress Inbox.tambahRecordno, hasil, tgl, belum
Gambar 4.9. Pseudocode Implementasi Proses Latar Algoritma Terima SMS
Proses menerima sms dimulai dengan menciptakan thread baru kemudian mendeklarasikan nomor port SMS yang akan di-listen aplikasi dengan perintah
MessageConnection con - Connector.open“sms::2007”.
Setelah port 2007 terbuka, perintah
Message mg - con.receive
dipanggil jika isi dari variabel mg ada berarti ada pesan masuk. Ketika terdapat pesan masuk, untuk
memastikan pesan tersebut bertipe biner akan diubah ke bentuk biner dengan perintah
BinaryMessage bm - mg
dan diambil tanggal pengiriman pesan dengan perintah
Date tgl - bm.getTimeStamp
kemudian aplikasi akan memanggil thread dekompres SMS yang prosesnya seperti dijelaskan pada gambar 4.8. hasil dari
pemanggilan method tersebut berupa string, dan sebelum pesan masuk ini disimpan, diambil dulu alamat pengirim dengan perintah
no - mg.getAddress.
Untuk menyimpan pesan, digunkan perintah
Inbox.tambahRecordno, hasil, tgl, belum.
Parameter belum digunakan untuk mendeklarasikan bahwa pesan belum terbaca, hal ini berhubungan dengan icon pesan yang akan ditampilkan.
Pseudocode mengirim sms: 1.
new thread 2.
String alamat - isValidgetAlamat 3.
MessageConnection con - Connector.openalamat 4.
BinaryMessage bm - con.newMessageMessageConnection.BM 5.
bm.setAddressalamat 6.
byte[] hasil - goKompres 7.
bm.setPayLoadDatahasil 8.
con.sendbm 9.
Outbox.tambahRecordgetNO, getPesan, getTgl, belum
Gambar 4.10. Pseudocode Implementasi Proses Latar Algoritma Kirim SMS
Proses menerima sms dimulai dengan menciptakan thread baru kemudian mengambil no tujuan dan validasi dengan perintah
isValidgetAlamat.
Sebelum pesan dikirimkan melalui nomor port yang telah ditentukan, dideklarasikan dengan perintah
Connector.openalamat.
Pesan dikompres dengan memanggil
thread kompres yang prosesnya seperti pada gambar 4.7. dan hasilnya dikirimkan dengan perintah
setPayLoadDatahasil
. Pesan terkirim disimpan dengan perintah
Outbox.tambahRecordgetNO, getPesan, getTgl, belum. Pseudocode cek jumlah karakter:
1. new thread
2. String alamat - getAlamat
3. MessageConnection con - Connector.openalamat
4. Binary Message bm - con.newMessageMessageConnection.BM
5. bm.setAddressalamat
6. byte[] hasil - goKompres
7. bm.setPayLoadDatahasil
8. int nSMS - con.numberOfSegmentsbm
9. if nSMS 1
showAlert
Gambar 4.11. Pseudocode Implementasi Proses Latar Cek Jumlah Karakter
Proses ini dijalankan ketika pengguna mengetik pesan, proses ini dimulai dengan menciptakan thread baru yang bekerja di background. Proses-proses di dalam
thread sama seperti pada gambar 4.10 namun hasil dari pesan yang telah dikompres tidak dikirim melainkan dihitung banyaknya pesan yang akan dikirim dengan perintah
con.numberOfSegmentsbm,
hasilnya ditampilkan dengan alert.
Pseudocode hitung rasio hasil kompresi: 1.
new thread 2.
String alamat - getAlamat 3.
MessageConnection con - Connector.openalamat 4.
Binary Message bm - con.newMessageMessageConnection.BM 5.
bm.setAddressalamat 6.
byte[] hasilKom = goKompres 7.
String hasilTkom = getPesan; 8.
int rasio - hasilKom.length hasilTkom.length 100 9.
showInfoKompresirasio
Gambar 4.12. Pseudocode Implementasi Proses Latar Hitung Rasio Kompresi
Proses pada
thread ini sama seperti pada gambar 4.11 yang membedakan adalah ditambahkan rumus untuk mengitung rasio kompresi dengan perintah:
hasilKom.length hasilTkom.length 100
dan hasilnya ditampilkan dengan perintah
showInfoKompresirasio.
4.4. Implementasi Antarmuka