Anda di halaman 1dari 50

PETUNJUK PRAKTIKUM

BASISDATA BERORIENTASI OBJEK

Revisi ke 1
MEI 2013

Disusun oleh :
ALI TARMUJI

Laboratorium Basis Data


Program Studi Teknik Informatika
Fakultas Teknologi Industri
Universitas Ahmad Dahlan
PETUNJUK PRAKTIKUM
BASISDATA BERIORIENTASI OBJEK
PP/018/TG18558/Semester Ke-/Revisi Ke-1

Disusun oleh :
ALI TARMUJI

Laboratorium Basis Data


Program Studi Teknik Informatika
Fakultas Teknologi Industri
UNIVERSITAS AHMAD DAHLAN
2013

i
SEJARAH REVISI PETUNJUK PRAKTIKUM

Nama Petunjuk Praktikum : Basisdata Berorientasi Objek


Semester :
Program Studi : Teknik Informatika
Fakultas : Teknolog Industri

REVISI TANGGAL URAIAN REVISI


KE REVISI
30 Maret
0 Penyusunan edisi pertama
2010
Penyesuaian dengan format baru
20 Mei
1 Penambahan lembar
2013
jawab post test

ii
IDENTITAS PRAKTIKAN
Nama : .....................................................................
NIM : .......................
Alamat :
..................................................................
...........
.....................................................................
........
Tel./HP : ......................................................
Email :
..................................................................
.....
Web/Blog :
..................................................................
...........
Kelas/Hari/Jam Teori : .........../...................../.....................
Kelas/Hari/Jam Praktikum : ........../...................../.......................

Yogyakarta, ..............................
Mengetahui Asisten Lab, Praktikan,

........................................... ................................................

iii
Daftar Isi

Halaman Judul Petunjuk Praktikum .......................................................... i


Sejarah Revisi Petunjuk Praktikum .......................................................... ii
Identitas Praktikan ................................................................................... iii
Daftar Isi .................................................................................................. iv
Kata Pengantar .......................................................................................... v

1. Object-Relational Database dengan Object Database Persistent ....... 1


2. Pengenalan DB4O dan Instalasinya ................................................... 6
3. Relationship DB4O (Association: Relasi One-to-One).................... 10
4. Relationship DB4O (Association: Relasi One-to-Many) ................. 14
5. Relationship DB4O (Association: Relasi Many-to-Many) .............. 18
6. Relationship DB4O (Relasi Agregation) .......................................... 22
7. Relationship DB4O (Inheritance-Pewarisan) ................................... 26
8. Sorting pada DB4O........................................................................... 30
9. Object Query di DB4O ..................................................................... 37
10. Native Query di DB4O ..................................................................... 42

iv
Kata Pengantar

Alhamdulillah, petunjuk Praktikum Basis Data Berorientasi Objek


(BDBO) atau lebih dikenal dengan istilah Database Object Oriented
Databse (OODB) ini dapat terselesaikan hingga tahap revisinya. Secara
garis besar materi yang terkandung dalam edisi revisi ini tidak jauh berbeda
dengan edisi sebelumnya, memang ada beberapa benambahan rincian
materi dan pengelompokan rincian tugas dan pelaksanaan praktikum di tiap
pertemuan. Edisi revisi ini juga dilakukan untuk penyesuaian dengan
format yang sudah distandarkan berbasis ISO.
Secara garis besar isi yang termuat dalam edisi revisi ini antara lain
akan membahas materi di tiap pertemuannya sebagai berikut:
1. Object-Relational Database dengan Object Database Persistent
2. Pengenalan DB4O dan Instalasinya
3. Relationship DB4O (Association: Relasi One-to-One)
4. Relationship DB4O (Association: Relasi One-to-Many)
5. Relationship DB4O (Association: Relasi Many-to-Many)
6. Relationship DB4O (Relasi Agregation)
7. Relationship DB4O (Inheritance-Pewarisan)
8. Sorting pada DB4O
9. Object Query di DB4O
10.Native Query di DB4O

Semoga dengan adanya petunjuk praktikum ini, praktikum Basis


Data Berorientasi Objek (BDBO) dapat dilaksanakan untuk membekali
mahasiswa dalam menguasai mata kuliah yang diambilnya, sehingga dapat
digunakan untuk meningkatkan kemampuan penggunaan database bagi
mereka.
Terima kasih diucapkan kepada para kontributor dan pihak-pihak
yang terlibat dalam terwujudnya penyusunan edisi revisi petunjuk
praktikum ini.

Yogyakarta, 20 Mei 2013

Penyusun

v
Object-Relational Database
Dengan Object Database Persistent

Pertemuan ke :I
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu mengenal salah satu pengelolaan database
bertipe objek tingkat awal
2. Mahasiswa mampu menggunakan salah satu tools untuk
menerapkan konsep objek ke dalam pengelolaan database,
dalam hal ini ORDB
3. Mahasiswa mampu menggunakan Object Database Persistent
dalam pemrogaman

Indikator : 1. Menggunakan tools pengelolaan database bertipe objek tingkat


awal.
2. Membuat program database sederhana menggunakan object
database persistent.

A. Teori Pendukung
1. Pengertian OODB dan Object Persistent
Persistent merupakan Sistem Object Oriented Database sederhana untuk
Java/.Net. Object Oriented di sini maksudnya bahwa Persistent dapat melakukan
store/load object secara langsung. Sasaran dari Persistent adalah menyediakan bagi
programmer suatu mekanisme yang sesuai dan powerful terhadap data yang dalam
jumlah besar. Beberapa asumsi dasar yang menentukan desain dari Persistent, antara
lain:
a. Object persistent dapat diakses dalam cara yang sama sebagai object sementara
b. Engine database dapat lebih mudah dikelola secara efisien untuk data yang
banyak dan dapat sesuai di memori utama
c. tidak perlu preprocessor yang khusus, compiler, virtual machine atau tools
lainnya yang seharusnya diperlukan pada database dan untuk mengembangkan
aplikasi yang menggunakannya.

2. Menyimpan Object ke dalam database


Sasaran utama dari Persistent adalah memandu programmer untuk bekerja
dengan object persistent dengan cara yang dimungkinkan sama dengan object
sementara secara normal. Bagaimanapun, persistensi memiliki aspek yang tidak dapat
disembunyikan bagi programmer. Sebagai contoh, suatu penyimpanan Persistent di
mana object-object akan disimpan perlu dispesifikasikan, dan konsistensi data perlu
disediakan. Dengan Persistent, task-task tersebut dilakukan oleh class Storage. Class
ini merupakan class abstract dan programmer wajib menggunakan class
storageFactory untuk membuat instance storage.
// get instance of the storage
Storage db = StorageFactory.getInstance().createStorage();

Jika instance storage sudah dibuat, maka storage dapat di-Open:


// open the database
db.open("test.dbs", pagePoolSize);

Petunjuk Praktikum BDBO 1


Dapat dimungkinkan penggunaan Persistent sebagai memori internal database, di mana
semua data disimpan dan dikelola pada memori utama. Hal ini memerlukan penggunaan
class stub NullFile dan menspesifikasikan INFINITE_PAGE_POOL sebagai
pagepoolsize.
db.open(new NullFile(),Storage.INFINITE_PAGE_POOL);

Jika aplikasi menggunakan suatu database Persistent diakhiri, database tersebut perlu
ditutup menggunakan method Storage.close()
// get instance of the storage
Storage db = StorageFactory.getInstance().createStorage();
db.open("test.dbs", pagePoolSize); // Open the database
// do something with the database
db.close(); // ... and close it

3. Root Object
Setelah instance storage dibuka, database dapat diakses object persistentnya.
Ketika aplikasi mengakses object secara normal, aplikasi menggunakan referensi agar
object tetap berada pada variable program atau dalam field-field dari object lain. Tetapi
jika membuka suatu database yang terdiri dari object persistent, aplikasi tidak akan
mereferensi ke object tersebut.
Suatu mekanisme diperlukan untuk mendapatkan referensi dan Persistent
menyediakannya untuk dapat digunakan yang disebut root object. Suatu storage hanya
memiliki satu root object. Untuk membuat root object digunakan method
Storage.getRoot.
1. MyRootClass root = (MyRootClass)db.getRoot();// get storage root
2. if (root == null) {
3. // Root is not yet defined: storage is not initialized
4. root = new MyRootClass(db); // create root object
5. db.setRoot(root); // register root object
6. }

