80
3.4 Class Diagram Analisis Sistem
Pada sistem terdapat beberapa kelas yang saling berinteraksi. Kelas-kelas tersebut digambarkan dalam class diagram berikut:
Gambar 3.26 Class Diagram Analisis Sistem
Universitas Sumatera Utara
81 Class Diagram Analisis Sistem di atas dapat dijelaskan pada tabel berikut ini:
Tabel 3.24 Penjelasan Class Diagram Analisis Sistem Nama Kelas
Daftar Atribut Deskripsi
Bidder
1. nama
2. noKTP
3. noPonsel
4. PIN
5. bid
Menyediakan detail data bidder
Pemenang
1. kodeBarang
2. hargaTerjual
Kelas ini menyediakan detail data pemenang.
Kelas ini merupakan extends dari kelas bidder, sehingga mewarisi seluruh atribut
dan method dari kelas bidder .
Barang
1. kodeBarang
2. namaBarang
3. hargaAwal
4. tglLelang
Menyediakan detal data barang
User
1. username
2. password
3. level
Kelas ini menyediakan detail data user. Kelas ini merupakan extends dari kelas
Karyawan, sehingga mewarisi seluruh atribut dan method dari kelas Karyawan.
Penawaran
1. idPenawaran
2. namaBarang
3. bid
4. tglPenawaran
5. waktuPenawaran
Menyediakan detail data aktivitas penawaran
Server Lelang
1. statusServer
2. pesanPDUKirim
3. pesanPDUTerima
4. lenNoTujuan
5. noPengirim
6. lenNoPengirim
7. pesanTerima
8. noSMSC
Menyediakan detail server lelang
SMS --
Kelas ini menyediakan detail data SMS. SMS merupakan kelas interface
Inbox
1. idInbox
2. pesan
3. noPengirim
4. statusInbox
Kelas ini menyediakan detail data inbox. Kelas ini merupakan implements dari
kelas SMS, sehingga harus mengimplementasikan method yang ada
pada kelas SMS
Universitas Sumatera Utara
82
Tabel 3.24 Penjelasan Class Diagram Analisis Sistem Lanjutan Nama Kelas
Daftar Atribut Deskripsi
Outbox
1. idOutbox
2. pesan
3. noTujuan
4. statusOutbox
Kelas ini menyediakan detail data outbox.
Kelas ini merupakan implements dari kelas SMS, sehingga harus
mengimplementasikan method yang ada pada kelas SMS
Database
1. username
2. password
Menyediakan detail data database
3.5 Package Diagram Analisis Sistem
Kelas-kelas analisis dapat dikelompokkan dalam beberapa package. Hal ini dapat digambarkan dalam suatu package diagram berikut ini:
Gambar 3.27 Package Diagram Analisis Sistem 3.6 Perancangan Method Utama
Perancangan method utama adalah perancangan method yang digunakan dalam pengiriman dan penerimaan pesan dalam bentuk PDU.
3.6.1 Method Konversi Bilangan Desimal ke Hexa
Tujuan dari method konversi bilangan desimal ke bilangan hexa adalah untuk memperoleh output nilai hexa dari input nilai desimal. Misalkan input dalam method
ini adalah 171, maka output yang dihasilkan adalah AB. Tipe data masukan adalah
Universitas Sumatera Utara
83 integer, dan tipe data keluaran adalah String. Algoritma method konversi bilangan
desimal ke bilangan hexa dapat dilihat pada flowchart berikut:
Gambar 3.28 Flowchart Konversi Bilangan Desimal ke Bilangan Hexa
Method konversi bilangan desimal ke bilangan hexa dituliskan dalam bahasa pemrograman Java sebagai berikut:
public static String decToHexaint dec { String hex = ;
String karakter = 0123456789ABCDEF; if dec == 0 return 0;
while dec 0 {
int digit = dec 16; hex = karakter.charAtdigit + hex;
dec = dec 16; }
ifhex.length == 1 hex = 0 + hex; return hex;
}
Universitas Sumatera Utara
84
3.6.2 Method untuk Mengkoreksi Nomor
Tujuan dari method ini adalah untuk memperoleh output karakter hexa yang benar dari input karakter hexa yang terbalik dalam bentuk PDU. Misalkan input dalam method
ini adalah “267868298309F5”, maka output yang dihasilkan adalah
“6287869238905F”. Tipe data masukan adalah String, dan tipe data keluaran juga String. Algoritma method untuk mengkoreksi nomor ponsel dapat dilihat pada
flowchart berikut:
Gambar 3.29 Flowchart Mengkoreksi Nomor
Method untuk mengkoreksi nomor ponsel dituliskan dalam bahasa pemrograman Java sebagai berikut:
public static String koreksiNoString no { String s = ;
int len = no.length; int i = 0;
whilei+1 len{ s += no.charAti + 1;
s += no.charAti; i += 2;
} return s;
}
Universitas Sumatera Utara
85
3.6.3 Method Konversi Bilangan Hexa ke Karakter ASCII.
Tujuan dari method ini adalah untuk memperoleh output string ASCII dari input deretan bilangan hexa. Misalkan
input dalam
method ini adalah
“D4B23CDD0E8396E1791A0D” , maka output yang dihasilkan adalah “Terima Kasih”. Tipe data masukan adalah String dan tipe data keluaran adalah String.
Algoritma method konversi deretan bilangan hexa ke karakter ASCII dapat dilihat pada flowchart berikut:
Gambar 3.30 Flowchart Konversi Deretan Hexa Ke Karakter ASCII
Universitas Sumatera Utara
86 Method konversi deretan bilangan hexa ke karakter ASCII dituliskan dalam bahasa
pemrograman Java sebagai berikut:
private static String hexaToStringString val{ int len = val.length2;
String bitOctet[] = new String[len]; String ambil = ;
String sisa = ; String hexa = ;
String h = ; forint i=0; ilen; i++{
hexa = val.substringi2, 2+i2; bitOctet[i] = hexaToOctetStringhexa;
} int i = 0; int ctr = 0;
whilei len{ ambil = bitOctet[i].substringctr+1;
ifctr == 0 sisa = ; else sisa = bitOctet[i-1].substring0,ctr;
h += bitStringToASCIIambil + sisa; ifambil.length == 0{
ctr = 0; sisa = ;
ambil = bitOctet[i].substringctr+1; h += bitStringToASCIIambil + sisa;
} i++;
ctr++; }
return h; }
3.6.4 Method Konversi Karakter ASCII ke Bilangan Hexa.
Tujuan dari method ini adalah untuk memperoleh output deretan bilangan hexa dari input string ASCII. Misalkan input dalam method ini adalah “Terima Kasih” , maka
output yang dihasilkan adalah “D4B23CDD0E8396E1791A0D”. Tipe data masukan adalah String dan dan tipe data keluaran juga String. Algoritma method konversi
karakter ASCII ke deretan bilangan hexa dapat dilihat pada flowchart berikut:
Universitas Sumatera Utara
87
Gambar 3.31 Flowchart Konversi Karakter ASCII Ke Deretan Hexa
Universitas Sumatera Utara
88 Method untuk konversi karakter ASCII ke deretan bilangan hexa dituliskan dalam
bahasa pemrograman Java sebagai berikut:
private static String stringToHexaString pesan{ int len = pesan.length;
String ambil = ; String sisa = ;
int ctr = 0; String bitSeptet[] = new String[len];
String hexa = ; forint i = 0; i len; i++{
bitSeptet[i] = ASCIIToSeptetStringpesan.charAti; }
int i = 0; whilei len{
int lenSeptet = 7; if ambil.length == 1{
ctr = 0; i++;
} ambil = bitSeptet[i].substring0,lenSeptet-ctr;
ifi == pesan.length-1{ sisa = ;
forint k=0; k 8 - ambil.length; k++ sisa += 0; }else sisa = bitSeptet[i+1].substringlenSeptet-ctr-1;
hexa += bitStringToHexasisa + ambil; i++;
ctr++; }
return hexa; }
3.6.5 Method Pengiriman Pesan PDU
Tujuan dari method ini adalah untuk memperoleh bentuk PDU dari pesan yang akan dikirim. Tipe data masukan adalah String, dan tipe data keluaran juga String.
Misalkan pesan yang akan dikirim “Terima Kasih” ke no. ponsel “6288261535685”,
maka dalam bentuk PDU:
0051000E91268862515386F50000AB1D060504C3500000D4B23CDD0E8396E1791 A0D
00 → Service Center Address
51 → PDU Type jika disertai User Data Header
00 → Message Reference
0E91268862515386F5 → Destination Address
0E → 14 desimal → Len
Universitas Sumatera Utara
89 91
→ Type Of Number 268862515386F5
→ 6288261535685 → Destination Number 00
→ Protocol Identifier 00
→ Data Coding Scheme AB
→ Validity Period 1D
→ User Data Length UDL 060504C3500000
→ User Data Header Dimana untuk User Data Header:
06 : panjang dari “0504C3500000 ″ User Data Header Length = 6 octet.
05 : ketentuan untuk port yang dapat digunakan. 04 : panjang dari “C3500000
″ Application port addressing scheme = 4 octet. C350: destination port. Jika C350 dikonversi ke desimal didapatkan nilai port 50000.
0000: source port. Tidak diperlukan.
D4B23CDD0E8396E1791A0D → User Data
Universitas Sumatera Utara
90 Algoritma method pengiriman pesan PDU dapat dilihat pada flowchart berikut:
Gambar 3.32 Flowchart Pengiriman Pesan PDU
Method pengiriman pesan PDU dituliskan dalam bahasa pemrograman Java sebagai berikut:
public static String PDUKirimString noPonsel, String pesan { String strPDU = ;
String PDUPesan = ; String hexaLenNo = ;
String hexaLenPesan = ; int lenNoTujuan = 0;
int lenPesanKirim = 0; final String port5000 = 060504C3500000;
try{
lenNoTujuan = noPonsel.length; hexaLenNo = decToHexalenNoTujuan;
Universitas Sumatera Utara
91
iflenNoTujuan 2 == 1{ noPonsel = koreksiNonoPonsel + F;
}else{ noPonsel = koreksiNonoPonsel;
} lenPesanKirim = pesan.length + port5000.length2;
hexaLenPesan = decToHexalenPesanKirim; PDUPesan = ASCIIToHexapesan;
strPDU += 5100 + hexaLenNo + 91 + noPonsel + 0000AB +
hexaLenPesan + port5000 + PDUPesan; }catch Exception ex{
System.err.printlnex; }
return strPDU;
}
3.6.6 Method Penerimaan Pesan PDU
Tujuan dari method ini adalah untuk memperoleh pesan teks asli dari bentuk PDU yang diterima. Tipe data masukan adalah String, dan tipe data keluaran adalah void,
nilai keluaran ditampung pada 2 variabel global bertipe String. Misalkan pesan yang diterima adalah “Terima Kasih” dari no. ponsel “626169933890”, maka dalam bentuk
PDU: 06912612000060040C912616963983090000011050711090820BD4B23CDD0E8396
E1791A0D 06912612000060
→ Service Center Address 06
→ Len 91
→ Type of Number 2612000060
→ 6221000006→ Service Center of Number 04
→ PDU Type 0C91261696398309
→ Originator Address 00
→ Protocol Identifier 00
→ Data Coding Scheme 01105071109082
→ Service Center Time Stamp 0B
→ User Data Length D4B23CDD0E8396E1791A0D
→ User Data
Universitas Sumatera Utara
92 Algoritma method penerimaan pesan PDU dapat dilihat pada flowchart berikut:
Gambar 3.33 Flowchart Penerimaan Pesan PDU
Universitas Sumatera Utara
93 Method penerimaan pesan PDU dituliskan dalam bahasa pemrograman Java sebagai
berikut:
String noPengirim = null; String pesanTerima = null; public static void PDUTerimaString pesanPDU{
int lenSMSC = 0; int lenNoPengirim = 0; int lenPesan = 0; int i = 0; try {
String strLenSMSC = pesanPDU.substringi, 2; lenSMSC = Integer.parseIntstrLenSMSC, 16;
i += 4; i += lenSMSC 2 - 2;
i += 2; String strLenNoPengirim = pesanPDU.substringi, i + 2;
lenNoPengirim = Integer.parseIntstrLenNoPengirim, 16; i += 4;
int nilaiNotlp = i + lenNoPengirim + lenNoPengirim 2; String PDUNoPonsel = pesanPDU.substringi, nilaiNotlp;
noPengirim = koreksiNoPDUNoPonsel; i = nilaiNotlp;
i += 18; String strLenPesan = pesanPDU.substringi, i + 2;
lenPesan = Integer.parseIntstrLenPesan, 16; i += 2;
String pesanPDUTerima = pesanPDU.substringi, pesanPDU.length; pesanTerima = hexaToASCIIpesanPDUTerima, lenPesan;
} catch Exception e {}
}
Universitas Sumatera Utara
94
3.7 Class Diagram Desain Sistem