Tampilkan postingan dengan label Tutorial Java. Tampilkan semua postingan
Tampilkan postingan dengan label Tutorial Java. Tampilkan semua postingan

Selasa, 12 Juni 2012

Overriding

Overriding berbeda dengan overloading. Kalo overloading, kita boleh menuliskan method yang sama namun dengan jumlah parameter yang berbeda dan nilai kembalian harus sama. Nah, kalau overriding konsepnya sama dengan overloading yaitu menulis kembali method. Namun, caranya overriding menulis kembali method sama persis. Sama mulai dari nama method dan isinya dan mengimplementasi kembali di sub classnya. Overriding dipakai saat kita menggunakan method yang sama tapi berbeda implementasinya. Jadi overriding method mempunyai nama method yang sama, jumlah parameter dan tipe parameter serta nilai kembalian (return) method yang di override. Jika method memiliki modifier akses public, method overridenya juga harus public.

Contoh:

class Kendaraan {
..............
public String getJenis() {
System.out.println(“Harga BBM turun”);
}
}
class Motor extends Kendaraan {
..............
public String getJenis() {
System.out.println(“Harga BBM premium 4000 rupiah”);
}
}

NB:

class motor mengextends class kendaraan
class motor melakukan override method di kendaraan namun berbeda implementasi

Kesimpulan:
  • Override method merupakan method yang sama persis dengan method yang sudah ada di super kelasnya, biasanya perbedaannya adalah pada implementasi (program body)
  • Overidding tidak bisa dilakukan dalam kelas itu sendiri
  • Jadi Overidding kerat kaitannya dengan inheritance (pewarisan)

Contoh lain:

class Lingkaran {
double r;

Lingkaran(double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
double Luas(double r) {
this.r = r;
return Math.PI*this.r*this.r;
}
}
class Tabung extends Lingkaran {
double h;

Tabung() {
//konstruktor kelas turunan, ada super() dan diisi nilai awal
super(0);
}
double Luas(double r) {
//overriding (method and parameter sama)
this.r = r;
return Math.PI * this.r * this.r * this.h;
}
}

NB:


  • Class lingkaran melakukan overloading method Luas (beda signature)
  • Class tabung mengextends class lingkaran
  • Class tabung meng-override method Luas hasil dari overload. Jadi kita juga bisa mengoverride method hasil overloading.


Sumber : bernazlionk.wordpress.com


Overloading

Syarat Overloading :

Dalam sebuah kelas diperbolehkan ada lebih dari satu method dengan nama yang sama dengan catatan methods dapat dibedakan berdasarkan banyaknya parameter atau tipe data parameter formal.

class Lingkaran {
double r;
Lingkaran (double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
double Luas (double r) {
//overloading method Luas() beda signature
this.r = r;
return Math.PI*this.r*this.r;
}
double Luas (int r) {
//overloading method Luas() beda signature
System.out.println("tipe data harus double. r tidak diubah!");
return Math.PI*this.r*this.r;
}
double Luas (double r, double PI) {
//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r;
}
}

Overloading tidak bisa dilakukan dengan membedakan nilai kembaliannya.

class Lingkaran {
double r;
Lingkaran (double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
//String Luas() { //bukan overloading method Luas() beda nilai kembalian
// return "Luasnya : " + Math.PI*this.r*this.r;
//}
}

Overloading juga bisa dilakukan pada sub kelasnya.

class Lingkaran {
double r;
Lingkaran(double r) {
this.r = r;
}
double Luas() {
return Math.PI*this.r*this.r;
}
double Luas(double r) {
//overloading method Luas() beda signature
this.r = r;
return Math.PI*this.r*this.r;
}
double Luas(int r) {
//overloading method Luas() beda signature
System.out.println("tipe data harus double. r tidak diubah!");
return Math.PI*this.r*this.r;
}
double Luas(double r, double PI) {
//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r;
}
}
class Tabung extends Lingkaran {
double h;
Tabung() {
super(0);
//konstruktor kelas turunan, ada keyword super()
//diisi nilai awal
}
double Luas(double r, double PI, double h) {
//overloading method Luas() beda signature
this.r = r;
return PI*this.r*this.r*this.h;
}
}

Overloading method dapat digunakan ketika kita mempunyai operasi yang sama namun berbeda implementasinya. Yang terpenting dalam melakukan ini, nama method harus sama, tapi mempunyai parameter yang berbeda. Terserah berbeda dari segi tipe datanya atau jumlah parameternya. Tergantung kebutuhan untuk implementasi dan nilai kembaliannya. Jadi yang perlu diingat saat melakukan overloading method :

• Nama method sama
• Parameter berbeda (baik tipe maupun jumlahnya)
• Tipe data nilai kembalian dapat berbeda atau sama

Overloading itu mendeklarasikan lebih dari satu kali dengan syarat-syarat tertentu, baik overloading method ataupun konstruktor.

Sumber : bernazlionk.wordpress.com


Encapsulation

Enkapsulasi/pengkapsulan (Encapsulation)

Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.

Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.

Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.

Contoh dalam program

Belajar.Java

class belajar{

public String x =”Pintar”;

private String y = “Java”;

}


Pintar.Java

public class Pintar{

public static void main(String[]args){

Coba panggil = new Belajar();

System.out.println(“Panggil X : “+panggil.x);

System.out.println(“Panggil Y : “+panggil.y);

}}


Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar.

Inheritance

Inheritance (Penurunan sifat / pewarisan)


Inheritance merupakan ciri khas dari OOP yang tidak terdapat pada pemrograman prosedural. Dalam hal ini, inheritance bertujuan membentuk objek baru yang memiliki sifat sama atau mirip dengan objek yang sudah ada sebelumnya (pewarisan). Objek turunan dapat digunakan membentuk objek turunan lagi dan seterusnya. Setiap perubahan pada objek induk juga akan mengubah objek turunannya. Susunan objek induk dengan objek turunannya disebut dengan hirarki objek.

Atau Inheritance yaitu pewarisan sifat-sifat suatu objek kepada objek turunannya.

Contoh program javanya :

Simpan dengan nama SmartMahasiswa.java


Public class SmartMahasiswa extends Mahasiswa{

}


Simpan dengan nama Main.java


public class Main{

public static void main(String[] args]) {

SmartMahasiswa mhs = new SmartMahasiswa();

mhs.setNim(“G64090030”);

mhs.setNama(“Ozi Jendela-id”);

mhs.printNim();

mhs.printNama();

}

}


Kontruksi objek mahasiswa :

Nim:G64090030

Nama:Ozi Jendela-id



Polymorphism

Polymorphic (Banyak bentuk)

Polymorphism adalah suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki objeknya, dimana objek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing objek.

Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana objek tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.

Contoh program java nya :

Simpan dengan nama CoolMahasiswa.java


public class CoolMahasiswa extends Mahasiswa{

public void printNama(){

System.out.println(“Hallo, saya Mahasiswa yang baik”);

Super.printNama();

}

}


Simpan dengan nama Main.java


public class Main{

public static void main(String[] args]) {

CooltMahasiswa mhs = new CoolMahasiswa();

mhs.setNim(“G64090030”);

mhs.setNama(“Ozi Jendela-id”);

mhs.printNim();

mhs.printNama();

}

}


Kontruksi objek mahasiswa :

Nim:G64090030

Hallo, saya Mahasiswa yang baik

Nama:Ozi Jendela-id



Terlihat bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa teks tambahan, sehingga method printNama(), pada class CoolMahasiswa, memiliki perilaku yang berbeda dengan class Mahasiswa.


Perbedaan Java dan C++


Java dirancang untuk menjadi bahasa yang sederhana, meminimalkan kesalahan, namun tangguh! Suatu aplikasi Java ditulis dalam bahasa Java dan memanfaatkan Java API (Application Programming Interface). Java API berisi koleksi class-class siap pakai yang mempermudah dalam penulisan aplikasi. Aplikasi ini juga hampir mirip dengan C++ dalam hal syntax perintahnya, namun tetap saja Java tidaklah sama dengan C++. Adapun perbedaan antara Java dengan C++ adalah sebagai berikut :