B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :


1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai pemahaman awal
sebelum praktikum:
a. Apa perbedaan yang signifikan antara ORDB (Object-Relational Database) dengan RDB
(Relational Database)?
b. Apa kelebihan Object Database Persistent disbanding database lain?
c. Apa kekurangan Object Database Persistent disbanding database lain?
d. Kompleksitas database yang ditangani persistent sejauh mana?
e. Sebutkan ODBMS (atau sejenisnya) yang menggunakan konsep object relational selain
persistent.

2. Tahapan melaksanakan Praktikum


Untuk dapat menggunakan objek database persistent ini terlebih dahulu harus
dilakukan instalasi/pemasangan OODBMS tersebut ke sebuah IDE yang akan dipakai
(JAVA/.NET). Khusus untuk object database persistent ini sudah include dalam instalasi
standar Netbeans. Sehingga programmer tinggal menambahkan di library projek yang akan
dibuatnya.

Petunjuk Praktikum BDBO 2


Untuk lebih memahami keberadaan Object Database Persistent ini praktikan dapat
melakukan programming seperti listing berikut (atau disesusaikan dengan kondisi lab). Berikut
beberapa listing untuk penggunaan Object Database Persistent.
a. Class Barang.java
1 package coba01;
2 import org.garret.perst.*;
3 public class Barang extends Persistent {
4 String KodeBarang;
5 String NamaBarang;
6 String Jenis;
7 double HargaSatuan;
8 String Supplier;
9 public Barang(String kd,String nm, String jns, double hrg, String sup){
10 this.KodeBarang = kd; this.NamaBarang = nm; this.Jenis =jns; this.HargaSatuan =hrg;
11 this.Supplier = sup;}
12 public String getKodeBarang(){ return KodeBarang;}
13 public String getNamaBarang(){return NamaBarang;}
14 public String getJenis(){ return Jenis;}
15 public double getHarga(){ return HargaSatuan;}
16 public String getSupplier(){return Supplier;}
17 public String toString(){ return KodeBarang+"/"+NamaBarang+"/"+Jenis+"/"+
String.valueOf(HargaSatuan)+"/"+Supplier; }
18 }

b. Class main.java
1 package coba01;
2 import java.io.File;
3 import org.garret.perst.*;
4 import java.util.*;
5 public class Main {
6 public static void main(String[] args) {
7 new File("Barang.dbs").delete();
8 Storage db = StorageFactory.getInstance().createStorage();
9 db.open("Barang.dbs");
10 IPersistentSet root = (IPersistentSet)db.getRoot();
11 if (root == null) { root = db.createSet();db.setRoot(root);}
12 root.add(new Barang("M33","Mie Goreng Ayam","Mie",1200,"Fastfood"));
13 root.add(new Barang("S03","Sun Silk","Shampo",6500,"UniClean"));
14 root.add(new Barang("M11","Mie Goreng Ayam","Mie",1000,"FlyFood"));
15 root.add(new Barang("K31","Kopi cap API","Kopi",2700,"Obor"));
16 root.add(new Barang("T01","Teh Aroma Wangi","Teh",4500,"UniClean"));
17 root.add(new Barang("M02","Soto Mie","Mie",1100,"Fastfood"));
18 root.add(new Barang("M51","Mie Kari","Mie",1300,"FlyFood"));
19 root.add(new Barang("K21","Kopi cap Wangi","Kopi",7500,"Uniclean"));
20 root.add(new Barang("T05","Teh T-Melati","Teh",5500,"Obor"));
21 root.add(new Barang("M82","Mie Bakso","Mie",1200,"Fastfood"));
22 System.out.println("Object sudah persistent dalam Database");
23 Iterator iterator = root.iterator();
24 while (iterator.hasNext()) { System.out.println(iterator.next());}
25 db.close();}}

Petunjuk Praktikum BDBO 3


c. Hasil keluaran:

Object sudah persistent dalam Database


M33/Mie Goreng Ayam/Mie/1200.0/Fastfood
S03/Sun Silk/Shampo/6500.0/UniClean
M11/Mie Goreng Ayam/Mie/1000.0/FlyFood
K31/Kopi cap API/Kopi/2700.0/Obor
T01/Teh Aroma Wangi/Teh/4500.0/UniClean
M02/Soto Mie/Mie/1100.0/Fastfood
M51/Mie Kari/Mie/1300.0/FlyFood
K21/Kopi cap Wangi/Kopi/7500.0/Uniclean
T05/Teh T-Melati/Teh/5500.0/Obor
M82/Mie Bakso/Mie/1200.0/Fastfood

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
1. Lakukan eksplorasi lebih jauh (mendalam) tentang kelebihan dan kekurangan Obect
Database Persistent dibanding dengan OODBMS lain dalam hal pengelolaan database
yang berbasis ORDB.
2. Berikan ulasan mengenai Object Database Persistent dalam hal pemakaian untuk
pembuatan project baru dibanding dengan OODBMS lain.
3. Buatlah aplikasi kecil yang mampu memanfaatkan Object Database Persistente dan
catat keberhasilannya hingga data tertampilkan.

Petunjuk Praktikum BDBO 4


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta,
.
Asisten Praktikum

<>
Jawaban Postest

D. Referensi
1. Irwanto, Djon., 2007, Membangun Object Oriented Software dengan Java dan Object
Database, PT Elex Media Komputindo, Jakarta
2. McObject, 2008, Perst TM Introduction and Tutorial.

Petunjuk Praktikum BDBO 5


Pengenalan DB4O dan Instalasinya
Pertemuan ke : II
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu memasangkan DB4O ke dalam salah satu
IDE Pemrograman (Netbeans).
2. Mahasiswa mampu mengeksplorasi fitur-fitur DB4O dalam
penanganan database.
3. Mahasiswa mampu mengerti dan memahami struktur DB4O
yang selanjutnya dapat menggunakannya dalam aplikasi
sederhana.

Indikator : 1. Memanggunakan IDE Java (Netbeans)


2. Memasang (menginstal) DB4O ke salah satu IDE Java
(Netbeans).
3. Mengeksplorasi fitur-fitur DB4O.
4. Menggunakan DB4O dalam salah satu IDE Java (Netbeans)
untuk membuat database sederhana.

A. Teori Pendukung
Db4O (Database for Object) merupakan OODBMS (Object Oriented Database
Management System) yang hadir dalam 2 versi yaitu versi Komersial dan GPL, serta
berjalan di dua platform Java dan dotNet. Keunikan dari Db4o adalah Db4o sebagai
native object database sehingga sangat ideal untuk di-embed ke dalam equipment atau
device, baik mobile, desktop, dan server platform.
Footprint Db4o dapat dibilang cukup kecil sehingga membuat Db4o lebih
efektif untuk di-embed ke dalam device yang memiliki kapasitas memori yang kecil.
Walaupun memiliki footprint yang kecil, class library Db4o menyediakan fitur-fitur
yang lengkap. Seperti Concurrency control, replikasi data, dan native query, serta
fasilitas lainnya.
Sistem Db4o tidak banyak membutuhkan administrasi sehingga db4o cocok jika di-
embed ke dalam aplikasi.

B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :


1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai
pemahaman awal (pre test) sebelum praktikum:
a. Apa perbedaan yang signifikan antara DB4O dengan JDO/Object
Persistent?
b. Apa kelebihan DB4O dibanding OODBMS lainnya?
c. Apa kekurangan DB4O disbanding dengan OODBMS lainnya?
d. Kompleksitas database yang ditangani DB4O sejauh mana?

2. Tahapan melaksanakan Praktikum


Untuk dapat menggunakan database DB4O ini terlebih dahulu harus dilakukan
instalasi/pemasangan OODBMS tersebut ke sebuah IDE yang akan dipakai
(JAVA/.NET).
Praktikan dapat melakukan langkah-langkah berikut untuk proses instalasi DB4O:
a. Mendownload DB4O dari www.db4o.com

Petunjuk Praktikum BDBO 6


b. Mengekstrak/memekarkan file kompresi DB4O ke folder yang sesuai (library
dari IDE yang bersangkutan).
c. Melalui IDE Netbeans setiap akan membuat project baru, pada bagian
Librariesnya klik kanan folder tersebut dan pilih Add Jar
d. Setelah menu pop up Add Jar diklik, maka akan muncul dialog yang
menanyakan di mana lokasi file jar berada.
e. Langkah selanjutnya cari lokasi
drive dan folder di mana Db4O
diinstal.

