Selasa, 18 November 2008

Relationship/Association pada Object Database Db4o - Section 5

Inheritance

Inheritance (Pewarisan): suatu hubungan antar class di mana sebuah class diturunkan (inherits) dari class lainnya. Class hasil turunan disebut dengan derived class atau subclass, sedangkan class induk disebut dengan base class atau superclass.

Devinisi lain, Pewarisan adalah hubungan hirarkis antar class. Class dapat diturunkan dari class lain dan mewarisi semua atribut dan methoda class asalnya dan menambahkan fungsionalitas baru. Kebalikan dari pewarisan adalah generalisasi.


Multiinheritance: inheritance yang tidak hanya satu tingkat hirarki saja tetapi bisa lebih dari satu tingkatan, seperti class Hewan diturunkan lagi menjadi class Anjing, untuk class Anjing didefinisikan lagi menjadi class Doberman sebagai subclass dari Anjing.



Manfaat Inheritance

  • Inheritance memungkinkan untuk menciptakan sebuah class dari class yang sudah ada.

  • Ketika sebuah class diturunkan dari class yang sudah ada maka class tersebut mewarisi semua method dan field dari class orangtuanya.

  • Class anak juga mewarisi bentuk dari class orang tua. Artinya objek dari class anak dapat dikenali sebagai objek dari class orang tua.


Sebagai contoh hubungan Inheritance yaitu Person yang mewarisi Dosen dan Mahasiswa:



Berikut ini adalah contoh kode program dari contoh kasus Pewarisan Person terhadap class Dosen dan Mahasiswa:


Membuat Class Person


  1. package Person;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Person {
  7. String Nama;
  8. String Alamat;
  9. int umur;
  10. public Person(String nm, String alamat, int umur){
  11. this.Nama = nm;
  12. this.Alamat = alamat;
  13. this.umur = umur;
  14. }
  15. public String getNama(){
  16. return Nama;
  17. }
  18. public String getAlamat(){
  19. return Alamat;
  20. }
  21. public int getUmur(){
  22. return umur;
  23. }
  24. }


Membuat Class Dosen


  1. package Person;
  2. /**
  3. *
  4. @author Team_dakoop
  5. */
  6. public class Dosen extends Person {
  7. String IdDosen;
  8. public Dosen(String id, Person orang){
  9. super (orang.Nama, orang.Alamat, orang.umur);
  10. this.IdDosen = id;
  11. }
  12. public String getIdDosen(){
  13. return IdDosen;
  14. }
  15. }


Membuat Class Mahasiswa


  1. package Person;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Mahasiswa extends Person {
  7. String NIM;
  8. public Mahasiswa(String nim, Person orang){
  9. super (orang.Nama, orang.Alamat, orang.umur);
  10. this.NIM =nim;
  11. }
  12. public String getNIM(){
  13. return NIM;
  14. }
  15. }

Pada bagian main program


  1. package Person;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Main {
  8. /**
  9. * @param args the command line arguments
  10. */
  11. public static void main(String[] args) {
  12. // TODO code application logic here
  13. ObjectContainer db = Db4o.openFile("person.yap");
  14. Person orang1 = new Person("Budi","Bandung",38);
  15. Person orang2 = new Person("Maya","Surabaya",19);
  16. Dosen dosen = new Dosen("D22",orang1);
  17. Mahasiswa mhs = new Mahasiswa("PA/298",orang2);
  18. db.set(orang1);
  19. db.set(orang2);
  20. db.set(dosen);
  21. db.set(mhs);
  22. db.close();
  23. System.out.println("Data sudah tersimpan");
  24. }
  25. }




Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta







Relationship/Association pada Object Database Db4o - Section 4

Aggregation

Suatu object dapat memiliki bagian-bagian dari object-object lain. Contoh Mobil dapat memiliki bagian-bagian Engine, Body, Transmission dan Wheels.

Di dalam UML, aggregation terdiri dari dua jenis, yaitu :

  • aggregation yang memiliki ownership yang kuat (biasa disebut juga Composition)

  • aggregation yang memiliki ownership yang lemah (Aggregation).


