Sistem Pakar yang masih Bodoh :D dengan java

Assalammu’alaikum …
udah lama gag posting..
kali ini iseng posting soal Ai yang cukup aneh dan hasilnya pun saya sendiri masih bingung heuheuheu…

Soalnya sederhana, mengenai sistem panasehat keungan kemana seseorang berinvestasi.
kasus : Seorang user ingin berkonsultasi, Apakah tepat jika dia berinvestasi pada stock saham IBM ??? (ceritanya.. 😀 )

nah rule yang ada atau knowledge yang di sediakan simple ajo.. yaitu :
R1 : jika A dan C, Maka E;
R2 : jika D dan C, Maka F;
R3 : jika B dan E, Maka F;
R5 : jika F , Maka G;

dengan data :
A : mempunyai minimal $10000;
B : Lebih Muda dari 30 tahun;
C : Pendidikan Stingkat Universitas;
D : Pendapatan tahunan minimal $ 40000;
E : Investasi Sekuritas;
F : Investasi Grawth Stock
G : Investasi Saham IBM;

simple kan :))

nah fakta sementara yg didapat pada studi kasus bahwa si user yang nekat beli saham IBM ini memiliki kriteria :
1. Mempunyai uang $1000
2. Umurnya masih dibawah 30 tahun..

nah gmn tuh c komputer bisa baca dan menentukan si user ini pantas mendapatkan yang mana? ataukah cocok jadi pengangguran sajah ??? :))
Bahasa yang saya pake kebetulan adalah java dengan IDE netBeans :D/, database MySQL, dan kebetulan pake JPA eclipse link karena lagi males bikin DAO dan lain2nya untuk berhubungan dengan service database :))
nah lalu jangan lupa buat databasenya dulu…

nama database : artint
table :

1. data{no [int auto_increment primary key], Abjad [varchar(2)], Mean [varchar(100)], val [int]}

2. knowledge{no [int auto_increment primary key], rule [varchar(10)], result [varchar(10)]}

lalu… pertama kita bikin projectnya .. diharapkan sudah mengerti bikinnya 😀
nah karena memakai MVC, tentunya kita bagi 3 bagian kelasnya yaitu : Model, View, dan Controller… apakah itu? karena lagi males bahas, dilewat aja dulu kali ya… 😀

kedua.. import semua library yg dibutuhkan cuman : jdbc dan JPAeclipse Link 2.0 sajah 😀 ..

trs buat class entitas dan persistence nya … dengan klik kanan projectnya ->pilih “other”->pilih “Persistence” -> Entity From Class Database

lain kali ngbahasa JPA eclipse mungkin ya :D/

ketiga kita buat class View-nya dulu gan… seperti dibawah ini : (memakai kelas yg turunan dari JPanel) ;D

nama kelas : PanelExpert.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PanelExpert.java
 *
 * Created on Nov 14, 2010, 1:42:41 PM
 */

package expertsystem.hendri.karisma.view;

import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import expertsystem.hendri.karisma.controller.ControlExpert;
import expertsystem.hendri.karisma.listener.ListenerExpert;
import expertsystem.hendri.karisma.model.ModelExpert;

/**
 *
 * @author hendri
 */
public class PanelExpert extends javax.swing.JPanel implements ListenerExpert {

    private ModelExpert model;
    private ControlExpert controller;