Struktur file JAR DB4O yang


telah terinstall di folder tertentu

f. Setelah ketemu, masuklah ke


folder tersebut dan cari ke
dalam folder Lib dan akan
ditemukan beberapa file JAR di
dalamnya.
g. Pilihlah salah satu file jar Db4o
Engine Class Library tersebut.

Tools tambahan untuk


pengelolaan database yang
menggunakan DB4O adalah DB4O
object manager. Db4o Object Manager
merupakan suatu Tool GUI (Graphical
User Interface) untuk membrowsing
dan meng-Query isi dari setiap file database db4o. Object manager perlu didownload
terpisah dari distribusi Db4o-nya, namun versi 7.12 ini sudah dijadikan dalam satu
paket distribusi yaitu ada di folder OME (Object Manager Enterprise).
Distribusi Object manager yang disediakan antara lain:
a. db4o ObjectManager for Windows IKVM (Java VM included)
b. db4o ObjectManager for Windows no Java VM
c. db4o ObjectManager for Linux

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/
tugas praktikum:
a. Lakukan eksplorasi lebih jauh (mendalam) tentang kelebihan dan kekurangan
DB4O dibanding dengan OODBMS lain dalam hal pengelolaan database.
b. Berikan ulasan mengenai DB4O dalam hal pemakaian untuk pembuatan project
baru dibanding dengan OODBMS lain.
c. Buatlah aplikasi kecil yang mampu memanfaatkan DB4O dan catat
keberhasilannya hingga data.

Petunjuk Praktikum BDBO 7


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta, .
Asisten Praktikum

<>

Jawaban Postest

D. Referensi
1. http://www.db4o.com
2. http://www.odbmg.com

Petunjuk Praktikum BDBO 8


Relationship DB4O
(Association: Relasi One-to-One)

Pertemuan ke : III
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu memahami konsep relasi association tipe
one-to-one yang ada di DB4O.
2. Mahasiswa mampu menggunakan konsep relasi association tipe
one-to-one di DB4O dalam program sederhana.
3. Mahasiswa mampu engeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya relasi association tipe one-to-
one.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
database sederhana khususnya relasi association tipe one-to-
one.

Indikator : 1. Mengeksplorasi Fitur DB4O untuk pengelolaan database


bertipe association one-to-one.
2. Menggunakan DB4O untuk membuat relasi association tipe
one-to-one dalam database sederhana.

A. Teori Pendukung
Hubungan yang terjadi antara object yang satu dengan yang lainnya disebut
relationship. Relationship antarobject terdiri atas 3, yaitu:
a. Association asosiasi
b. Inheritance (isa) warisan dari
c. Aggregation (part-of) bagian dari

Association merupakan relationship yang memiliki jenis-jenis, antara lain:


a. One-to-One Relationship
b. One-to-Many Relationship
c. Many-to-Many Relationship

Praktikum pertemuan ini akan membahas tentang relationship jenis association


bertipe one-to-one 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.

B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :


Petunjuk Praktikum BDBO 9
1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai
pemahaman awal (pre test) sebelum praktikum:
a. Apa yang dimaksud dengan relationship dalam database?
b. Apa yang dimaksud relasi berjenis one to one dalam database?
c. Apa yang dimaksud relasi association?
d. Sebutkan contoh dalam dunia nyata hubungan association.

2. Tahapan melaksanakan Praktikum


Berikut ini beberapa listing yang bisa digunakan oleh praktikan untuk mencoba
menerapkan konsep relasi association berjenis one to one dalam pemrograman
sederhana.
Membuat Class Istri
1. package married;
2. public class Istri {
3. String NamaIstri;
4. String NamaSuami;
5. String TanggalMenikah;
6. public Istri(String Nama, String Suami,
7. String TglMenikah){
8. this.NamaIstri= Nama;
9. this.NamaSuami = Suami;
10. this.TanggalMenikah = TglMenikah;}}

Membuat Class Suami


1. import com.db4o.*;
2. public class Suami { String NamaSuami;}
3. public Suami(String Nama){ this.NamaSuami = Nama;}
4. public String getIstri(){ObjectContainer db = Db4o.openFile("Married.yap");
5. Istri istri = new Istri(null,NamaSuami,null);
6. Try{ ObjectSet Hasil = db.get(istri); istri = (Istri) Hasil.next();}
7. Finally{ db.close();}
8. return istri.NamaIstri;}}
Pada main program
1. package married;
2. import com.db4o.*; import java.*;
3. public class Main {
4. public static void main(String[] args) {
5. ObjectContainer db = Db4o.openFile("Married.yap");
6. Try{
7. db.set(new Suami("Anton"));
8. db.set(new Istri("Marta","Anton",
9. "29-08-2007"));
10. db.set(new Suami("Hasan"));
11. db.set(new Istri("Sinta","Hasan",
12. "12-03-2008"));
13. System.out.println("Pasangan Suami Istri");}
14. Finally{ db.close();}
15. }}

Petunjuk Praktikum BDBO 10


Hasil Object Database Menggunakan Object Manager

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
a. Carilah perbedaan relasi one to one di jenis association dalam DB4O dengan ODBMS
lain.
b. Buat aplikasi sederhana menggunakan konsep association one-to-one.

Petunjuk Praktikum BDBO 11


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta, .
Asisten Praktikum

<>

Jawaban Postest

D. Referensi
1. http://www.db4o.com
2. http://www.odbmg.com

Petunjuk Praktikum BDBO 12


Relationship DB4O
(Association: Relasi One-to-Many)

Pertemuan ke : IV
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu memahami konsep relasi association tipe
one-to-many yang ada di DB4O.
2. Mahasiswa mampu me enggunakan konsep relasi association
tipe one-to-many di DB4O dalam program sederhana.
3. Mahasiswa mampu mengeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya relasi association tipe one-to-
many.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
database khususnya relasi association tipe one-to-many.

Indikator : 1. Mengeksplorasi Fitur DB4O untuk pengelolaan database


bertipe association one-to-many.
2. Menggunakan DB4O untuk membuat relasi association tipe
one-to-many dalam database sederhana.

A. Teori Pendukung
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.

B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :


1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai pemahaman
awal (pre test) sebelum praktikum:
a. Apa yang dimaksud relasi berjenis one-to-many dalam database?
b. Sebutkan contoh dalam dunia nyata hubungan association one-to-many.
2. Tahapan melaksanakan Praktikum
Berikut ini beberapa listing yang bisa digunakan oleh praktikan untuk mencoba
menerapkan konsep relasi association berjenis one-to-many dalam pemrograman
sederhana.
Membuat Class dokter
1. package appdokter;
2. import com.db4o.*;
3. public class Dokter {

Petunjuk Praktikum BDBO 13


4. String IdDokter;
5. String NamaDokter;
6. String Spesialis;
7. String IdParamedis;
8. public Dokter(String idDok, String Nama, String spe){
9. this.IdDokter = idDok;
10. this.NamaDokter = Nama;
11. this.Spesialis = spe;
12. }
13. public String getIdDokter(){return IdDokter;}
14. public String getNamaDokter(){return NamaDokter;}
15. public String getSpeDokter(){return Spesialis;}
16. public ObjectSet getParamedis(){ObjectSet Hasil;
17. ObjectContainer db= Db4o.openFile("Dokter.yap");
18. Paramedis asisten = new Paramedis (IdDokter, null,null);
19. try{ Hasil = db.get(asisten);}
20. finally { db.close();}
21. return Hasil;
22. }}}

Membuat Class Paramedis


1. package appdokter;
2. import com.db4o.*;
3. public class Paramedis {
4. String IdDokter; String IdPar; String NamaPar;
5. public Paramedis(String idPar, String Nama,
6. String idDokter){ this.IdPar=idPar; this.NamaPar = Nama;
7. this.IdDokter = idDokter;
8. }
9. public String getIdParamedis(){return IdPar;}
10. public String getNamaParamedis(){return NamaPar;}
11. public ObjectSet getDokter(){
12. ObjectSet Hasil;
13. ObjectContainer db = Db4o.openFile("Dokter.yap");
14. Dokter asisten = new Dokter(IdDokter,null, null);
15. Try{ Hasil = db.get(asisten);}
16. Finally { db.close();}
17. return Hasil;}}
Pada main program
1. package appdokter;
2. import com.db4o.*;
3. public class Main {
4. public static void main(String[] args) {
5. ObjectContainer db = Db4o.openFile("Dokter.yap");
6. Try{
7. db.set(new Dokter("111","Dr. Hadi","Jantung"));
8. db.set(new Dokter("222","Dr. Agus","Kulit"));
9. db.set(new Dokter("333","Dr. Budi","Kelamin"));
10. db.set(new Paramedis("P01","Susi","222"));
11. db.set(new Paramedis("P02","Maya","222"));
Petunjuk Praktikum BDBO 14
12. db.set(new Paramedis("P03","Astuti","111"));
13. db.set(new Paramedis("P04","Anita","333"));
14. db.set(new Paramedis("P05","Dewi","111"));
15. db.set(new Paramedis("P06","Sinta","111"));
16. System.out.println("Object dokter dan Paramedis sudah tersimpan..");
17. }
18. Finally{ db.close();}}}