  • Pada Java, manajemen memory dinamis dan pointer dilakukan secara otomatis. Pada C++ pemrograman melakukan sendiri alokasi dan dealokasi memory. Otomatisasi ini menghilangkan kemungkinan bagi penggunaan pointer yang dapat merusak kestabilan program dan system operasi.
  • Java tidak mengenal multiple inheritance seperti pada C/C++. Multiple Inheritance membingungkan dan berakibat pada sulitnya pembuatan aplikasi dan compiler. Sebagai ganti yang lebih baik, Java menggunakan interface.
  • Java merupakan bahasa OOP murni sedangkan C++ adalah bahasa OOP hybrid.
  • Java menggunakan model Exception dalam menangani kesalahan program.
  • Java tidak mempergunakan compiler-directive pada source code.
  • Java memiliki fasilitas garbage-collector yang bekerja secara otomatis untuk menjamin ketersediaan memori dengan membebaskan memori yang tidak terpakai.
  • Java sangat portable baik pada file sumbernya maupun hasil kompilasinya, sedangkan C++ hanya portable pada level kode sumbernya saja.
  • Spesifikasi bahasa dan implementasi Java sudah ditetapkan dan tidak mengikuti suatu mesin atau platform tertentu, C++ sangat tergantung pada mesin dan platform yang akan digunakan.


Senin, 23 Januari 2012

Tutorial Memasang Library JCalendar pada Netbeans

Tutorial Memasang Library JCalendar pada Netbeans - Pada tutorial kali ini saya mencoba berbagi pengalaman dalam memasang Library JCalendar pada Netbeans karena pada aplikasi yang sudah saya buat
Aplikasi Peternakan Ayam menggunakan JCalendar tapi ternyata saya belon buat tutorial cara memasangnya malah yang sudah saya buat cara memasang kazao kalender :hammer:

Nahh langsung saja..... Adapun step by step cara memasang Library-nya sebagai berikut :
1. Pertama kita 'download' dulu Library JCalendar dimari atau bisa juga dimari  
2. Setelah selesai di download, buka Netbeans temen-temen pilih Menu-> Tools -> Libraries. Kira-kira nanti akan keluar seperti dibawah lalu klik tombol New Library...



3. Selanjutnya tulis nama Library seperti dibawah, lalu klik OK.



4. Setelah klik OK maka akan muncul tampilan seperti dibawah ini. Di gambar terdapat tab menu yaitu Classpath, Sources dan Javadoc. Pertama pada tab menu Classpath kita klik Add JAR/Folder..



5. Kemudian pilih pada folder yang sudah di download tadi (yang sudah di-ekstrak dalam bentuk folder). Lalu pilih jcalendar-1.3.2.jar. atau bisa lihat pada gambar lalu klik Add ZIP/Folder:


6. Selanjutnya pada tab menu Sources -> Add JAR/Folder pilih jcalendar-1.3.2-sources.jar



7. Setelah itu pada tab menu Javadoc -> Add JAR/Folder pilih jcalendar-1.3.2-javadoc.jar



8. Setelah semuanya selesai, lalu klik OK



9. Untuk memasukkan Library JCalendar ke dalam Palette. Menu -> Tools -> Palette -> Swing AWT/Components


10. Setelah muncul seperti gambar dibawah, kita pilih New Catagory



11. Selanjutnya buat nama Palette Category-nya -> OK


12. Setelah itu pilih Add form Library...


13. Maka akan muncul seperti gambar dibawah ini. Lalu pilih Library dengan nama JCalendar yang barusan kita buat tadi lalu Next..



14. Selanjutnya pilih komponen-komponen yang ingin ditampilkan pada Palette lalu Next...



15. Setelah itu akan ada tampilan seperti dibawah ini lalu klik Finish...



16. Yeaaahhh!!! Akhirnya selesai juga^^.... Berikut tampilan Palette JCalendar pada Netbeans..



Selamat Mencoba dan Yeahhh.... Rock With JAVA \m/





Jumat, 20 Januari 2012

Tutorial Membuat Laporan dengan iReport | JAVA NETBEANS

TUTORIAL MEMBUAT LAPORAN DENGAN IREPORT | JAVA NETBEANS - Kali ini saya akan mencoba berbagi KEGALAUAN saya belajar bahasa pemrograman JAVA dalam membuat sebuah Laporan dalam bentuk PDF dengan menggunakan iReport. iReport ada 2 macam, yang satu dalam bentuk aplikasi sendiri dan yang satu lagi dalam bentuk plugin NETBEANS. Nah disini saya akan berbagi pengalaman saya dalam menggunakan iReport yang dalam bentuk plugin-nya NETBEANS. (Yang dalam bentuk aplikasi rada ribet soalnya :p)

Tapi sebelumnya temen-temen kudu download dulu plugin iReport disini.

Setelah di download, step by step selanjutnya adalah sebagai berikut :
1. Buka Netbeans temen-temen, selanjutnya pilih Tools lalu Plugin. Pada tab download klik add plugin dan masukkan plugin iReport yang sudah temen-temen download tadi.

                                      


2. Klik Install dan ikuti langkah selanjutnya..
3. Selanjutnya buat project baru di NETBEANS dan buat file Report seperti gambar..


4. Beri nama File sesuka anda :p


5. Selanjutnya koneksi ke database, kalau belum terhubung pilih New..


6. Setelah itu bakalan ada pilihan datasource, kalau saya pakai MySQL jadi pilih yang Database JDBC Connection. Klik Next..



7. Step selanjutnya Setting koneksi, sesuaikan dengan database temen-temen. Jika sudah klik Save..



8. Setelah di Save, pilih Design Query..



9. Step selanjutnya lihat gambar aja dehh :p



10. Setelah di klik OK. Bakalan ada tampilan seperti dibawah. Lalu klik Next...



11. Pada tab ini pilih field yang ingin temen-temen tampilkan dilaporan dan pindahkan ke sisi kanan. Lalu klikNext..



12. Step selanjutnya pilih berdasarkan group by. Setelah itu klik Next..


13. Pilih sesuai selera lalu klik Next..



14. Eaaa... Akhirnya selesai juga :p


15. Selanjutnya atur format laporan sesuai kreatifitas anda :D



16. Untuk GUI-nya terserah anda. Kalau saya sebagai berikut..



17. Klik 2x pada button Print, trus masukin...