    /** Creates new form PanelExpert */
    public PanelExpert() {
        initComponents();

        model = new ModelExpert();
        controller = new ControlExpert();

        model.setListener(this);
        controller.setModel(model);

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    //
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        textNama = new javax.swing.JTextField();
        textUang = new javax.swing.JTextField();
        textUmur = new javax.swing.JTextField();
        comboPendidikan = new javax.swing.JComboBox();
        textPendapatan = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        jLabel1.setText("Masukan Data dibawah Berikut");

        jLabel2.setText("Nama :");

        jLabel3.setText("Jumlah Uang Yang Dimiliki :");

        jLabel4.setText("Umur :");

        jLabel5.setText("Tingkat Pendidikan Terakhir :");

        jLabel6.setText("Pendapatan Tahunan :");

        textUmur.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                textUmurActionPerformed(evt);
            }
        });

        comboPendidikan.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TK", "SD", "SMP", "SMA", "Perguruan Tinggi" }));

        jLabel7.setText("$");

        jLabel8.setText("Tahun");

        jLabel9.setText("$");

        jButton1.setText("Tentukan Investasi yang cocok");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 437, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(12, 12, 12)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jLabel7)
                                        .addGap(4, 4, 4)
                                        .addComponent(textUang, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(textUmur, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel8))
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                            .addComponent(jLabel9)
                                            .addGap(3, 3, 3)
                                            .addComponent(textPendapatan, javax.swing.GroupLayout.PREFERRED_SIZE, 162, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addComponent(comboPendidikan, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE))))
                            .addComponent(jLabel1)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(114, 114, 114)
                        .addComponent(jButton1)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 302, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(textNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(textUang, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel7))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(textUmur, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel8))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(comboPendidikan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel6)
                    .addComponent(jLabel9)
                    .addComponent(textPendapatan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(38, 38, 38)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
    }//

    public JComboBox getComboPendidikan() {
        return comboPendidikan;
    }

    public void setComboPendidikan(JComboBox comboPendidikan) {
        this.comboPendidikan = comboPendidikan;
    }

    public JTextField getTextNama() {
        return textNama;
    }

    public void setTextNama(JTextField textNama) {
        this.textNama = textNama;
    }

    public JTextField getTextPendapatan() {
        return textPendapatan;
    }

    public void setTextPendapatan(JTextField textPendapatan) {
        this.textPendapatan = textPendapatan;
    }

    public JTextField getTextUang() {
        return textUang;
    }

    public void setTextUang(JTextField textUang) {
        this.textUang = textUang;
    }

    public JTextField getTextUmur() {
        return textUmur;
    }

    public void setTextUmur(JTextField textUmur) {
        this.textUmur = textUmur;
    }

    private void textUmurActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
}

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        controller.activeExpert(this);
}

    // Variables declaration - do not modify
    private javax.swing.JComboBox comboPendidikan;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JTextField textNama;
    private javax.swing.JTextField textPendapatan;
    private javax.swing.JTextField textUang;
    private javax.swing.JTextField textUmur;
    // End of variables declaration

    public void onCheck(ModelExpert model) {

        JOptionPane.showMessageDialog(this, "Hasilnya adalah "+model.getResult());

    }

}

ya klo bingung karena kepanjangan .. ya bikin aja panel ampe kurang lebih kaya gini :

nah kalo udah jadi, (plus udah jadi bikin methode accessor tiap2 inputan/getter dan setter)

nah sekaran bikin deh kelas controll misalnya namanya : ControlExpert.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package expertsystem.hendri.karisma.controller;

import javax.swing.JOptionPane;
import expertsystem.hendri.karisma.model.ModelExpert;
import expertsystem.hendri.karisma.view.PanelExpert;

/**
 *
 * @author hendri
 */
public class ControlExpert {

    private ModelExpert model;

    public void setModel(ModelExpert model) {
        this.model = model;
    }

    public void activeExpert(PanelExpert form) {

        String nama = form.getTextNama().getText();
        String uang = form.getTextUang().getText();
        String umur = form.getTextUmur().getText();
        String pendidikan = form.getComboPendidikan().getSelectedItem().toString();
        String pendapatan = form.getTextPendapatan().getText();
        Integer uangInt;
        Integer umurInt;
        Integer pendapatanInt;

        if (uang.equals("")) {
            uangInt = new Integer(0);
        } else {
            uangInt = new Integer(uang);
        }

        if (umur.equals("")) {
            umurInt = new Integer(0);
        } else {
            umurInt = new Integer(umur);
        }
        if (pendapatan.equals("")) {
            pendapatanInt = new Integer(0);
        } else {
            pendapatanInt = new Integer(pendapatan);
        }

        if (nama.equals("")) {
            JOptionPane.showMessageDialog(form, "Nama tidak valid!");

        } else {
            model.setNama(nama);
            model.setJumlahUang(uangInt);
            model.setUmur(umurInt);
            model.setTingkatPendidikan(pendidikan);
            model.setPendapatan(pendapatanInt);
            model.onCheck();

        }

    }
}

nah terus yang ke 4, bikin interface listener buat nyambungin si ketiga kelas td biar poolll.. kecuali hasilnya mau ditangani di kelas model aja.. 😀
nama file : ListenerExpert.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package expertsystem.hendri.karisma.listener;