Hasil Object Database Menggunakan Object Manager

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
c. Carilah perbedaan relasi one-to-one dengan one-to-many di jenis association dalam
DB4O.
d. Carilah perbedaan relasi one-to-many di jenis association dalam DB4O dengan ODBMS
lain.
e. Buat aplikasi sederhana menggunakan konsep association one-to-many.

Petunjuk Praktikum BDBO 15


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta,
.
Asisten Praktikum

<>

Jawaban Postest

D. Referensi
1. http://www.db4o.com
2. http://www.odbmg.com

Petunjuk Praktikum BDBO 16


Relationship DB4O
(Association: Relasi Many-to-Many)

Pertemuan ke :V
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu emahami konsep relasi association tipe
many-to-many yang ada di DB4O.
2. Mahasiswa mampu enggunakan konsep relasi association tipe
many-to-many di DB4O dalam program sederhana.
3. Mahasiswa mampu m engeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya relasi association tipe many-
to-many.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
database khususnya relasi association tipe many-to-many.
Indikator : 1. Mengeksplorasi Fitur DB4O untuk pengelolaan database
bertipe association many-to-many.
2. Menggunakan DB4O untuk membuat relasi association tipe
many-to-many dalam database sederhana.

A. Teori Pendukung
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, di
mana banyak anggota dapat meminjam
banyak buku.

B. Langkah Praktikum (sesuaikan


dengan mata praktikumnya) :
1. Mengadakan Pretest <alokasi
waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai
pemahaman awal (pre test) sebelum praktikum:
a. Apa yang dimaksud relasi berjenis many-to-many dalam database?
b. Sebutkan contoh dalam dunia nyata hubungan association many-to-many.

2. Tahapan melaksanakan Praktikum


Berikut ini beberapa listing yang bisa digunakan oleh praktikan untuk mencoba
menerapkan konsep relasi association berjenis many-to-many dalam pemrograman
sederhana.
Membuat Class Buku
1. package perpustakaan;
2. import com.db4o.*;
3. public class Buku { String KodeBuku; String Judul; String Pengarang; String Penerbit;
4. int TahunTerbit; Peminjaman pinjam;
5. public Buku(String kd, String jdl, String Pengarang,
6. String Penerbit, int thn){ this.KodeBuku = kd; this.Judul = jdl;
7. this.Pengarang = Pengarang; this.Penerbit = Penerbit; this.TahunTerbit = thn;
8. this.pinjam = null;}

Petunjuk Praktikum BDBO 17


9. public void SetPinjam(Peminjaman pinjam){ this.pinjam = pinjam;}
10. public Peminjaman getPinjam(){
11. ObjectContainer db = Db4o.openFile("Perpustakaan,yap");
12. pinjam = new Peminjaman(null,KodeBuku,null);
13. Try{ ObjectSet Hasil = db.get(pinjam); pinjam = (Peminjaman)Hasil.next();}
14. finally { db.close();}
15. return pinjam;}}

Membuat Class Anggota


1. package perpustakaan;
2. import com.db4o.*;
3. public class Anggota { String IdAnggota; String Nama; String Alamat;
4. Peminjaman pinjam;
5. public Anggota(String Id, String Nama, String lamat){ this.IdAnggota = Id;
6. this.Nama = Nama; this.Alamat = Alamat; this.pinjam=null;}
7. public void SetPinjam(Peminjaman pinjam){ this.pinjam = pinjam;}
8. public Peminjaman getPinjam(){
9. ObjectContainer db = Db4o.openFile("Perpustakaan,yap");
10. pinjam = new Peminjaman(IdAnggota,null,null);
11. Try{ ObjectSet Hasil = db.get(pinjam); pinjam = (Peminjaman)Hasil.next();}
12. finally { db.close();}
13. return pinjam;}}

Membuat Class Peminjaman


1. package perpustakaan;
2. public class Peminjaman { String IdAnggota; String KodeBuku; String tglPinjam;
3. public Peminjaman(String IdAnggota, String KodeBuku, String tglPinjam) {
4. this.IdAnggota= IdAnggota; this.KodeBuku = KodeBuku;
5. this.tglPinjam = tglPinjam;}}

Pada main program


1. package perpustakaan;
2. import com.db4o.*;
3. public class Main {
4. public static void main(String[] args) {
5. ObjectContainer db = Db4o.openFile("Perpustakaan.yap");
6. Anggota anggota1 = new Anggota("A02","Prasetio","Jalan Magelang");
7. Anggota anggota2 = new Anggota("A35","Antonius","Jalan Sagan");
8. Buku buku1 = new Buku("CS01","Swarm Intelligence","Eric B","Oxford university press",1999);
9. Buku buku2 = new Buku("CS05","Simulation","Steward K","Addison Wesley",2001);
10. Buku buku3 = new Buku("CS82","Genetic Algorithm","Andrew S","McGraw Hill",2003);
11. Buku buku4 = new Buku("CS34","Artificial Neural Net","Fausett", Prentice Hall",2002);
12. Peminjaman pinjam1 = new Peminjaman("A02","CS01","20-11-2008");
13. Peminjaman pinjam2 = new Peminjaman("A02","CS05","21-11-2008");
14. Peminjaman pinjam3 = new Peminjaman("A35","CS82","21-11-2008");
15. Peminjaman pinjam4 = new Peminjaman("A35","CS34","25-11-2008");
16. anggota1.SetPinjam(pinjam1); anggota1.SetPinjam(pinjam2);
17. anggota2.SetPinjam(pinjam3); anggota2.SetPinjam(pinjam4);
18. buku1.SetPinjam(pinjam1); buku2.SetPinjam(pinjam2);
19. buku3.SetPinjam(pinjam3); buku4.SetPinjam(pinjam4);
Petunjuk Praktikum BDBO 18
20. Try { db.set(anggota1); db.set(anggota2);
21. db.set(buku1); db.set(buku2);
22. db.set(buku3); db.set(buku4);
23. db.set(pinjam1); db.set(pinjam2);
24. db.set(pinjam3); db.set(pinjam4);
25. System.out.println("Data sudah tersimpan");}
26. Finally { db.close();}}}

Hasil Object Database Menggunakan Object Manager

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
1. Carilah perbedaan relasi one-to-one, one-to-many, dan many-to-many di jenis
association dalam DB4O.
2. Carilah perbedaan relasi many-to-many di jenis association dalam DB4O dengan
ODBMS lain.
3. Buat aplikasi sederhana menggunakan konsep association many-to-many.

Petunjuk Praktikum BDBO 19


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta, .
Asisten Praktikum

<>

Jawaban Postest

D. Referensi
a. http://www.db4o.com
b. http://www.odbmg.com

Petunjuk Praktikum BDBO 20


Relationship DB4O
(Relasi Agregation)
Pertemuan ke : VI
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu m Memahami konsep relasi tipe
agregation yang ada di DB4O.
2. Mahasiswa mampu m enggunakan konsep relasi aggregation
di DB4O dalam program sederhana.
3. Mahasiswa mampu m engeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya relasi agregation.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
khususnya relasi agregation.

Indikator : 1. Mengeksplorasi Fitur DB4O untuk pengelolaan database relasi


bertipe agregation.
2. Menggunakan DB4O untuk membuat relasi agregation dalam
database sederhana.

A. Teori Pendukung
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.

B. Langkah
Praktikum
(sesuaikan
dengan mata
praktikumnya) :
1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai pemahaman awal (pre
test) sebelum praktikum:
a. Apa yang dimaksud agregation dalam konsep object?
b. Sebutkan contoh dalam dunia nyata agregation.

2. Tahapan melaksanakan Praktikum


Berikut ini beberapa listing yang bisa digunakan oleh praktikan untuk mencoba menerapkan
konsep relasi agregation dalam pemrograman sederhana.

Petunjuk Praktikum BDBO 21


Membuat Class Computer
1. package computer;
2. public class Computer {
3. String IdComputer; String NamaComputer;
4. Processor processor; RAM ram; HardDisk HD;
5. public Computer(String id, String nama){
6. this.IdComputer = id; this.NamaComputer = nama;
7. this.processor = null; this.ram = null; this.HD = null;}
8. public void setProcessor(Processor processor){ this.processor = processor;}
9. public void setRAM(RAM ram){ this.ram = ram;}
10. public void setHD(HardDisk HD){ this.HD = HD;}}

Membuat Class Processor


1. package computer;
2. public class Processor { String Merk; int Kecepatan;
3. public Processor (String merk, int kecepatan){ this.Merk = merk;
4. this.Kecepatan = kecepatan;}}

Membuat Class RAM


1. package computer;
2. public class RAM { String Merk; int Kapasitas;
3. public RAM (String merk, int kapasitas){ this.Merk= merk; this.Kapasitas = kapasitas;
4. }}

Membuat Class HardDisk


1. package computer;
2. public class HardDisk { String Merk; int Kapasitas;}
3. public HardDisk(String merk, int kapasitas){ this.Merk = merk; this.Kapasitas= kapasitas;}
4. }