Contoh Hubungan Aggregation dan Composition yang dibedakan dengan notasi:




Sebagai contoh hubungan Composition dari Computer, yang memiliki bagian-bagian Processor, RAM dan HardDisk.



Berikut ini adalah contoh kode program dari contoh kasus Composition dari Computer tersebut:


Membuat Class Computer


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Computer {
  7. String IdComputer;
  8. String NamaComputer;
  9. Processor processor;
  10. RAM ram;
  11. HardDisk HD;
  12. public Computer(String id, String nama){
  13. this.IdComputer = id;
  14. this.NamaComputer = nama;
  15. this.processor = null;
  16. this.ram = null;
  17. this.HD = null;
  18. }
  19. public void setProcessor(Processor processor){
  20. this.processor = processor;
  21. }
  22. public void setRAM(RAM ram){
  23. this.ram = ram;
  24. }
  25. public void setHD(HardDisk HD){
  26. this.HD = HD;
  27. }
  28. }


Membuat Class Processor


  1. package computer;
  2. /**
  3. *
  4. @author Team_dakoop
  5. */
  6. public class Processor {
  7. String Merk;
  8. int Kecepatan;
  9. public Processor (String merk, int kecepatan){
  10. this.Merk = merk;
  11. this.Kecepatan = kecepatan;
  12. }
  13. }


Membuat Class RAM


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class RAM {
  7. String Merk;
  8. int Kapasitas;
  9. public RAM (String merk, int kapasitas){
  10. this.Merk= merk;
  11. this.Kapasitas = kapasitas;
  12. }
  13. }


Membuat Class HardDisk


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class HardDisk {
  7. String Merk;
  8. int Kapasitas;
  9. public HardDisk(String merk, int kapasitas){
  10. this.Merk = merk;
  11. this.Kapasitas= kapasitas;
  12. }
  13. }



Pada bagian main program


  1. package computer;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Main {
  8. /**
  9. * @param args the command line arguments
  10. */
  11. public static void main(String[] args) {
  12. // TODO code application logic here
  13. ObjectContainer db = Db4o.openFile("Computer.yap");
  14. Computer komputer = new Computer("C03",
  15. "Compaq 3736");
  16. Processor processor = new Processor(
  17. "Pentium 4 Core 2 Duo",2400);
  18. RAM ram = new RAM("DDR2 Visipro",2048);
  19. HardDisk HD = new HardDisk("Fujitsu",160);
  20. komputer.setProcessor(processor);
  21. komputer.setRAM(ram);
  22. komputer.setHD(HD);
  23. db.set(komputer);
  24. db.set(processor);
  25. db.set(ram);
  26. db.set(HD);
  27. System.out.println(
  28. "Object Komputer telah tersimpan");
  29. db.close();
  30. }
  31. }



Hasil Object Database Menggunakan Object Manager






Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta






Relationship/Association pada Object Database Db4o - Section 3

Many-to-Many Relationship


Misalkan Relationship antara Buku dan Anggota pada peminjaman buku di perpustakaan seperti berikut:



Pada Kasus perpustakaan, dengan jelas dapat kita memodelkan hubungan asosiasi antara Buku dengan Anggota, dimana banyak anggota dapat meminjam banyak buku.


Berikut ini adalah contoh kode program dari contoh kasus Peminjaman buku di perpustakaan tersebut:


Membuat Class Buku


  1. package perpustakaan;
  2. /**
  3. *
  4. @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Buku {
  8. String KodeBuku;
  9. String Judul;
  10. String Pengarang;
  11. String Penerbit;
  12. int TahunTerbit;
  13. Peminjaman pinjam;
  14. public Buku(String kd, String jdl, String Pengarang,
  15. String Penerbit, int thn){
  16. this.KodeBuku = kd;
  17. this.Judul = jdl;
  18. this.Pengarang = Pengarang;
  19. this.Penerbit = Penerbit;
  20. this.TahunTerbit = thn;
  21. this.pinjam = null;
  22. }
  23. public void SetPinjam(Peminjaman pinjam){
  24. this.pinjam = pinjam;
  25. }
  26. public Peminjaman getPinjam(){
  27. ObjectContainer db = Db4o.openFile("Perpustakaan,yap");
  28. pinjam = new Peminjaman(null,KodeBuku,null);
  29. try
  30. {
  31. ObjectSet Hasil = db.get(pinjam);
  32. pinjam = (Peminjaman)Hasil.next();
  33. }
  34. finally
  35. {
  36. db.close();
  37. }
  38. return pinjam;
  39. }
  40. }


Membuat Class Anggota


  1. package perpustakaan;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Anggota {
  8. String IdAnggota;
  9. String Nama;
  10. String Alamat;
  11. Peminjaman pinjam;
  12. public Anggota(String Id, String Nama, String Alamat){
  13. this.IdAnggota = Id;
  14. this.Nama = Nama;
  15. this.Alamat = Alamat;
  16. this.pinjam=null;
  17. }
  18. public void SetPinjam(Peminjaman pinjam){
  19. this.pinjam = pinjam;
  20. }
  21. public Peminjaman getPinjam(){
  22. ObjectContainer db = Db4o.openFile("Perpustakaan,yap");
  23. pinjam = new Peminjaman(IdAnggota,null,null);
  24. try
  25. {
  26. ObjectSet Hasil = db.get(pinjam);
  27. pinjam = (Peminjaman)Hasil.next();
  28. }
  29. finally
  30. {
  31. db.close();
  32. }
  33. return pinjam;
  34. }
  35. }



Membuat Class Peminjaman


  1. package perpustakaan;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. public class Peminjaman {
  7. String IdAnggota;
  8. String KodeBuku;
  9. String tglPinjam;
  10. public Peminjaman(String IdAnggota, String KodeBuku, String tglPinjam)
  11. {
  12. this.IdAnggota= IdAnggota;
  13. this.KodeBuku = KodeBuku;
  14. this.tglPinjam = tglPinjam;
  15. }
  16. }


Pada main program


  1. package perpustakaan;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. public class Main {
  8. public static void main(String[] args) {
  9. ObjectContainer db
  10. = Db4o.openFile("Perpustakaan.yap");
  11. Anggota anggota1
  12. = new Anggota("A02","Prasetio","Jalan Magelang");
  13. Anggota anggota2
  14. = new Anggota("A35","Antonius","Jalan Sagan");
  15. Buku buku1 = new Buku("CS01",
  16. "Swarm Intelligence","Eric B",
  17. "Oxford university press",1999);
  18. Buku buku2 = new Buku("CS05",
  19. "Simulation","Steward K",
  20. "Addison Wesley",2001);
  21. Buku buku3 = new Buku("CS82",
  22. "Genetic Algorithm","Andrew S",
  23. "McGraw Hill",2003);
  24. Buku buku4 = new Buku("CS34",
  25. "Artificial Neural Net","Fausett",
  26. "Prentice Hall",2002);
  27. Peminjaman pinjam1
  28. = new Peminjaman("A02","CS01","20-11-2008");
  29. Peminjaman pinjam2
  30. = new Peminjaman("A02","CS05","21-11-2008");
  31. Peminjaman pinjam3
  32. = new Peminjaman("A35","CS82","21-11-2008");
  33. Peminjaman pinjam4
  34. = new Peminjaman("A35","CS34","25-11-2008");
  35. anggota1.SetPinjam(pinjam1);
  36. anggota1.SetPinjam(pinjam2);
  37. anggota2.SetPinjam(pinjam3);
  38. anggota2.SetPinjam(pinjam4);
  39. buku1.SetPinjam(pinjam1);
  40. buku2.SetPinjam(pinjam2);
  41. buku3.SetPinjam(pinjam3);
  42. buku4.SetPinjam(pinjam4);
  43. try
  44. {
  45. db.set(anggota1);
  46. db.set(anggota2);
  47. db.set(buku1);
  48. db.set(buku2);
  49. db.set(buku3);
  50. db.set(buku4);
  51. db.set(pinjam1);
  52. db.set(pinjam2);
  53. db.set(pinjam3);
  54. db.set(pinjam4);
  55. System.out.println("Data sudah tersimpan");
  56. }
  57. finally
  58. {
  59. db.close();
  60. }
  61. }
  62. }

Hasil Object Database Menggunakan Object Manager




Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta





Relationship/Association pada Object Database Db4o - Section 2

One-to-Many Relationship

One-to-Many Relationship merupakan bentuk hubungan asosiasi antar object yang sifatnya dua arah. One-to-Many Relationship disebut juga dengan Bidirectional association.

Misalkan Relationship antara Dokter dan Paramedis seperti berikut:



Pada contoh di atas terlihat bahwa seorang Dokter memiliki hubungan Bidirectional Association dengan Paramedis.


Hubungan object yang memiliki bidirectional association direalisasikan dengan korespondensi attribute dari object key yang berhubungan. Selain korespondensi attribute, kedua object harus memiliki akses menggunakan method ke masing-masing object.


Berikut ini adalah contoh kode program dari contoh kasus Dokter dengan Paramedis tersebut:


  1. package appdokter;
  2. /**
  3. * @author Team_dakoop
  4. */
  5. import com.db4o.*;
  6. public class Dokter {
  7. String IdDokter;
  8. String NamaDokter;
  9. String Spesialis;
  10. String IdParamedis;
  11. public Dokter(String idDok, String Nama, String spe)
  12. {
  13. this.IdDokter = idDok;
  14. this.NamaDokter = Nama;
  15. this.Spesialis = spe;
  16. }
  17. public String getIdDokter(){
  18. return IdDokter;
  19. }
  20. public String getNamaDokter(){
  21. return NamaDokter;
  22. }
  23. public String getSpeDokter(){
  24. return Spesialis;
  25. }
  26. public ObjectSet getParamedis(){
  27. ObjectSet Hasil;
  28. ObjectContainer db= Db4o.openFile("Dokter.yap");
  29. Paramedis asisten = new Paramedis (IdDokter,
  30. null,null);
  31. try
  32. {
  33. Hasil = db.get(asisten);
  34. }
  35. finally
  36. {
  37. db.close();
  38. }
  39. return Hasil;
  40. }
  41. }


