menyimpan object class serialisasi

5

Click here to load reader

description

menyimpan object class

Transcript of menyimpan object class serialisasi

Page 1: menyimpan object class serialisasi

Menyimpan Object Class Serialisasi

Oleh : [email protected]

www.softscients.web.id

Agak sulit membayangkan sebuah data yang mempunyai beberapa hasil keluaran berupa array 2Dimensi

disimpan dalam bentuk tabel seperti layak nya database pada umum nya. Misalkan saja suatu data

dihasilkan dari proses perhitungan didapatkan keluaran 2 variabel yaitu matrix variabel dengan nama

bobot hidden dan bobot output. Tentu matrix tersebut tidak fleksible jika dimasukan kedalam sebuah

tabel ataupun disimpan dalam bentuk format CSV. Hal tersebut dapat dipecahkan dengan teknik

serialisasi, bahasa modern saat ini telah banyak mendukung serialisasi seperti java, C#. Teknik nya

menggunakan konsep POJO yaitu berupa class berisi set get dengan implementasi serialisasi

Sehingga variabel bobot hidden dan bobot ouput dibungkus menggunakan class yang

mengimplementasikan serialisasi, kemudian class tersebut dapat dibungkus lagi menggunakan ArrayList.

Berikut contoh nya

import java.io.Serializable; /** * * @author www.softscients.web.id */ public class DataPerhitungan implements Serializable{ private double [][] bobotHidden; private double [][] bobotOutput; public DataPerhitungan(double [][] hidden, double [][]output)

Page 2: menyimpan object class serialisasi

{ this.bobotHidden = hidden; this.bobotOutput = output; } public double[][] getBobotHidden() { return bobotHidden; } public void setBobotHidden(double[][] bobotHidden) { this.setBobotHidden(bobotHidden); } public double[][] getBobotOutput() { return bobotOutput; } public void setBobotOutput(double[][] bobotOutput) { this.bobotOutput = bobotOutput; } }

Class diatas dapat disimpan layak sebuah file, seperti contoh berikut

import java.io.*; import java.util.ArrayList; /** * * @author www.softscients.web.id */ public class Contoh { /** * @param args the command line arguments */ public static void main(String[] args) { Contoh.simpan(); Contoh.baca(); }

Page 3: menyimpan object class serialisasi

public static void simpan() { System.out.println("==== DATA DISIMPAN ===="); ArrayList <DataPerhitungan> data = new ArrayList(); data.add(new DataPerhitungan( new double [][]{{1,2,3},{4,5,6}}, // data ke 1 new double [][]{{7,8,9},{10,11,12},{13,14,15}} )); data.add(new DataPerhitungan( new double [][]{{16,17,18},{19,20,21}}, // data ke 2 new double [][]{{22,23,24},{25,26,27},{28,29,30}} )); Contoh.tampilkan(data); //kita akan menyimpan kedalam file File file = new File("D:/data.serial"); FileOutputStream fos = null; ObjectOutputStream out = null; try { fos = new FileOutputStream(file.getAbsolutePath()); out = new ObjectOutputStream(fos); out.writeObject(data); out.close(); } catch(IOException ex) { ex.printStackTrace(); } } public static void baca() { System.out.println("==== DATA DIBUKA ===="); ArrayList <DataPerhitungan> model = null; File file = new File("D:/data.serial"); FileInputStream fis=null; ObjectInputStream in=null; try { fis=new FileInputStream(file.getAbsolutePath()); in =new ObjectInputStream(fis); try { model = (ArrayList<DataPerhitungan>) in.readObject(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } in.close(); }catch(IOException ex) { ex.printStackTrace(); } Contoh.tampilkan(model); } public static void tampilkan(ArrayList <DataPerhitungan> data) {

Page 4: menyimpan object class serialisasi

for(int k = 0;k<data.size();k++) { System.out.println("\tdata ke "+(k+1)); DataPerhitungan dataPerhitungan = data.get(k); //menampilkan hidden System.out.println("Bobot Hidden"); for(int i=0;i<dataPerhitungan.getBobotHidden().length;i++) { for(int j=0;j<dataPerhitungan.getBobotHidden()[0].length;j++) { System.out.print(dataPerhitungan.getBobotHidden()[i][j]+"\t"); } System.out.println(""); } //menampilkan output System.out.println("Bobot Output"); for(int i=0;i<dataPerhitungan.getBobotOutput().length;i++) { for(int j=0;j<dataPerhitungan.getBobotOutput()[0].length;j++) { System.out.print(dataPerhitungan.getBobotOutput()[i][j]+"\t"); } System.out.println(""); } } } }

Class dapat disimpan dalam bentuk file kemudian di load. Berikut hasil dari run diatas

==== DATA DISIMPAN ==== data ke 1 Bobot Hidden 1.0 2.0 3.0 4.0 5.0 6.0 Bobot Output 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 data ke 2 Bobot Hidden 16.0 17.0 18.0 19.0 20.0 21.0 Bobot Output 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0

Page 5: menyimpan object class serialisasi

==== DATA DIBUKA ==== data ke 1 Bobot Hidden 1.0 2.0 3.0 4.0 5.0 6.0 Bobot Output 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 data ke 2 Bobot Hidden 16.0 17.0 18.0 19.0 20.0 21.0 Bobot Output 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0

Dengan teknik tersebut maka hal yang sangat mudah untuk menyimpan sebuah variabel dalam 1 wadah

berupa class yang dapat ditulis kedalam file biner dan dapa dibaca kembali. Kasus lain misalkan sebuah

penelitian mengolah data informasi gen dari tiap pasien yang menghasilkan keluaran berupa kombinasi

tiap kromosom, tentu hal itu akan sangat sulit dimasukan kedalam sebuah database seperti relational

database karena masih menggunakan konsep table bukan konsep object. Penulis seringkali

menggunakan teknik ini untuk menyimpan sebuah class model hasil pelatihan sebuah algoritma jaringan

syarat tiruan yang terdiri dari beberapa gabungan matrix untuk 1 kali proses pelatihan.

Bisa dibayangkan bukan! Hal yang sulit bila model tersebut hanya disimpan dalam bentuk tabel seperti

tabel di mysql! Karena konsep diatas semua nya berbasis konsep object