Pada bagian main program


1. package computer;
2. import com.db4o.*;
3. public class Main {
4. public static void main(String[] args) {
5. ObjectContainer db = Db4o.openFile("Computer.yap");
6. Computer komputer = new Computer("C03","Compaq 3736");
7. Processor processor = new Processor(
8. "Pentium 4 Core 2 Duo",2400); RAM ram = new RAM("DDR2 Visipro",2048);
9. HardDisk HD = new HardDisk("Fujitsu",160);
10. komputer.setProcessor(processor);
11. komputer.setRAM(ram);
12. komputer.setHD(HD);
13. db.set(komputer);
14. db.set(processor);
15. db.set(ram);
16. db.set(HD);
17. System.out.println(
18. "Object Komputer telah tersimpan");
19. db.close();

Petunjuk Praktikum BDBO 22


20. }
21. }

Hasil Object Database Menggunakan Object Manager

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
a. Carilah perbedaan relasi aggregation dengan inheritance dalam DB4O.
b. Buat aplikasi sederhana menggunakan konsep relasi agregation.

Petunjuk Praktikum BDBO 23


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta, .
Asisten Praktikum

<>

Jawaban Postest

D. Referensi
c. http://www.db4o.com
d. http://www.odbmg.com

Petunjuk Praktikum BDBO 24


Relationship DB4O
(Inheritance-Pewarisan)
Pertemuan ke : VII
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu emahami konsep relasi tipe inheritance
(pewarisan) yang ada di DB4O.
2. Mahasiswa mampu menggunakan konsep relasi inheritance di
DB4O dalam program sederhana.
3. Mahasiswa mampu m engeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya relasi inheritance.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
khususnya relasi inheritance.

Indikator : 1. Mengeksplorasi Fitur DB4O untuk pengelolaan database relasi


bertipe inheritance.
2. Menggunakan DB4O untuk membuat relasi inheritance dalam
database sederhana.

A. Teori Pendukung
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.

B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :


1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai pemahaman awal (pre
test) sebelum praktikum:
a. Apa yang dimaksud inheritance dalam konsep object?
Petunjuk Praktikum BDBO 25
b. Sebutkan contoh dalam dunia nyata inheritance.

2. Tahapan melaksanakan Praktikum


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. public class Person { String Nama; String Alamat; int umur;}
3. public Person(String nm, String alamat, int umur){ this.Nama = nm;
4. this.Alamat = alamat;
5. this.umur = umur;}
6. public String getNama(){return Nama;}
7. public String getAlamat(){return Alamat;}
8. public int getUmur(){return umur;}}}

Membuat Class Dosen


1. package Person;
2. public class Dosen extends Person { String IdDosen;
3. public Dosen(String id, Person orang){ super (orang.Nama, orang.Alamat, orang.umur);
4. this.IdDosen = id;}
5. public String getIdDosen(){return IdDosen;}}

Membuat Class Mahasiswa


1. package Person;
2. public class Mahasiswa extends Person { String NIM;
3. public Mahasiswa(String nim, Person orang){ super (orang.Nama, orang.Alamat, orang.umur);
4. this.NIM =nim;}
5. public String getNIM(){return NIM;}}

Pada bagian main program


1. package Person;
2. import com.db4o.*;
3. public class Main {
4. public static void main(String[] args) {
5. ObjectContainer db = Db4o.openFile("person.yap");
6. Person orang1 = new Person("Budi","Bandung",38);
7. Person orang2 = new Person("Maya","Surabaya",19);
8. Dosen dosen = new Dosen("D22",orang1);
9. Mahasiswa mhs = new Mahasiswa("PA/298",orang2);
10. db.set(orang1);
11. db.set(orang2);
12. db.set(dosen);

Petunjuk Praktikum BDBO 26


13. db.set(mhs);
14. db.close();
15. System.out.println("Data sudah tersimpan");
16. }}

Hasil output:

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
1. Carilah perbedaan relasi association dengan inheritance dalam DB4O.
2. Buat aplikasi sederhana menggunakan konsep relasi inheritance.

Petunjuk Praktikum BDBO 27


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta, .
Asisten Praktikum

<>
Jawaban Postest

D. Referensi
1. http://www.db4o.com
2. http://www.odbmg.com

Petunjuk Praktikum BDBO 28


Sorting pada DB4O
Pertemuan ke : VIII
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu memahami konsep sorting di DB4O.
2. Mahasiswa mampu menggunakan konsep sorting di DB4O
dalam program sederhana.
3. Mahasiswa mampu mengeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya materi terkait sorting.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
khususnya materi terkait sorting.

Indikator : 1. Mengeksplorasi Fitur DB4O untuk pengelolaan database


kasus sorting.
2. Menggunakan DB4O untuk membuat program kasus sorting
dalam database sederhana.

A. Teori Pendukung
Sorting (pengurutan) merupakan teknik dasar di dalam pengelolaan database
yang biasanya disertakan sebagai fasilitas dalam pengelolaan data. Sorting erat
kaitannya dengan index atau bagian yang menjadi dasar dalam pengurutan. Dan ada
dua jenis tipe sorting yaitu sorting secara ascending (dari terkecil) dan descending (dari
yang besar). Biasanya dalam pemrograman sudah disediakan suatu subrutin untuk
menangani hal itu. Dan termasuk di DBMS juga ada yang telah memberikan fasilitas
serupa. Sortir pada Object Db4o dapat menggunakan Object Query SODA API yang
telah disediakan oleh Db4o. Adapun penulisannya sebagai berikut:
1. Sort secara Ascending
a. Query query=db.query();
b. query.constrain(NamaClass.class);
c. query.descend("NamaAtribut").orderAscending();
d. ObjectSet result=query.execute();
2. Sort secara Descending
a. Query query=db.query();
b. query.constrain(NamaClass.class);
c. query.descend("NamaAtribut").orderDescending();
d. ObjectSet result=query.execute();
B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :
1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai pemahaman awal
(pre test) sebelum praktikum:
a. Apa yang dimaksud sorting/pengurutan data?
b. Apa maksud dari sorting berjenis ascending?
c. Apa maksud dari sorting berjenis descending?
d. Sebutkan contoh dalam dunia nyata penggunaan sorting.

Petunjuk Praktikum BDBO 29


2. Tahapan melaksanakan Praktikum
Berikut ini beberapa listing yang
bisa digunakan oleh praktikan untuk
mencoba menerapkan konsep sorting
dalam pemrograman sederhana.
Misalkan dalam suatu DBMS terdapat
tabel Barang seperti berikut:

Dari tabel tersebut, akan diurutkan


berdasarkan Nama barang dan Harga
secara Ascending dan Descending.
Lakukan beberapa langkah di bawah ini:
a. Kutiplah (copy-paste) listing kode
program dari Class Barang dari
Praktikum 1.
b. Buat desain form seperti yang
terlihat pada gambar berikut, pada
form (JFrame1) terdapat komponen-
komponen sebagai berikut:
JRadioButton (4 buah)
JButtonGroup (2 buah)
JPanel (2 buah)
JButton (1 buah)
JTabel (1 buah)

