10. ModelVertex Model
Kelas ini merupakan kelas yang berisi atribut-atribut yang
berhubungan dengan vertex obyek outlier yang akan
digunakan untuk perhitungan outlier itu sendiri. Atribut-
atribut tersebut seperti k- distance, local density, dan
INFLO.
11. Kontrol_INFLOTableModel Controller Kelas ini merupakan kelas
yang mengatur
hasil perhitungan INFLO ke dalam
suatu tabel model. 12. ModelHasil_INFLO
Model Kelas ini merupakan kelas
yang berisi
atribut yang
digunakan untuk penyimpanan hasil
deteksi outlier
menggunakan algoritma
INFLO.
4.3.3. Diagram Sequence
Diagram aktivitas sistem terlampir pada Lampiran 7. Diagram aktivitas ada 5, yaitu :
1. Memasukkan Data “Pilih File”
2. Memasukkan Data “Pilih Database”
3. Menyeleksi Atribut
4. Mendeteksi Outlier dengan Algoritma INFLO
5. Menyimpan Hasil
4.3.4. Diagram Kelas Desain
Diagram kelas desain terlampir pada Lampiran 8.
4.3.5. Rincian Algoritma per Method
4.3.5.1.Kelas KontrolKoneksiDatabase
Nama Method
Fungsi Method
Algoritma Method
koneksiMySQLString url, String username, String
password Melakukan
koneksi ke
database MySQL
1. Menginisialisasikan MysqlDataSource baru
bernama ds. 2.
Variabel ds memanggil method setConn dengan parameter url.
3. Variabel conn diisikan dengan ds yang
memanggil method getConnection dengan parameter username dan password.
4. Jika koneksi berhasil, menampilkan pesan
Koneksi ke MySQL Berhasil. 5.
Namun jika koneksi gagal, menampilkan pesan “Koneksi ke MySQL Gagal”.
6. Mengembalikan variabel conn.
isConnectedMySQLString url, String username, String
password Melakukan
pengecekkan koneksi
ke database
MySQL 1.
Melakukan pengecekan dengan memanggil method
koneksiMySQLurl, username,
password. 2.
Jika tidak menghasilkan null, maka akan mengembalikkan nilai true.
3. Jika menghasilkan null, maka akan
mengembalikkan nilai false. koneksiOracleString url,
String username, String password
Melakukan koneksi
ke database
Oracle 1.
Menginisialisasikan OracleDataSource baru bernama ds.
2. Variabel ds memanggil method setConn
dengan parameter url. 3.
Variabel conn diisikan dengan ds yang memanggil method getConnection dengan
parameter username dan password. 4.
Jika koneksi berhasil, menampilkan pesan Koneksi ke Oracle Berhasil.
5. Namun jika koneksi gagal, menampilkan
pesan “Koneksi ke Oracle Gagal”. 6.
Mengembalikan variabel conn. isConnectedOracleString
url, String username, String password
Melakukan pengecekkan
koneksi ke
database Oracle
1. Melakukan pengecekan dengan memanggil
method koneksiOracleurl,
username, password.
2. Jika tidak menghasilkan null, maka akan
mengembalikkan nilai true. 3.
Jika menghasilkan null, maka akan mengembalikkan nilai false.
4.3.5.2.Kelas KontrolKoneksiTable
Nama Method
Fungsi Method
Algoritma Method
displayTableMySQLConnection conn
Menampilkan tabel
yang ada
dalam koneksi
MySQL dari nama
database yang terpilih
1. Inisialisasi statement baru.
2. Inisialisasi query dengan = show
tables. 3.
Membuat result statement dengan cara statement mengeksekusi query
tersebut. 4.
Mengembalikan hasil
result statement.
displayTableOracleConnection conn
Menampilkan tabel
yang ada
dalam koneksi
Oracle 1.
Inisialisasi statement baru. 2.
Inisialisasi query dengan = select table_name from tabs.
3. Membuat result statement dengan
cara statement mengeksekusi query tersebut.
4. Mengembalikan
hasil result
statement. selectTableConnection
conn, String table
Mengambil isi dari tabel
yang terpilih 1.
Inisialisasi statement baru. 2.
Inisialisasi query dengan = select from + table.
3. Membuat result statement dengan
cara statement mengeksekusi query tersebut.
4. Mengembalikan
hasil result
statement.
4.3.5.3.Kelas KontrolSeleksiAtributTableModel
Nama Method
Fungsi Method
Algoritma Method
deleteAtribut Menghapus
atribut yang tidak
digunakan dalam deteksi
1. Inisialisasi
sa bertipe
ListModelSeleksiAtribut dengan
membuat ArrayListModelSeleksiAtribut
baru. 2.
Ketika variabel seleksi bertipe ModelSeleksiAtribut sesuai dengan
atribut yang terpilih, melakukan : a.
Jika seleksi bukan yang dipilih, sa.addseleksi.
b. Nilai atribut disamakan dengan sa.
3. fireTableDataChanged;
4.3.5.4.Kelas Kontrol_INFLOTableModel
Nama Method
Fungsi Method
Algoritma Method
setValueAtObject value,
int rowIndex, int columnIndex
Memasukkan nilai
obyek pada
baris dan
kolom tertentu
Ketika indeks kolom = 0 : mengambil nilai ranking dari hasil INFLO.
Ketika indeks kolom = 1 : mengambil nilai label dari hasil INFLO.
Ketika indeks kolom = 2 : mengambil nilai INFLO dari hasil INFLO.
4.3.5.5.Kelas Kontrol_INFLO
Nama Method
Fungsi Method
Algoritma Method
inputDataJTable tableProsesDeteksi
Memasukkan data
masukkan ke Table
File Input untuk
dilakukan preprocess
Membuat inisialisasi variabel ‘i’ bertipe integer. Selama i bernilai 0
– sejumlah baris dari tabel, langkahnya :
1. Inisialisasi variabel label bertipe
String. 2.
Membuat inisialisasi variabel ‘j’ bertipe integer. Selama j bernilai 0
– sejumlah
kolom dari
tabel, langkahnya :
a. Melakukan pengecekkan apakah
variabel j bernilai 0. b.
Jika iya, lakukan pengecekkan apakah data pada tabel dengan
indeks i, j berisi karakter kosong atau tidak. Jika kosong,
maka variabel label diisikan dengan “null”. Jika tidak kosong,
maka variabel label diisikan dengan isi dari tabel pada indeks
i, j tersebut. c.
Jika tidak, lakukan pengecekkan apakah data pada tabel dengan
indeks i, j berisi karakter kosong atau tidak. Jika kosong,
maka listData diisikan dengan nilai “0.0”. Jika tidak kosong,
lakukan pengecekkan kedua, apakah data pada tabel dengan
indeks i, j berisi karakter selain angka atau tidak. Jika berisi
karakter selain angka, listData diisikan dengan nilai “0.0”. Jika
data pada tabel dengan indeks i, j tidak kosong dan tidak berisi
karakter selain angka, data pada indeks tersebut dimasukkan ke
dalam listData dan mengganti karakter
koma ,
menjadi karakter titik ..
3. Memasukkan vertex baru berisi label
dan listData ke dalam graph.
Membuat inisialisasi variabel ‘i’ bertipe integer. Selama i bernilai 0
– sejumlah baris dari tabel, langkahnya :
1. Membuat inisialisasi variabel ‘j’
bertipe integer. Selama j bernilai i+1
– sejumlah baris dari tabel, langkahnya :
a. Melakukan pengecekkan apakah
nilai ‘i’ tidak sama dengan nilai ‘j’.
b. Jika nilai ‘i’ tidak sama dengan
nilai ‘j’, maka membuat edge dengan cara mencari jarak
Euclidean dan edge tersebut dimasukkan ke dalam graph.
cariJarakEcludianInteger indexAwal, Integer indexAkhir
Mencari jarak Euclidean
1. Membuat variabel baru bernama a
bertipe ListDouble
untuk membuat
ArrayListDouble baru.
2. Membuat variabel baru bernama b
bertipe ListDouble
untuk membuat
ArrayListDouble baru.
3. Variabel a diisikan dengan nilai dari
vertexList[indexAwal]. 4.
Variabel b diisikan dengan nilai dari vertexList[indexAkhir].
5. Membuat variabel baru bernama
jarak bertipe
Double dengan
inisialisasi awal 0.0. 6.
Membuat variabel baru bernama jarakEuclidean
bertipe Double
dengan inisialisasi awal 0.0. 7.
Membuat variabel ‘i’ bertipe Integer. Selama i bernilai 0
– jumlah dari variabel a, langkahnya :
a. Mengisikan
variabel jarak
dengan jarak ditambah dengan nilai a
– nilai b kuadrat . b.
Mengisikan jarak dari vertexList dengan
hasil perhitungan
variabel jarak tersebut. 8.
Mengisikan variabel jarakEuclidean dengan rata-rata seluruh variabel
jarak yang didapatkan. 9.
Mengembalikkan nilai
jarakEuclidean. cariLabelString label
Mencari indeks
dari label
vertexList pada indeks
tertentu 1.
Membuat variabel ‘i’ bertipe Integer. Selama i bernilai 0
– panjang dari vertexList, langkahnya :
a. Melakukan pengecekkan apakah
label sama dengan label dari vertexList[i].
b. Jika iya, mengembalikan nilai i.
2. Mengembalikan nilai -1.
cariJarakDouble jarak, Integer indeks
Mencari jarak yang
sudah dikunjungi
Membuat variabel ‘i’ bertipe Integer. Selama i bernilai 0
– panjang dari vertexList, langkahnya :
1. Melakukan pengecekkan apakah
edge[indeks][i] sama dengan jarak. 2.
Jika iya, setFlagKunjungantrue pada vertexList[i].
cariKDistanceInteger indeks,
Integer jangkauan Mencari
k- distance dari
masing- masing obyek
vertex 1.
Membuat variabel ‘i’ bertipe Integer. Selama i bernilai 0
– panjang dari vertexList, setFlagKunjungantrue
pada vertexList[i]. 2.
Membuat variabel
Double[jangkauan] baru dengan nama a bertipe Double[].
3. Membuat
variabel bernama
kDistance bertipe Double dengan inisialisasi awal 0.0.
4. Membuat
variabel bernama
maxValue bertipe Double dengan inisialisasi
awal adalah
nilai maksimal dari tipe Double.
5. Melakukan pengecekkan apakah
variabel indeks bernilai -1. 6.
Jika iya, menampilkan pesan Tidak ada indeks
7. Jika tidak, membuat variabel ‘i’
bertipe Integer. Selama i bernilai 0 –
panjang dari vertexList, lakukan : a.
Membuat variabel ‘j’ bertipe Integer. Selama j bernilai 0
– panjang dari vertexList, lakukan
: -
Melakukan pengecekkan
apakah edge[indeks][j] tidak bernilai
-1 dan
edge[indeks][j] tidak bernilai 0 dan vertexList[j] belum
dikunjungi. -
Jika iya,
melakukan pengecekkan apakah nilai
edge[indeks][j] lebih kecil daripada maxValue. Jika iya,
maxValue diisikan dengan edge[indeks][j]
b. Mengisikan variabel a[i] dengan
nilai maxValue. c.
Memanggil method
cariJarakmaxValue, indeks.
d. Mengisikan variabel maxValue
dengan nilai maksimal dari tipe Double.
8. Membuat variabel ‘i’ bertipe Integer.
Selama i bernilai 0 – panjang dari a,
lakukan : a.
Melakukan pengecekkan apakah kDistance lebih kecil daripada
a[i]. b.
Jika iya, kDistance diisikan dengan a[i].
9. Mengembalikan nilai kDistance.
cariNNDouble kDistance, Integer indeks
Mencari nearest
neighbors tetangga
terdekat dari masing-
masing obyek sebanyak
jumlah nilai ‘k’
1. Membuat variabel arrayList bertipe
ListString dan diisikan dengan ArrayListString baru.
2. Melakukan pengecekkan apakah
variabel indeks bernilai -1. 3.
Jika iya, menampilkan pesan Tidak ada indeks”.
4. Jika tidak, membuat variabel ‘i’
bertipe Integer. Selama i bernilai 0 –
panjang dari vertexList, lakukan :
a. Melakukan
pengecekkan apakah variabel edge[indeks][i]
tidak bernilai -1 dan tidak bernilai 0. Jika iya, melakukan
pengecekkan lagi
apakah variabel edge[indeks][i] lebih
kecil atau
sama dengan
kDistance. Jika
iya, menambahkan
label dari
vertexList[i] ke arrayList. 5.
Mengembalikan nilai dari variabel arrayList.
cariRNNInteger indeks Mencari
reverse nearest
neighbors dari masing-
masing obyek 1.
Membuat variabel arrayList bertipe ListString dan diisikan dengan
ArrayListString baru. 2.
Melakukan pengecekkan apakah variabel indeks bernilai -1.
3. Jika iya, menampilkan pesan Tidak
ada indeks”. 4.
Jika tidak, memanggil method setAnggotaNN dengan parameter
label dari vertexList[indeks].
5. Membuat variabel ‘i’ bertipe
Integer. Selama i bernilai 0 – jumlah
anggotaNN dari vertexList[indeks], lakukan :
a. Memanggil
method setAnggotaNN
dengan parameter anggotaNN ke-i dari
vertexList[indeks]. b.
Membuat variabel ‘j’ bertipe Integer. Selama j bernilai 0
– jumlah
anggotaNN dari
vertexList[indeks dari vertexList anggotaNN ke-i], lakukan :
- Melakukan
pengecekkan apakah
label dari
vertexList[indeks] sama
dengan vertexList[indeks
dari vertexList anggotaNN ke-i].
- Jika
iya, memasukkan
anggotaNN ke-i
dari vertexList[indeks]
ke arrayList.
6. Mengembalikan nilai dari variabel
arrayList. cariISInteger indeks
Mencari influence
space dari
masing- masing obyek
1. Membuat variabel arrayList bertipe
ListString dan diisikan dengan ArrayListString baru.
2. Melakukan pengecekkan apakah
variabel indeks bernilai -1. 3.
Jika iya, menampilkan pesan Tidak ada indeks”.
4. Jika tidak, membuat variabel ‘i’
bertipe Integer. Selama i bernilai 0 –
jumlah anggotaNN
dari vertexList[indeks],
lakukan :
memasukkan anggotaNN ke-i dari vertexList[indeks] ke arrayList.
5. Mengembalikan nilai dari variabel
arrayList. cariDensityDouble kDistance
Mencari density dari
masing- masing obyek
1. Membuat variabel density bertipe
Double yang didapatkan dengan cara memasukkan nilai 1 dibagi
dengan nilai dari variabel kDistance. 2.
Mengembalikan nilai density.
cariAverageDensityListDouble density
Mencari rata- rata
density dari density
tetangga terdekat dari
masing- masing obyek
1. Membuat variabel averageDensity
bertipe Double. 2.
Membuat variabel jmlhDensity bertipe Double dan diinisialisasi
awal dengan 0.0. 3.
Membuat variabel ‘i’ bertipe Integer. Selama i bernilai 0
– banyak dari density, lakukan : jmlhDensity
diisikan dengan
jmlhDensity dijumlahkan dengan density indeks
ke-i. 4.
Nilai averageDensity diisikan dengan jmlhDensity dibagi dengan
banyak dari density. 5.
Mengembalikan nilai variabel averageDensity.
cariINFLODouble averageDensity, Double density
Mencari hasil INFLO dari
masing- masing obyek
1. Membuat variabel INFLO bertipe
Double yang didapatkan dengan cara memasukkan nilai variabel
averageDensity dibagi dengan nilai variabel density.
2. Mengembalikan nilai variabel
INFLO.
4.4. PERANCANGAN STRUKTUR DATA