        try {
            File file = new File("src/jie/laporan/report/laporanIreport.jrxml");
            jasperDesign = JRXmlLoader.load(file);
            param.clear();
            jasperReport = JasperCompileManager.compileReport(jasperDesign);
            jasperPrint = JasperFillManager.fillReport(jasperReport, param,    koneksi.getConnection());
            JasperViewer.viewReport(jasperPrint, false);
        } catch (Exception e) {
            e.printStackTrace();
        }

18. Nanti hasil akhirnya.....



Kalau mau lebih lengkapnya, download aja projectnya :

LaporanIreport.rar

Kalau mau download Aplikasi Peternakan Ayam yang sudah saya buat bisa kunjungi dimari...

NB : Kmaren ada yang bilang "recordnya" gak muncul, tapi setelah di cek ternyata masalahnya ada di 'FONT' soalnya dia di UBUNTU. Nahh.... Jadi kalo ada masalah coba di cek lagi aja, soalnya iReport 'sensitif' banget :D

Selamat Berkreasi ^^




Contoh Aplikasi Desktop dengan JAVA (Aplikasi Peternakan Ayam)

Splash Screen + ProgressBar



Pesan Kesalahan

Login as User

Login as Admin

Input Tanggal Dengan JCalendar (JDatechooser)


Efek Transisi


Laporan dalam bentuk PDF



Nama Kelompok :

Ozi Jendela-id - G64090030
Rini Windyastuti - G64090076
Melisa Illina Alsyafdi - G64090128
Dian Sagita - G64080070

Thanks banget buat kerjasamanya ^^

Download aja projectnya dimari :
chick.nfarm.rar

Kalau mau melihat Tutorial Menggunakan iReport bisa mampir dimari..

Selamat berkreasi ^^


Rabu, 04 Januari 2012

Algoritma Particle Swarm Optimization (PSO) dengan JAVA


I. Pendahuluan

Hidup ini tidak ada yang ideal begitulah pepatah hidup yang selama ini sering kita dengar. Di dalam hidup, kita hanya bisa melakukan yang terbaik untuk hari ini dengan segala keterbatasan yang kita miliki. Dengan kata lain, sebagai manusia kita hanya bisa melakukan optimasi dengan harapan hari ini akan lebih baik dari hari kemarin dan hari esok akan lebih baik dari hari ini. Sama halnya dengan Particle Swarm Optimization yang nanti akan kita bahas.

Particle Swarm Optimization adalah salah satu metode optimasi yang terinspirasi dari perilaku gerakan kawanan hewan seperti ikan (school of fish), hewan herbivor (herd), dan burung (flock) yang kemudian tiap objek hewan disederhanakan menjadi sebuah partikel. Suatu partikel dalam ruang memiliki posisi yang dikodekan sebagai vektor koordinat. Vektor posisi ini dianggap sebagai keadaan yang sedang ditempati oleh suatu partikel di ruang pencarian. Setiap posisi dalam ruang pencarian merupakan alternatif solusi yang dapat dievaluasi menggunakan fungsi objektif. Setiap partikel bergerak dengan kecepatan v.

Particle Swarm Optimization atau yang kita kenal dengan PSO menerapkan sifat masing-masing individu dalam satu kelompok besar. Kemudian menggabungkan sifat-sifat tersebut untuk menyelesaikan permasalahan. Particle Swarm Optimization pertama kali dimunculkan pada tahun 1995, sejak saat itulah para peneliti banyak menurunkan dan mengembangkan metode PSO.
Ciri khas dari PSO adalah pengaturan kecepatan partikel secara heuristik dan probabilistik. Jika suatu partikel memiliki kecepatan yang konstan maka jika jejak posisi suatu partikel divisualisasikan akan membentuk garis lurus. Dengan adanya faktor eksternal yang membelokkan garis tersebut yang kemudian menggerakkan partikel dalam ruang pencarian maka diharapkan partikel dapat mengarah, mendekati, dan pada akhirnya mencapai titik optimal. Faktor eksternal yang dimaksud antara lain posisi terbaik yang pernah dikunjungi suatu partikel, posisi terbaik seluruh partikel (diasumsikan setiap partikel mengetahui posisi terbaik setiap partikel lainnya), serta faktor kreativitas untuk melakukan eksplorasi.

Particle Swarm Optimization memiliki kesamaan sifat dengan teknik komputasi seperti Algoritma Genetika (Genetic Algorithm). Sistem PSO diinisialisasi oleh sebuah populasi solusi secara acak dan selanjutnya mencari titik optimum dengan cara meng-update tiap hasil pembangkitan. Metode optimasi yang didasarkan pada swarm intelligence ini disebut algoritma behaviorally inspired sebagai alternatif dari algoritma genetika, yang sering disebut evolution-based procedures. Dalam konteks optimasi multivariabel, kawanan diasumsikan mempunyai ukuran tertentu atau tetap dengan setiap partikel posisi awalnya terletak di suatu lokasi yang acak dalam ruang multidimensi. Setiap partikel diasumsikan memiliki dua karakteristik: posisi dan kecepatan. Setiap partikel bergerak dalam ruang/space tertentu dan mengingat posisi terbaik yang pernah dilalui atau ditemukan terhadap sumber makanan atau nilai fungsi objektif. Setiap partikel menyampaikan informasi atau posisi bagusnya kepada partikel yang lain dan menyesuaikan posisi dan kecepatan masing-masing berdasarkan informasi yang diterima mengenai posisi yang bagus tersebut.

Sebagai contoh, misalnya perilaku burung-burung dalam dalam kawanan burung. Meskipun setiap burung mempunyai keterbatasan dalam hal kecerdasan, biasanya ia akan mengikuti kebiasaan (rule) seperti berikut :
1. Seekor burung tidak berada terlalu dekat dengan burung yang lain
2. Burung tersebut akan mengarahkan terbangnya ke arah rata-rata keseluruhan burung
3. Akan memposisikan diri dengan rata-rata posisi burung yang lain dengan menjaga sehingga jarak antar burung dalam kawanan itu tidak terlalu jauh

Dengan demikian perilaku kawanan burung akan didasarkan pada kombinasi dari 3 faktor simpel berikut:
1. Kohesi - terbang bersama
2. Separasi - jangan terlalu dekat
3. Penyesuaian(alignment) - mengikuti arah bersama

Jadi PSO dikembangkan dengan berdasarkan pada model berikut:
1. Ketika seekor burung mendekati target atau makanan (atau bisa mnimum atau maximum suatu fungsi tujuan) secara cepat mengirim informasi kepada burung-burung yang lain dalam kawanan tertentu
2. Burung yang lain akan mengikuti arah menuju ke makanan tetapi tidak secara langsung
3. Ada komponen yang tergantung pada pikiran setiap burung, yaitu memorinya tentang apa yang sudah dilewati pada waktu sebelumnya.

Model ini akan disimulasikan dalam ruang dengan dimensi tertentu dengan sejumlah iterasi sehingga di setiap iterasi, posisi partikel akan semakin mengarah ke target yang dituju (minimasi atau maksimasi fungsi). Ini dilakukan hingga maksimum iterasi dicapai atau bisa juga digunakan kriteria penghentian yang lain.

II. Implementasi

Berikut ini adalah contoh implementasi algoritma PSO dalam JAVA :

Misal fungsi yang harus diminimalkan adalah sebagai berikut:

$ latex f (x, y) = (2,8125-x + xy ^ 4) ^ 2 + (2,25-x + xy ^ 2) ^ 2 + (1,5-x + xy) ^ 2 $
Dengan kendala berikut:  $ latex 1 <= x <= 4; -1 <= y <= 1 $

Untuk mengatasi masalah tersebut dengan menggunakan PSO, kita akan membutuhkan kelas-kelas:
Posisi                     : untuk mewakili bagian Posisi partikel
Kecepatan          : untuk mewakili bagian Kecepatan partikel
Partikel                 : partikel itu sendiri
SimplePSO          : kontrol utama dari program ini
PSOConstants   : sebuah antarmuka untuk menentukan parameter yang digunakan dalam PSO

Kita harus menyediakan dua-dimensi posisi dan kecepatan.

>> Untuk Posisi (Position):

public class Position {
private double x;
private double y;

public Position(double x, double y) {
this.x = x;
this.y = y;
}

public double getX() {
return x;
}

public void setX(double x) {
this.x = x;
}

public double getY() {
return y;
}

public void setY(double y) {
this.y = y;
}
}

>> Untuk Kecepatan (Velocity)

public class Velocity {
private double x;
private double y;

public Velocity(double x, double y) {
this.x = x;
this.y = y;
}

public double getX() {
return x;
}

public void setX(double x) {
this.x = x;
}

public double getY() {
return y;
}

public void setY(double y) {
this.y = y;
}
}
>> Untuk Partikel

public class Particle {
private Position location;
private Velocity velocity;
private double fitness;

public double getFitness() {
calculateFitness();
return fitness;
}

public void calculateFitness() {
double x = this.location.getX();
double y = this.location.getY();

fitness = Math.pow((2.8125 - x + x * Math.pow(y, 4)), 2) +
Math.pow((2.25 - x + x * Math.pow(y, 2)), 2) +
Math.pow((1.5 - x + x * y), 2);
}

public Position getLocation() {
return location;
}

public void setLocation(Position location) {
this.location = location;
}

public Velocity getVelocity() {
return velocity;
}

public void setVelocity(Velocity velocity) {
this.velocity = velocity;
}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////

Perhatikan metode calculateFitness (), itu adalah tempat untuk menaruh evaluasi fungsi. Di kelas ini, kita akan membutuhkan beberapa metode:

  • initializeSwarm () = untuk menginisialisasi kawanan digunakan dalam metode
  • mengeksekusi () = bagian utama dari proses

>> Untuk Parsial

private void initializeSwarm() {
Particle p;
Random generator = new Random();

for (int i = 0; i < SWARM_SIZE; i++) {
p = new Particle();
double posX = generator.nextDouble() * 3.0 + 1.0;
double posY = generator.nextDouble() * 2.0 - 1.0;
p.setLocation(new Position(posX, posY));

double velX = generator.nextDouble() * 2.0 - 1.0;
double velY = generator.nextDouble() * 2.0 - 1.0;
p.setVelocity(new Velocity(velX, velY));

swarm.add(p);
}
}

public void execute() {
Random generator = new Random();
initializeSwarm();

evolutionaryStateEstimation();

int t = 0;
double w;

while (t < MAX_ITERATION) {
// calculate corresponding f(i,t) corresponding to location x(i,t)
calculateAllFitness();

// update pBest
if (t == 0) {
for (int i = 0; i < SWARM_SIZE; i++) {
pBest[i] = fitnessList[i];
pBestLoc.add(swarm.get(i).getLocation());
}
} else {
for (int i = 0; i < SWARM_SIZE; i++) {
if (fitnessList[i] < pBest[i]) {
pBest[i] = fitnessList[i];
pBestLoc.set(i, swarm.get(i).getLocation());
}
}
}

int bestIndex = getBestParticle();
// update gBest
if (t == 0 || fitnessList[bestIndex] < gBest) {
gBest = fitnessList[bestIndex];
gBestLoc = swarm.get(bestIndex).getLocation();
}

w = W_UP - (((double) t) / MAX_ITERATION) * (W_UP - W_LO);

for (int i = 0; i < SWARM_SIZE; i++) {
// update particle Velocity
double r1 = generator.nextDouble();
double r2 = generator.nextDouble();
double lx = swarm.get(i).getLocation().getX();
double ly = swarm.get(i).getLocation().getY();
double vx = swarm.get(i).getVelocity().getX();
double vy = swarm.get(i).getVelocity().getY();
double pBestX = pBestLoc.get(i).getX();
double pBestY = pBestLoc.get(i).getY();
double gBestX = gBestLoc.getX();
double gBestY = gBestLoc.getY();

double newVelX = (w * vx) + (r1 * C1) * (pBestX - lx) + (r2 * C2) * (gBestX - lx);
double newVelY = (w * vy) + (r1 * C1) * (pBestY - ly) + (r2 * C2) * (gBestY - ly);
swarm.get(i).setVelocity(new Velocity(newVelX, newVelY));

// update particle Location
double newPosX = lx + newVelX;
double newPosY = ly + newVelY;
swarm.get(i).setLocation(new Position(newPosX, newPosY));
}

t++;
}
}
}

>> Antarmuka untuk menyimpan konstanta

public interface PSOConstans {
int SWARM_SIZE = 30;
int DIMENSION = 2;
int MAX_ITERATION = 300;
double C1 = 2.0;
double C2 = 2.0;
double W_UP = 1.0;
double W_LO = 0.0;
}












>> Hasil setelah program dijalankan
Seperti yang bisa kita lihat dari hasilnya, program menemukan solusi dari masalah untuk (x = 3.0 dan y = 0,5) pada iterasi ke 244.


Sumber : Dari berbagai sumber :p

Selasa, 27 Desember 2011

Menampilkan data pada tabel | Java Netbeans


Iseng sebelum caw ke Bogor, bikin beginian dulu.......
<Tuntutan project kuliah sieh :p>

Yappp.... seperti judulnya ini kodingan untuk menampilkan data pada database yang udah dibikin ke dalam bentuk tabel. Cekidot gann....




#Koneksi database
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 * @author Jie
 */
public class DBConnection {
    private Connection koneksi;
    public Connection connect(){
       //untuk koneksi ke driver
       try{
           Class.forName("com.mysql.jdbc.Driver");
           System.out.println("berhasil load driver");
       }catch(ClassNotFoundException cnfe){
           System.out.println("Tidak ada Driver "+cnfe);
       }
       //untuk koneksi ke database
       try{
           String url="jdbc:mysql://localhost:3306/java_db";
           koneksi=DriverManager.getConnection(url,"root","root");
           System.out.println("Berhasil koneksi");
       }catch(SQLException se){
           System.out.println("Gagal koneksi "+se);
           //JOptionPane.showMessageDialog(null,"Gagal koneksi...MySQL server belum aktif");
       }
       return koneksi;
    }
}
#Kodingannya


import Config.DBConnection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/*
 * Form.java
 *
 * Created on 28 Des 11, 7:37:11
 */
/**
 *
 * @author Jie
 */
public class Utama extends javax.swing.JFrame {
    private DefaultTableModel DftTabMode;
    /** Creates new form Form */
    public Utama() {
        initComponents();
         setLocationRelativeTo(this);
    }
    /** 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")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                      
    private void initComponents() {
                   
    private void formWindowActivated(java.awt.event.WindowEvent evt) {                                  
        // TODO add your handling code here:
        JFrame form = new JFrame();
        form.setSize(400, 400);  
        tampil_data();
    }                                
    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                

        // TODO add your handling code here:
        //saat klik record
        klik_record();
    }                                
    private void updateMouseClicked(java.awt.event.MouseEvent evt) {                                

        // TODO add your handling code here:
        update_data();
    }                                
    private void deleteMouseClicked(java.awt.event.MouseEvent evt) {                                
        // TODO add your handling code here:
        delete_data();
    }                                
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                  
        insert_data();
        // TODO add your handling code here:
    }                                  
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Utama().setVisible(true);
            }
        });
    }
    ////////////////////////////untuk metod baru ////////////////////////////////////
    public void tampil_data(){
        //panggil method koneksi
        java.sql.Connection conn = new DBConnection().connect();
        Object[] Baris={"ID","Nama","Tanggal Lahir","Alamat"};
        DftTabMode=new DefaultTableModel(null,Baris);
        jTable1.setModel(DftTabMode);
        try {
        String sql = "Select * from biodata";
            java.sql.Statement stmt = conn.createStatement();
            java.sql.ResultSet rslt = stmt.executeQuery(sql);
            while (rslt.next()) {
                String id = rslt.getString("id");
                String nama = rslt.getString("nama");
                String tanggal = rslt.getString("tanggal");
                String alamat = rslt.getString("alamat");
                String[] dataField = {id, nama, tanggal, alamat};
                DftTabMode.addRow(dataField);
            }
        }catch(Exception e) {}
    }
    public void klik_record(){
        //saat pilih record
        int baris = jTable1.getSelectedRow();
        String id = DftTabMode.getValueAt(baris, 0).toString();
        String nama = DftTabMode.getValueAt(baris, 1).toString();
        String tanggal = DftTabMode.getValueAt(baris, 2).toString();
        String alamat = DftTabMode.getValueAt(baris, 3).toString();
        f_id.setText(id);
        f_nama.setText(nama);
        f_tanggal.setText(tanggal);
        f_alamat.setText(alamat);
    }
    public void update_data(){
         //panggil method koneksi
        java.sql.Connection conn = new DBConnection().connect();

        String sql="update biodata set nama=?,tanggal=?,alamat=? where id='"+f_id.getText()+"'";
        java.sql.PreparedStatement stmt = null;
        try {
            stmt = conn.prepareStatement(sql);
        } catch (SQLException ex) {
        }
        try{
            stmt.setString(1,f_nama.getText());
            stmt.setString(2,f_tanggal.getText());
            stmt.setString(3,f_alamat.getText());
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null,"Data Berhasil di Ubah");
        }catch(SQLException se){}
    }
        public void insert_data(){
         //panggil method koneksi
        java.sql.Connection conn = new DBConnection().connect();

        String sql="INSERT INTO `java_db`.`biodata` (`id`, `nama`, `tanggal`, `alamat`) VALUES (?, ?, ?, ?);";
        java.sql.PreparedStatement stmt = null;
        try {
            stmt = conn.prepareStatement(sql);
        } catch (SQLException ex) {
        }
        try{
            stmt.setString(1, f_id.getText());
            stmt.setString(2,f_nama.getText());
            stmt.setString(3,f_tanggal.getText());
            stmt.setString(4,f_alamat.getText());
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null,"Data Berhasil di Ditambah");
        }catch(SQLException se){}
    }
    public void delete_data(){
        //panggil method koneksi
        java.sql.Connection conn = new DBConnection().connect();
        int ok=JOptionPane.showConfirmDialog(null,"Apakah Anda yakin?","Konfirmasi",JOptionPane.YES_NO_OPTION);
        if(ok==0){
            try{
                String sql="delete from biodata where id='"+f_id.getText()+"'";
                java.sql.PreparedStatement stmt=conn.prepareStatement(sql);
                stmt.executeUpdate();
                JOptionPane.showMessageDialog(null,"Data Berhasil di hapus");
                f_id.setText("");
                f_nama.setText("");
                f_tanggal.setText("");
                f_alamat.setText("");
            }catch(Exception e){
                JOptionPane.showMessageDialog(null,"Data Gagal di hapus");
            }
        }
    }
    // Variables declaration - do not modify                  
    private javax.swing.JButton delete;
    private javax.swing.JTextArea f_alamat;
    private javax.swing.JTextField f_id;
    private javax.swing.JTextField f_nama;
    private javax.swing.JTextField f_tanggal;
    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.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTable jTable1;
    private javax.swing.JButton update;
    // End of variables declaration                
}

Bingung?? wahahaha... Download aja dimari gan!!
Klik dimari


Membuat Auto Resize ComboBox



Kadang kita memiliki sebuah combobox yang berisi item dengan ukuran yang panjang. Untuk menampilkan item-item tersebut secara benar, maka kita harus membuat combobox dengan ukuran yang sesuai, sehingga kadang akan sangat memakan tempat.
















Untuk mengatasinya kita dapat membuat sebuah combobox yang ukuran popupnya sesuai dengan ukuran item terpanjang dalam list. Untuk itu kita buat saja sebuah class baru yang diturunkan dari class JComboBox.

import java.awt.Dimension;
import java.awt.FontMetrics;
import javax.swing.JComboBox;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author hauw
*/
public class AutoResizeComboBox extends JComboBox {
@Override
public Dimension getSize() {
Dimension dimension = new Dimension();
dimension.width = getPanjangPopup();
return dimension;
}
private int getPanjangPopup() {
int panjangComboBox = (int) super.getSize().getWidth();
if (panjangComboBox < getTeksTerpanjang()) {
return getTeksTerpanjang();
}
return panjangComboBox;
}
private int getTeksTerpanjang() {
int panjangTeks = 0;
int count = getItemCount();
for (int i = 0; i < count; i++) {
FontMetrics fontMetrics = getFontMetrics(getFont());
String teks = getItemAt(i).toString();
if (panjangTeks < fontMetrics.stringWidth(teks)) {
panjangTeks = fontMetrics.stringWidth(teks);
}
}
return panjangTeks + 5;
}
}


Lihat perbedaannya pada gambar berikut :














Kalo ingin download projectnya disini ya...

ComboBox Resizable.rar



Menampilkan bilangan fibonaci



Udah pada tau kan bilangan fibonaci itu apa? nah bilangan fibonaci itu bilangan yang hasilnya sama dengan penjumlahan bilangan-bilangan sebelumnya. Contohnya kalo kita punya 4 buah bilangan. Bilangan pertama dan kedua itu selalu 0 dan 1. Bilangan ketiga = hasil penjumlahan dari bilangan pertama dan kedua yaitu 1. Bilangan ke-4 nya ya ditambahin lagi semuanya. Nich source code buat tampilin bilangan fibonaci di java.

public class Fibonaci {
public static void main(String[] args) throws IOException {
String input;
int n = 0;
int temp = 0;
int[] array;
System.out.print("Input: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
input = br.readLine();
if (input.equals("fibonaci")) {
System.out.print("Masukkan jumlah n: ");
try {
n = Integer.parseInt(br.readLine());
array = new int[n];
System.out.println("Deret Fibonaci:");
for (int i = 0; i < array.length; i++) {
if (i == 0) {
array[i] = 0;
} else if (i == 1) {
array[i] = 1;
} else {
temp = 0;
for (int j = 0; j < i; j++) {
temp += array[j];
array[i] = temp;
}
}
System.out.println(array[i]);
}
} catch (NumberFormatException numberFormatException) {
System.out.println("Masukkan angka yang benar");
}
} else {
System.out.println("Input Salah");
}
}
}




>> Oh iya, input nya masukin fibonaci dulu. Kalo ngga bakalan keluar pesan input salah.


Perfect number pada Java

Perfect number adalah suatu bilangan yang seluruh faktornya jika dijumlahkan akan bernilai sama dengan bilangan tersebut. Contohnya adalah 6. --->
Faktor dari 6: 1, 2, 3
Hasil dari penjumlahan faktor-faktornya bernilai sama dengan bilangan itu sendiri, maka 6 merupakan perfect number. Di bawah ini adalah source code untuk mencari perfect number dengan java.

public class PerfectNumber {
public static void main(String[] args) {
System.out.println("Perfect numbers from 1 to 650");
for (int i = 1; i < 10000; i++) {
searchPerfectNumber(i);
}
}
public static void searchPerfectNumber(int number) {
int sum = 0;
for (int divisor = 1; divisor < number; divisor++) {
if ((number % divisor) == 0) {
sum += divisor;
}
}
if (sum == number) {
System.out.println(number + " is a perfect number");
}
}
}