c. Sesuaikan penulisan ketentuan nama


komponen sebagai berikut untuk memudahkan pemahaman dalam pembuatan kode
program.
Komponen Text Name

JRadioButton1 Ascending optAsc

JRadioButton2 Descending optDsc

JRadioButton3 Nama Barang optNama

JRadioButton4 Harga Satuan optHarga

JFrame1 Aplikasi Barang FrmBarang

JButton1 Tampil cmdTampil

Petunjuk Praktikum BDBO 30


d. Jika komponen JButtonGroup sudah
diletakkan pada form (setelah peletakan ke
form tidak akan terlihat, namun pada bagian
Inspector akan kelihatan) maka klik pada
komponen optAsc dan optDsc kemudian pada
properties cari button group kemudian ubah
menjadi buttonGroup1. begitu juga untuk
komponen optNama dan optHarga.
e. Pada komponen JTabel, disesuaikan kolomnya
dengan Class Barang. Caranya pada bagian
properties Model, ditambahkan field-field
yang bersesuaian. Untuk lebih jelasnya lihat
pada gambar berikut:

f. Setelah mengubah nama setiap komponen maka sekarang saatnya masuk pada
proses Coding.
g. Di bawah package ketikkan perintah import berikut untuk menggunakan object
database Db4o dan unit-unit lainnya.

1. package appbarang
2. import com.db4o.*
3. import com.db4o.query.*
4. import java.io.File