import expertsystem.hendri.karisma.model.ModelExpert;

/**
 *
 * @author hendri
 */
public interface ListenerExpert {

    public void onCheck(ModelExpert model);

}

owh iya ketinggalan saya buat class untuk service koneksi database yang sifatnya statis.. jd harusnya buat ini dulu :

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package expertsystem.hendri.karisma.database.service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author hendri
 */
public class Database {

    private static EntityManagerFactory entityManagerFactory;
    private static EntityManager entityManager;

    public static EntityManagerFactory getConnection(){

        if(entityManagerFactory == null){
            entityManagerFactory = Persistence.createEntityManagerFactory("ExpertSystemPU");

        }
        return entityManagerFactory;
    }
    public static EntityManager getEntityManager(){

        if(entityManager == null){
            entityManager = getConnection().createEntityManager();
        }

        return entityManager;

    }

}

lanjut kita buat kelas modelnya dengan nama file ModelExpert.java:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package expertsystem.hendri.karisma.model;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import expertsystem.hendri.karisma.database.entitas.Data;
import expertsystem.hendri.karisma.database.entitas.Knowledge;
import expertsystem.hendri.karisma.database.service.database;
import expertsystem.hendri.karisma.listener.ListenerExpert;

/**
 *
 * @author hendri
 */
public class ModelExpert {

    private String nama;
    private int jumlahUang;
    private int umur;
    private String tingkatPendidikan;
    private int pendapatan;
    private String result;

    public ListenerExpert getListener() {
        return listener;
    }

    public void setListener(ListenerExpert listener) {
        this.listener = listener;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }
    private ListenerExpert listener;

    public int getJumlahUang() {
        return jumlahUang;
    }

    public void setJumlahUang(int jumlahUang) {
        this.jumlahUang = jumlahUang;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public int getPendapatan() {
        return pendapatan;
    }

    public void setPendapatan(int pendapatan) {
        this.pendapatan = pendapatan;
    }

    public String getTingkatPendidikan() {
        return tingkatPendidikan;
    }

    public void setTingkatPendidikan(String tingkatPendidikan) {
        this.tingkatPendidikan = tingkatPendidikan;
    }

    public int getUmur() {
        return umur;
    }

    public void setUmur(int umur) {
        this.umur = umur;
    }

    protected void fireOnCheck() {
        if (listener != null) {
            listener.onCheck(this);
        }
    }

    public void onCheck() {

        String ans = "";

        EntityManager manager = database.getEntityManager();
        Query query = manager.createNamedQuery("Data.findAll");
        List data = query.getResultList();

        Query queryKnowledge = manager.createNamedQuery("Knowledge.findAll");
        List know = queryKnowledge.getResultList();

        if (jumlahUang > 0) {
            if (jumlahUang >= data.get(0).getVal()) {
                ans = ans + data.get(0).getAbjad();
            }
        }
        if (umur > 0) {
            if (umur < data.get(1).getVal()) {                 ans = ans + data.get(1).getAbjad();             }         }         if ((!tingkatPendidikan.equals("")) && tingkatPendidikan.equals(data.get(2).getMean())) {             ans = ans + data.get(2).getAbjad();         }         if (pendapatan > 0) {
            if (pendapatan >= data.get(3).getVal()) {
                ans = ans + data.get(3).getAbjad();
            }
        }

        int r1 = 0;

        for (int i = 0; i < know.size(); i++) {             r1 = ans.indexOf(know.get(i).getRule().charAt(0));             if (know.get(i).getRule().length() >= 2) {
                int r2 = ans.indexOf(know.get(i).getRule().charAt(1));
                if ((r1 > -1) && (r2 > -1)) {

                    r2 = ans.indexOf(know.get(i).getResult());

                    if (r2 == -1) {
                        ans = ans + know.get(i).getResult();
                        i = -1;

                    }
                }
            } else {
                if (r1 > -1) {
                    r1 = ans.indexOf(know.get(i).getResult());

                    if (r1                         ans = ans + know.get(i).getResult();
                        i = -1;

                    }
                }
            }

        }

        for (int i = 0; i < data.size(); i++) {
            r1 = ans.indexOf(data.get(i).getAbjad());
            if (r1 != -1) {
                setResult(data.get(i).getMean() + " dengan urutan " + ans);
            }
        }
        fireOnCheck();

    }
}

nah tinggal buat satu class JDialog, atau JFrame, kalo saya pake JDialog..

misal : FormExpert.java

trs tinggal drag semua komponen yang ada di class PanelExpert.java (class View nya) ke JDialog yg kita buat misal yang saya FormExpert.java , nanti codenya jd seperti ini :

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FormExpert.java
 *
 * Created on Nov 14, 2010, 1:57:56 PM
 */

package expertsystem.hendri.karisma.view;

/**
 *
 * @author hendri
 */
public class FormExpert extends javax.swing.JDialog {

