Class Diagram Analisis Sistem Package Diagram Analisis Sistem

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