h. Buatlah sebuah procedure untuk menginsert data ke dalam object database, kode
programmnya sebagai berikut:
1. public static void InsertData(){
2. new File("Barang.yap").delete();
3. ObjectContainer db = Db4o.openFile("Barang.yap");
4. Barang barang1 = new Barang("M33","Mie Goreng Ayam","Mie",1200,"Fastfood");
Barang barang2 = new Barang("S03","Sun Silk","Shampo",6500,"UniClean");
5. Barang barang3 = new Barang("M11","Mie Goreng Ayam","Mie",1000,"FlyFood");
Barang barang4 = new Barang("K31","Kopi cap API","Kopi",2700,"Obor");
6. Barang barang5 = new Barang("T01","Teh Aroma Wangi","Teh",4500,"UniClean");
7. Barang barang6 = new Barang("M02","Soto Mie","Mie",1100,"Fastfood");
8. Barang barang7 = new Barang("M51","Mie Kari","Mie",1300,"FlyFood");
9. Barang barang8 = new Barang("K21","Kopi cap Wangi","Kopi",7500,"Uniclean");
10. Barang barang9 = new Barang("T05","Teh T-Melati","Teh",5500,"Obor");
11. Barang barang10 = new Barang("M82","Mie Bakso","Mie",1200,"Fastfood");
Petunjuk Praktikum BDBO 31
12. db.set(barang1);db.set(barang2);
13. db.set(barang3);db.set(barang4);
14. db.set(barang5);db.set(barang6);
15. db.set(barang7);db.set(barang8);
16. db.set(barang9);db.set(barang10);
17. db.close();System.out.println("Data Barang
18. sudah tersimpan pada Object Database");}

i. Ketikkan lagi sebuah procedure yang gunanya untuk menampilkan record-record


ke dalam tabel grid, seperti listing berikut.
1. private void ShowTable(){
2. ObjectContainer db = Db4o.openFile("Barang.yap");
3. Try { Query qry = db.query();
4. qry.constrain(Barang.class);
5. ObjectSet res = qry.execute();
6. Object[][] x = new Object[res.size()][6];
7. jTable1.setModel(new javax.swing.table.DefaultTableModel(x, new String []
8. {"Kode Barang","Nama Barang","Jenis","Harga Satuan","Supplier"})); int y=0;
9. while (res.hasNext()){Barang b = (Barang) res.next();
10. jTable1.setValueAt(b.getKodeBarang() ,y,0);
11. jTable1.setValueAt(b.getNamaBarang() ,y,1);
12. jTable1.setValueAt(b.getJenis() ,y,2);
13. jTable1.setValueAt(String.valueOf(
14. b.getHarga()) ,y,3);
15. jTable1.setValueAt(b.getSupplier() ,y,4);
16. y++;}}
17. Finally{ db.close();}}

j. Ketikkan procedure yang sebenarnya pengembangan dari procedure sebelumnya,


yaitu digunakan untuk menampilkan tabel hasil sortir. Kode programnya sebagai
berikut:
1. private void SortTable(){
2. ObjectContainer db = Db4o.openFile("Barang.yap");
3. Try{ Query qry = db.query();
4. qry.constrain(Barang.class);
5. if (optNama.isSelected() == true ){
6. if (optAsc.isSelected() == true){
7. qry.descend(
8. "NamaBarang").orderAscending(); }
9. Else{ qry.descend("NamaBarang").orderDescending();}}
10. Else { if (optAsc.isSelected() == true){ qry.descend("HargaSatuan").orderAscending();}
11. Else { qry.descend("HargaSatuan").orderDescending();}
12. }
13. ObjectSet res = qry.execute();
14. Object[][] x = new Object[res.size()][6];
15. jTable1.setModel(
16. new javax.swing.table.DefaultTableModel(x, new String []
17. {"Kode Barang","Nama Barang","Jenis","Harga Satuan","Supplier"}));
18. int y=0;
19. while (res.hasNext()) { Barang b = (Barang) res.next();
Petunjuk Praktikum BDBO 32
20. jTable1.setValueAt(b.getKodeBarang() ,y,0);
21. jTable1.setValueAt(b.getNamaBarang() ,y,1);
22. jTable1.setValueAt(b.getJenis() ,y,2);
23. jTable1.setValueAt(String.valueOf(
24. b.getHarga()) ,y,3);
25. jTable1.setValueAt(b.getSupplier() ,y,4);
26. y++;}}
27. Finally { db.close();}}

k. Ketikkan program berikut pada event tombol Tampil.


1. private void cmdTampilActionPerformed(
2. java.awt.event.ActionEvent evt) {
3. // TODO add your handling code here:
4. SortTable();
5. }

l. Ketikkan kode program berikut dalam main.java:


1. package appbarang;
2. public class Main {
3. public static void main(String[] args) {
4. // TODO code application logic here
5. new FrmBarang().setVisible(true);
6. }}
m. Jalankan program dan amati asil output program, mungkin sama dengan gambar berikut:

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
a. Carilah perbedaan fasilitas sorting di DBMS biasa dengan OODBMS dalam hal ini
DB4O.
b. Buat aplikasi sederhana dengan mengembangkan beberapa listing di atas menjadi
aplikasi yang sempurna dan lengkap.

Petunjuk Praktikum BDBO 33


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta, .
Asisten Praktikum

<>
Jawaban Postest

D. Referensi
1. http://www.db4o.com
2. http://www.odbmg.com

Petunjuk Praktikum BDBO 34


Object Query di DB4O
Pertemuan ke : IX
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu memahami konsep query di DB4O.
2. Mahasiswa mampu menggunakan konsep query di DB4O
dalam program sederhana.
3. Mahasiswa mampu mengeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya materi terkait query objek.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
khususnya materi terkait query objek.

Indikator : 1. Mengeksplorasi fitur DB4O untuk pengelolaan database kasus


query objek.
2. Menggunakan DB4O untuk membuat program kasus query
objek dalam database sederhana.

A. Teori Pendukung
Db4O menyediakan tiga jenis Query yang dipakai untuk melakukan proses retrieving data
object dari database. Ketiga jenis object query itu antara lain:
Query by Example (QBE)
Native Queries (NQ)
SODA Query API (SODA)

B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :


1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai pemahaman awal (pre
test) sebelum praktikum:
a. Apa yang dimaksud query data?
b. Sebutkan perintah-perintah dasar query untuk DBMS secara umum
c. Disebut apakah bahasa yang dikhususkan untuk mengelola query?
d. Adakah bedanya query dengan RDBMS dan ODBMS?
e. Sebutkan beberapa perbedaan query di RDBMS dengan ODBMS
2. Tahapan melaksanakan Praktikum
Berdasarkan listing Class Barang di paktikum I disempurnakan menjadi listing di bawah ini, dan
program berikut menggunakan jenis object query SODA:
1. package barang;
2. import com.db4o.*; import com.db4o.query.*; import java.io.File;
3. public class Main {
4. public static void main(String[] args) { InsertData();
5. Query1();Query2();Query3();Query4();}
6. public static void InsertData(){new File("Barang.yap").delete();
7. ObjectContainer db = Db4o.openFile("Barang.yap");
8. Barang barang1 = new Barang("M33","Mie Goreng Ayam","Mie",1200,"Fastfood");
9. Barang barang2 = new Barang("S03","Sun Silk","Shampo",6500,"UniClean");
10. Barang barang3 = new Barang("M11","Mie Goreng Ayam","Mie",1000,"FlyFood");
11. Barang barang4 = new Barang("K31","Kopi cap API","Kopi",2700,"Obor");
12. Barang barang5 = new Barang("T01","Teh Aroma Wangi","Teh",4500,"UniClean");
13. Barang barang6 = new Barang("M02","Soto Mie","Mie",1100,"Fastfood");
14. Barang barang7 = new Barang("M51","Mie Kari","Mie",1300,"FlyFood");

Petunjuk Praktikum BDBO 35


15. Barang barang8 = new Barang("K21","Kopi cap Wangi","Kopi",7500,"Uniclean");
16. Barang barang9 = new Barang("T05","Teh T-Melati","Teh",5500,"Obor");
17. Barang barang10 = new Barang("M82","Mie Bakso","Mie",1200,"Fastfood");
18. db.set(barang1);db.set(barang2); db.set(barang3);db.set(barang4);
19. db.set(barang5);db.set(barang6); db.set(barang7);db.set(barang8);
20. db.set(barang9);db.set(barang10); db.close();
21. System.out.println("Data Barang sudah tersimpan pada Object Database");}
22. public static void Query1(){ObjectContainer db = Db4o.openFile("Barang.yap");
23. Query Qry = db.query();Qry.constrain(Barang.class);
24. ObjectSet Hasil = Qry.execute();
25. System.out.println("Query 1 : SELECT * FROM BARANG");
26. TampilSemua(Hasil);
27. db.close();}
28. public static void Query2(){
29. ObjectContainer db = Db4o.openFile("Barang.yap");
30. Query Qry = db.query();
31. Qry.constrain(Barang.class);
32. Qry.descend("Jenis").constrain("Mie");
33. ObjectSet Hasil = Qry.execute();
34. System.out.println("Query 2 :
35. SELECT * FROM Barang WHERE Jenis = 'Mie'");
36. TampilSemua(Hasil);
37. db.close();}
38. public static void Query3(){
39. ObjectContainer db = Db4o.openFile("Barang.yap");
40. Query Qry = db.query();
41. Qry.constrain(Barang.class);
42. Qry.descend("Jenis").constrain("Mie").not();
43. ObjectSet Hasil = Qry.execute();
44. System.out.println("Query 3 : SELECT KodeBarang, NamaBarang FROM Barang WHERE NOT (Jenis = 'Mie')");
45. System.out.println("Hasil : "+ Hasil.size()+" record");
46. while (Hasil.hasNext()){
47. Barang brg = (Barang)Hasil.next();
48. System.out.println(brg.getKodeBarang()+"/"+brg.getNamaBarang());
49. } db.close(); }
50. public static void Query4(){ObjectContainer db = Db4o.openFile("Barang.yap");
51. Query Qry = db.query();Qry.constrain(Barang.class);
52. Qry.descend("HargaSatuan").constrain(new Double(5000)).greater();
53. ObjectSet Hasil = Qry.execute();
54. System.out.println("Query 4 : SELECT NamaBarang, HargaSatuan FROM Barang WHERE HargaSatuan > 5000");
55. System.out.println("Hasil : "+ Hasil.size()+" record");
56. while (Hasil.hasNext()){
57. Barang brg = (Barang)Hasil.next();
58. System.out.println(brg.getNamaBarang()+"/"+String.valueOf(brg.getHarga()));
59. } db.close(); }
60. public static void TampilSemua(ObjectSet Hasil){
61. System.out.println("Hasil : "+ Hasil.size()+" record");
62. while (Hasil.hasNext()){System.out.println(Hasil.next());}}}

Petunjuk Praktikum BDBO 36


Listing di atas akan menghasilkan tabel barang seperti gambar di praktikum VIII
menampilkan seluruh data dari tabel tersebut. Suatu ketika kita ingin menampilkan sebagian
saja data dan teknik ini di dalam pengelolaan database dilakukan dengan cara query, berikut
contoh kasus untuk mendapatkan data dengan cara query:
1. Menampilkan semua kolom dari Tabel tersebut
SQL RDBMS OQL ODBMS
SELECT * Query Qry = db.query(); Qry.constrain(Barang.class);
FROM BARANG; while (Hasil.hasNext()){System.out.println(Hasil.next());}
Output:
M82/Mie Bakso/Mie/1200.0/Fastfood
T05/Teh T-Melati/Teh/5500.0/Obor
K21/Kopi cap Wangi/Kopi/7500.0/Uniclean
M51/Mie Kari/Mie/1300.0/FlyFood
M02/Soto Mie/Mie/1100.0/Fastfood
T01/Teh Aroma Wangi/Teh/4500.0/UniClean
K31/Kopi cap API/Kopi/2700.0/Obor
M11/Mie Goreng Ayam/Mie/1000.0/FlyFood
S03/Sun Silk/Shampo/6500.0/UniClean
M33/Mie Goreng Ayam/Mie/1200.0/Fastfood

2. Menampilkan semua kolom dari Tabel tersebut yang jenis barangnya berupa Mie.
SQL RDBMS OQL ODBMS
SELECT * Query Qry = db.query();Qry.constrain(Barang.class);
FROM BARANG Qry.descend("Jenis").constrain("Mie");
WHERE Jenis = Mie; while (Hasil.hasNext()){System.out.println(Hasil.next());}
Output:
M82/Mie Bakso/Mie/1200.0/Fastfood
M51/Mie Kari/Mie/1300.0/FlyFood
M02/Soto Mie/Mie/1100.0/Fastfood
M11/Mie Goreng Ayam/Mie/1000.0/FlyFood
M33/Mie Goreng Ayam/Mie/1200.0/Fastfood

3. Menampilkan kode barang dan nama barang dari Tabel tersebut yang jenis barangnya
selain Mie.
SQL RDBMS OQL ODBMS
SELECT KodeBarang, Query Qry = db.query();Qry.constrain(Barang.class);
NamaBarang Qry.descend("Jenis").constrain("Mie").not();
FROM BARANG while (Hasil.hasNext()){ Barang brg = (Barang)Hasil.next();
WHERE NOT (Jenis = Mie); System.out.println(brg.getKodeBarang()+"/"+
brg.getNamaBarang());}
Output:
T05/Teh T-Melati
K21/Kopi cap Wangi
T01/Teh Aroma Wangi
K31/Kopi cap API
S03/Sun Silk

4. Menampilkan nama-nama barang beserta harga satuan yang harganya di atas


Rp.5000
SQL RDBMS OQL ODBMS
SELECT NamaBarang, Query Qry = db.query();Qry.constrain(Barang.class);
HargaSatuan Qry.descend("HargaSatuan").constrain(
FROM BARANG new Double(5000)).greater();while (Hasil.hasNext()){
WHERE HargaSatuan > Barang brg = (Barang)Hasil.next();
5000; System.out.println(brg.getNamaBarang() +"/"+

Petunjuk Praktikum BDBO 37


String.valueOf(brg.getHarga()));}
Output:
Teh T-Melati/5500.0
Kopi cap Wangi/7500.0
Sun Silk/6500.0

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
a. Carilah perbedaan fasilitas query di RDBMS dengan ODBMS dalam hal ini DB4O.
b. Buat aplikasi sederhana dengan mengembangkan beberapa listing di atas untuk
beberapa kasus berikut:
a) Menampilkan nama-nama barang beserta harga satuannya untuk jenis kopi atau
teh.
b) Menampilkan nama-nama barang beserta harga satuannya yang jenis barangnya
Mie dan disuplai oleh Fastfood
c) Menampilkan kode barang dan nama barang jenis Teh yang harga satuannya
antara 1000 sampai dengan 5000.

Petunjuk Praktikum BDBO 38


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta, .
Asisten Praktikum

<>

Jawaban Postest

D. Referensi
1. http://www.db4o.com
2. http://www.odbmg.com

Petunjuk Praktikum BDBO 39