    /** Creates new form FormExpert */
    public FormExpert(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    //
    private void initComponents() {

        panelExpert1 = new expertsystem.hendri.karisma.view.PanelExpert();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(panelExpert1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(panelExpert1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }//

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                FormExpert dialog = new FormExpert(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private systemexpert.hendri.karisma.view.PanelExpert panelExpert1;
    // End of variables declaration

}

nah kalo gini kan mudah.. Hehehhe…

jangan lupa menghubungkan setiap kelasnya agar bisa saling berkomunikasi .. seperti pada source code yang sudah saya masukan hehhe..

kira2 hasilnya nanti jadi kaya gini :

dan klo dipencet tombolnya “Tentukan Investasi yang Cocok” maka :

sekian.. mohon maaf belum bisa menjelaskan dengan detail dan dengan baik.. karena pertama saya masih belajar menulis artikel yang baik dan benar juga indah, dan kedua nulis artikelnya buru2…

lain kali saya perbaiki dan menambah beberapa bagian yang dirasa perlu dan kurang.. :D/

semoga tulisan yang ribet , gag jelas ini dapat membantu dan bermanfaat 😀

ini link untuk mengunduh source aplikasi saya di atas : Aplikasi Sistem Pakar yang masih Bodoh

Advertisements

23 thoughts on “Sistem Pakar yang masih Bodoh :D dengan java

  1. sakuranodaimon November 15, 2010 / 12:23 pm

    lieur ndri..XD

  2. situkangsayur November 15, 2010 / 2:04 pm

    heuheuheu… urg ge lieur nulisna kumaha…
    nanti kapan2 diperjelas gan… td mah ngbutt nulisnya hehehe…

  3. Chuziby November 15, 2010 / 10:10 pm

    Mantap ndri.. ikut copas..:D

  4. situkangsayur November 17, 2010 / 6:41 am

    sebernya mah mun copas ngke moal jalan jdna heuheheu… soalna kudu dikonfigurasi framework jpa na… :D/
    mu ditulis semua cuman bingung bagaimana mengungkapkannya heuheheu…

  5. situkangsayur November 18, 2010 / 3:14 am

    Wa’alaikumsalam .wr.wb …

    wah iya makasih banyak,
    sama2 mas.. :D/

  6. Mudzakkir November 19, 2010 / 6:12 am

    Blognya kak Hendri bagus isinya, saya tambah di daftar teman blog saya. Banyak ilmu yang aku belum paham bisa saya temukan di sini.

  7. zaiidleader November 19, 2010 / 1:52 pm

    Wah ajib euy …
    Ayeuna mah geus rada bisa urang ge tentang MVC …
    heheheee…

    tapi aya keuneh nu teu ngari .. yaeta funsi this
    contoh na dina source code hendri anu

    controller.activeExpert(this);

    nah script nu di ats maksud na naon ?
    urang can pati paham ??
    heheheee…

    nuhun kawand !!!

  8. situkangsayur November 20, 2010 / 12:22 pm

    wah dasyat gan… sipp2…

    cotroller.activeExpert(this);

    coba liat di kelas ControlExpert
    kan ada method ” public void activeExpert(PanelExpert form)”
    nah ada parameter yg bertipe “PanelExpert” yg harus dilewatin..

    nah kan peanggilan controller.activeExpert() ada di kelas view atau di PanelExpert.. jd harusnya cotroller.activeExpert(PanelExpert); di ganti biar lebih efisien jadi “cotroller.activeExpert(this)”… artinya keyword “this” == kelas tempat methode atau baris code itu berada/kelas itu sendiri. :D/

  9. situkangsayur November 20, 2010 / 12:25 pm

    mas toha : wah masi banyak informasi yg di blognya mas toha… keren2 :Dd dasyat…

  10. jokoaquarium November 21, 2010 / 6:53 am

    Sama-sama.
    makasih juga sharingnya di milis..
    Mau source code TA saya?
    Tar aku kirim lewat email kalau mau.
    Spring Web MVC, tapi masih sederhana banget.

  11. situkangsayur November 21, 2010 / 9:55 am

    wahh mau banget mass… hehhe.. memang saya lg nyari referensi contoh implementasi springMVC…
    gpp mass… biasanya point of view “sederhana” nya beda.. ntar menurut saya besar lg :D…
    wah makasih banget mas.. e-mailnya : situkangsayur@gmail.com

  12. jokoaquarium November 21, 2010 / 9:58 am

    Ok, dech..
    tar aku kirimi, tapi ini koneksi lagi lemot.
    Tunggu aja minggu ini.
    Hmm.. aku mau belajar Spring Roo nih, pernah cobain Spring Roo??
    Ada beberapa tutorial utk get started tapi belum aku coba :
    http://blog.springsource.com/2009/05/01/roo-part-1/
    http://blog.springsource.com/2009/05/27/roo-part-2/
    http://blog.springsource.com/2009/06/18/roo-part-3/
    ya mungkin kalau bulan ini ga bisa cobain mungkin bulan depan atau tahun depan aku mungkin mau cobain Roo..
    🙂

  13. jokoaquarium November 22, 2010 / 7:18 am

    Assalamu’alaikum..
    Sudah terkirim? Ukurannya sekitar 8Mb, dan tadi sempat gagal-gagal terus upload emailnya. Coba di buka, moga saja tidak corrupt file yang di attach.
    Jika rusak bilang yak..
    🙂

  14. situkangsayur December 11, 2010 / 10:34 am

    wa’alaikumsalam..
    maaf baru bales mas, biasa masalah internet di rumah hehhe..

    udah nyampe mas projectnya… makasih banget.. pas bgt pas dapet tugas web java… jd ada referensi penggunaan spring…

    oh iya mas mu minta tolong lagi nih hehhe..
    kemarin kan saya sempet minta project aplikasi mas toha yg bikin web capture pake web-cam itu.. 😀
    boleh saya minta lagi ke e-mail? hehhe.. di saya hilang datanya, kebetulan saya pengen coba bikin image recognition tapi bingung ambil input data image dari camera dari javanya .. hehhee…
    sebelumnya terimakasih banyak mass… maaf ngerepotin lagi.. :D/

  15. mudzakkir December 12, 2010 / 6:25 am

    Ok, nanti saya kirim tapi itu bukan punya saya, saya cuma google, lalu nemukan source nya di blog nya orang. Dulu pernah buka-buka JMF (aplikasi itu memakai framework JMF) tapi ga sampai advanced ada kasus sama teknologi lain akhirnya aku tinggal baru buka dikit, Nanti aku kirim projectnya saja ya, utk librarynya bisa download sendiri di situsnya JMF.
    ?:-)

  16. mudzakkir December 12, 2010 / 10:42 am

    Dah sampai lum? kiriman emailku?

  17. situkangsayur December 13, 2010 / 3:30 am

    wah sipp2 mas.. saya kemarin googling tapi masih gagal kemarin… terus inget project mas toha kemarin jadi saya penasaran pengen tahu alat2nya apa aja hehehe…

    alhamdulillah sudah sampai mas..

    terima kasih banyak bgt mas.. :D/

  18. Yuli Izecsson June 14, 2011 / 9:46 pm

    waduhhh…
    lieur kieu…
    hehehe

  19. anggaramadhan July 18, 2011 / 11:45 pm

    Mas mau nanya soal yang method getval pada class ModelExpert.java
    kq nk mau manggil method getval ya yang ada di data ma knowledge malah variabel cannot find simbol…..?????

    bsa minta bantuan nk????? kirim ke email saya projectnya

    thaks……

    • situkangsayur July 21, 2011 / 1:25 am

      ya berarti dalem objek nya gag ada methode getVal()… 😀

      dah saya tampilin link untuk unduh source nya…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s