menyimpan object class serialisasi
Click here to load reader
-
Upload
wwwsoftscientswebid -
Category
Education
-
view
51 -
download
7
description
Transcript of 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)
{ 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(); }
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) {
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
==== 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