Native Query di DB4O
Pertemuan ke :X
Alokasi Waktu : 1,5 Jam
Kompetensi Dasar : 1. Mahasiswa mampu memahami konsep native query di DB4O.
2. Mahasiswa mampu menggunakan konsep native query di
DB4O dalam program sederhana.
3. Mahasiswa mampu mengeksplorasi fitur-fitur DB4O dalam
penanganan database khususnya materi terkait native query.
4. Mahasiswa mampu menggunakan DB4O dalam pemrogaman
database khususnya materi terkait native query.
5. Mahasiswa mampu mengetahui perbedaan antara object query
dengan native query.

Indikator : 1. Mengeksplorasi fitur DB4O untuk pengelolaan database kasus


native-query.
2. Menggunakan DB4O untuk membuat program kasus native-
query dalam database sederhana.
3. Membandingkan karakteristik object-query dan native-query.

A. Teori Pendukung
Native query merupakan
pengembangan dari Object Query
sebelumnya. Di mana object query
sebelumnya memiliki banyak
kekurangan di antaranya pengecekan
kesalahan dan keamanan dari query
yang belum dihandel.
Dimisalkan ada relationship antar object, yaitu:

Diasumsikan bahwa seorang Person memiliki suatu Account di suatu bank. Maka
relationship yang akan dibuat akan membentuk dua class dengan attribute seperti
berikut:
Class Account Class Person
public class Account { public class Person {
private double amount; private Account account;
private double credit;} private String name;
private int age;}

Misalkan Object Personnya sebagai berikut:

B. Langkah Praktikum (sesuaikan dengan mata praktikumnya) :


1. Mengadakan Pretest <alokasi waktu maks 15 menit>
Berikut beberapa pertanyaan dan kasus yang dapat dijadikan sebagai pemahaman awal (pre
test) sebelum praktikum:
a. Apa yang dimaksud Native query?
b. Carilah perbedaan antara object query dan native query
c. Kenapa disediakan mekanisme native query?

2. Tahapan melaksanakan Praktikum


Petunjuk Praktikum BDBO 40
Dari data tabel tersebut di atas, dapat diperoleh sebagian data dengan kasus di bawah
ini:
a. Tampilkan semua kolom dari Tabel tersebut
SQL RDBMS OQL ODBMS
SELECT * ObjectSet persons = db.query(new Predicate(){
FROM Person; public boolean match(Person person) {return true;}
Output:
Rossi/28/1500.0/500.0
Tony/35/2500.0/300.0
James/42/1250.0/50.0
Heinz/20/1500.0/500.0
Eric/22/150.0/0.0
Linda/45/5000.0/1500.0

b. Tampilkan jumlah amount dan credit dari accountnya Linda.


SQL RDBMS OQL ODBMS
SELECT Amount, Credit ObjectSet persons = db.query(new Predicate() {
FROM Person public boolean match(Person person) {
WHERE Name = Linda; return person.getName().equals("Linda");}
Output:
5000.0/1500.0

c. Tampilkan nama serta jumlah credit yang kurang dari 100.


SQL RDBMS OQL ODBMS
SELECT Name, Credit ObjectSet persons = db.query(new Predicate() {
FROM Person public boolean match(Person person) {
WHERE Credit <> . return person.getAccount().getCredit() <>
}
Output:
?

Kutip dan jalankan di editor Java listing berikut:


1. package bank;
2. import com.db4o.*; import com.db4o.query.*; import java.io.File;
3. public class Main {
4. public static void main(String[] args) { InsertData();Query1();Query2();Query3();}
5. public static void InsertData(){new File("Person.yap").delete();
6. ObjectContainer db = Db4o.openFile("Person.yap");
7. Account a1 = new Account(1500, 500);
8. Person p1 = new Person("Heinz", 20); p1.setAccount(a1);
9. Account a2 = new Account(5000, 1500); Person p2 = new Person("Linda", 45);
10. p2.setAccount(a2); Person p3 = new Person("Eric", 22);
11. Account a3 = new Account(150, 0); p3.setAccount(a3);
12. Person p4 = new Person("James", 42); Account a4 = new Account(1250, 50);
13. p4.setAccount(a4); Person p5 = new Person("Tony", 35);
14. Account a5 = new Account(2500, 300); p5.setAccount(a5);
15. Person p6 = new Person("Rossi", 28); Account a6 = new Account(1500, 500);
16. p6.setAccount(a6);

Petunjuk Praktikum BDBO 41


17. db.set(p1);db.set(p2);db.set(p3);db.set(p4);db.set(p5);db.set(p6);
18. db.close();
19. System.out.println("Data Person sudah tersimpan");}
20. public static void Query1(){ObjectContainer db = Db4o.openFile("Person.yap");
21. ObjectSet persons = db.query(new Predicate() {
22. public boolean match(Person person) {
23. return true; }});
24. System.out.println("Query 1 : SELECT * FROM Person;");
25. System.out.println("Hasil : " + persons.size());
26. while (persons.hasNext()){System.out.println(persons.next());}
27. db.close();}
28. public static void Query2(){ObjectContainer db = Db4o.openFile("Person.yap");
29. ObjectSet persons = db.query(new Predicate() {
30. public boolean match(Person person) { return person.getName().equals("Linda");}});
31. System.out.println("Query 2 : SELECT Amount,Credit FROM Person WHERE Name = 'Linda';");
32. System.out.println("Hasil : " + persons.size()+" record");
33. while (persons.hasNext()){
34. Person person = (Person)persons.next();
35. System.out.println(person.getAccount());
36. } db.close();}
37. public static void Query3(){
38. ObjectContainer db = Db4o.openFile("Person.yap");
39. ObjectSet persons = db.query(new Predicate() {
40. public boolean match(Person person) { return person.getAccount().getCredit() <>}});
41. System.out.println("Query 3 : SELECT Name, Credit FROM Person WHERE Credit <>
42. System.out.println("Hasil : " + persons.size()+" record");
43. while (persons.hasNext()){Person person = (Person)persons.next();
44. System.out.println(person.getName()+"/"+ person.getAccount().getCredit());
45. } db.close();}
46. System.out.println("Query 6 :");
47. System.out.println("SELECT Name, Age");
48. System.out.println("FROM Person");
49. System.out.println("WHERE Not( Name = Heinz) AND Amount IN (");
50. System.out.println(" SELECT Amount");
51. System.out.println(" FROM Person");
52. System.out.println(" WHERE Name = Heinz);");
53. System.out.println("Hasil : " + Objperson.size()+" record");
54. while (Objperson.hasNext()){
55. Person person = (Person)Objperson.next();
56. System.out.println(person.getName());
57. }} db.close();}}

Listing berikut berisi class-class pendukung:


class Person
1. package bank;
2. public class Person { private Account account; private String Name; private int Age;
3. public Person(String name, int age){ this.Name = name; this.Age = age;
4. this.account=null;}
5. public String getName(){return Name;}
6. public int getAge(){return Age;}
Petunjuk Praktikum BDBO 42
7. public void setAccount(Account account){
8. this.account = account;}
9. public Account getAccount(){return account;}
10. public String toString(){return Name+"/"+Age+"/"+account;}}

class Account
1. package bank;
2. public class Account { private double Amount; private double Credit;
3. public Account(double amount, double credit){ this.Amount=amount;
4. this.Credit = credit;}
5. public double getAmount(){return Amount;}
6. public double getCredit(){return Credit;}
7. public String toString(){return Amount+"/"+Credit;}

C. Evaluasi
1. Soal Postest
Beberapa kasus/pertanyaan yang dapat digunakan sebagai acuan untuk pre test/ tugas
praktikum:
Carilah perbedaan fasilitas query di RDBMS dengan ODBMS dalam hal ini DB4O.
Buat aplikasi sederhana dengan mengembangkan beberapa listing di atas untuk beberapa
kasus berikut:
d) Menampilkan nama serta jumlah amount atau credit yang kurang dari 100.
e) Menampilkan nama yang umurnya antara 40-50 dan creditnya diatas 1000
f) Menampilkan nama serta umurnya yang Amount sama dengan nasabah Heinz.

Petunjuk Praktikum BDBO 43


2. FORMAT LEMBAR JAWABAN
Nilai Yogyakarta,
.
Asisten Praktikum

<>
Jawaban Postest

D. Referensi
1. http://www.db4o.com
2. http://www.odbmg.com

Petunjuk Praktikum BDBO 44

Anda mungkin juga menyukai