Membuat Class Paramedis


  1. package appdokter;

  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;

  7. public class Paramedis {
  8. String IdDokter;
  9. String IdPar;
  10. String NamaPar;

  11. public Paramedis(String idPar, String Nama,
  12. String idDokter)
  13. {
  14. this.IdPar=idPar;
  15. this.NamaPar = Nama;
  16. this.IdDokter = idDokter;
  17. }
  18. public String getIdParamedis(){
  19. return IdPar;
  20. }
  21. public String getNamaParamedis(){
  22. return NamaPar;
  23. }
  24. public ObjectSet getDokter()
  25. {
  26. ObjectSet Hasil;
  27. ObjectContainer db = Db4o.openFile("Dokter.yap");
  28. Dokter asisten = new Dokter(IdDokter,null, null);
  29. try
  30. {
  31. Hasil = db.get(asisten);
  32. }
  33. finally
  34. {
  35. db.close();
  36. }
  37. return Hasil;
  38. }
  39. }


Pada main program


  1. package appdokter;

  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;

  7. public class Main {

  8. /**
  9. * @param args the command line arguments
  10. */
  11. public static void main(String[] args) {
  12. // TODO code application logic here
  13. ObjectContainer db = Db4o.openFile("Dokter.yap");
  14. try
  15. {
  16. db.set(new Dokter("111","Dr. Hadi","Jantung"));
  17. db.set(new Dokter("222","Dr. Agus","Kulit"));
  18. db.set(new Dokter("333","Dr. Budi","Kelamin"));

  19. db.set(new Paramedis("P01","Susi","222"));
  20. db.set(new Paramedis("P02","Maya","222"));
  21. db.set(new Paramedis("P03","Astuti","111"));
  22. db.set(new Paramedis("P04","Anita","333"));
  23. db.set(new Paramedis("P05","Dewi","111"));
  24. db.set(new Paramedis("P06","Sinta","111"));
  25. System.out.println("Object dokter dan Paramedis sudah tersimpan..");
  26. }
  27. finally
  28. {
  29. db.close();
  30. }
  31. }
  32. }



Hasil Object Database Menggunakan Object Manager



Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta





Relationship/Association pada Object Database Db4o - Section 1

Hubungan yang terjadi antara object yang satu dengan yang lainnya disebut relationship

Relationship antar object terdiri atas 3, yaitu:

  • Association

  • Inheritance (is–a)

  • Aggregation (part-of)


Association

Association/Relationship memiliki jenis-jenis, antara lain:

  • One-to-One Relationship

  • One-to-Many Relationship

  • Many-to-Many Relationship


One-to-One Relationship

One-to-One Relationship merupakan bentuk hubungan asosiasi antar object yang sifatnya satu arah. One-to-one relationship juga disebut dengan Navigation Association atau Unidirectional Association.

Misalkan Relationship antara Suami dan Istri seperti berikut:



Terlihat bahwa Seorang suami hanya mempunyai seorang Istri . Dalam hubungan struktur ini, seorang Suami hanya dapat mengetahui Istrinya, namun tidak untuk sebaliknya.


Berikut ini adalah contoh kode program dari contoh kasus Suami Istri tersebut:


Membuat Class Istri

  1. package married;
  2. /**
  3. @author Team_dakoop
  4. */
  5. public class Istri {
  6. String NamaIstri;
  7. String NamaSuami;
  8. String TanggalMenikah;
  9. public Istri(String Nama, String Suami,
  10. String TglMenikah)
  11. {
  12. this.NamaIstri= Nama;
  13. this.NamaSuami = Suami;
  14. this.TanggalMenikah = TglMenikah;
  15. }
  16. }

Membuat Class Suami
  1. import com.db4o.*;
  2. public class Suami {
  3. String NamaSuami;
  4. public Suami(String Nama){
  5. this.NamaSuami = Nama;
  6. }
  7. public String getIstri()
  8. {
  9. ObjectContainer db = Db4o.openFile("Married.yap");
  10. Istri istri = new Istri(null,NamaSuami,null);
  11. try
  12. {
  13. ObjectSet Hasil = db.get(istri);
  14. istri = (Istri) Hasil.next();
  15. }
  16. finally
  17. {
  18. db.close();
  19. }
  20. return istri.NamaIstri;
  21. }
  22. }


Pada main program


  1. package married;
  2. /**
  3. *
  4. * @author Team_dakoop
  5. */
  6. import com.db4o.*;
  7. import java.*;
  8. public class Main {
  9. public static void main(String[] args) {
  10. ObjectContainer db = Db4o.openFile("Married.yap");
  11. try
  12. {
  13. db.set(new Suami("Anton"));
  14. db.set(new Istri("Marta","Anton",
  15. "29-08-2007"));
  16. db.set(new Suami("Hasan"));
  17. db.set(new Istri("Sinta","Hasan",
  18. "12-03-2008"));
  19. System.out.println("Pasangan Suami Istri");
  20. }
  21. finally
  22. {
  23. db.close();
  24. }
  25. }
  26. }

Hasil Object Database Menggunakan Object Manager



Referensi

Db4o-5.2 Tutorial, db4objects Inc., USA


Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object Database, PT Elex Media Komputindo, Jakarta





Akses Database melalui Torque - Bag 2








Compile

Compile dengan javac …

$ javac -sourcepath java/ -d java/ java/app/EmployeeApp.java


Launch

Launch dengan java …

$ java app.EmployeeApp


Sumber : IlmuKomputer.Com


Lisensi Dokumen:

Copyright © 2003 IlmuKomputer.Com

Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.


Eko Budhi Suprasetiawan

ekobs@developerforce.net

(*) Kerjasama IlmuKomputer.Com dan DeveloperForce.Net