Buat para ksatria programming, baik yang pemula atau yang sudah master, silahkan uji kesaktiannya di situs online judge. Di situs tersebut akan banyak koleksi soal pemrograman yang bisa dipecahkan. Pengguna bisa bersaing dengan pengguna lainnya. Situs online judge menjadi kawah candradimuka yang pas buat teman-teman yang sedang mempersiapkan mengikuti kompetisi/ lomba pemrograman. Berikut ini beberapa alamat situsnya:
1. AIZU Online Judge. Dikembangkan oleh Universitas Aizu Jepang. Di situs ini tercatat sudah memiliki 26 volume paket soal. Setiap volume berisi sekitar 50 soal.
2. Sphere Online Judge. Sampai artikel ini dibuat, ada 14 juta lebih kiriman jawaban dari 300 ribu lebih pengguna. Koleksi problems-nya mencapai 24.000 soal untuk kategori Classical.
3. URI Online Judge. Situs ini dikembangkan oleh Departemen Ilmu Komputer Universitas Rhode Island, Amerika. Koleksinya 700 problems dalam 8 kategori utama.
4. UVA Online Judge. Dibuat oleh Universitas Valladolid (Spanyol), bekerjasama dengan ACM ICPC. Ada 14 paket problems. Satu paket problems berisi sekitar 1.500 soal.
5. JollyBee Online Judge. Dibangun oleh Universitas Binus. Mungkin situs ini satu-satunya yang berbahasa Indonesia. Koleksi soalnya belum begitu banyak. Baru ada sekitar 90 problem.
Contoh Implementasi Relasi OOP Is-A dan Has-A Memakai Bahasa Java
Berikut ini adalah contoh source code sederhana implementasi relasi Is-A dan Has-A dalam sebuah program. Studi kasusnya adalah seorang mahasiswa bisa memiliki banyak koleksi buku. Sedangkan buku sendiri bisa berupa buku teks dan buku ajar. Untuk lebih bagusnya, coding berikut ini bisa dikembangkan dengan menambahkan menu program. Selamat belajar :)
/**
* Program ini tentang mahasiswa yang memiliki banyak koleksi buku
* Buku bisa berupa text book, dan buku ajar
*/
class buku{
String judul;
String penulis;
}
class textbook extends buku{
String penerbit;
textbook(String j, String p, String b){
judul=j; penulis=p; penerbit=b;
}
}
class bukuajar extends buku{
String matakuliah;
bukuajar(String j, String p, String m){
judul=j; penulis=p; matakuliah=m;
}
}
class mhs{
String nama;
textbook tb[];
bukuajar ba[];
int jtb, jba;
mhs(String n){
nama=n;
tb = new textbook[10]; ba = new bukuajar[5];
}
void tambahTB(textbook t){ //obyek text book sbg parameter method
if (jtb<10){
tb[jtb]=t;
jtb++;
System.out.println("Penambahan text book sukses...");
}
else{
System.out.println("Kapasitas text book penuh...");
}
}
void tambahBA(bukuajar b){ //obyek buku ajar sbg parameter method
if (jba<10){
ba[jba]=b;
jba++;
System.out.println("Penambahan buku ajar sukses...");
}
else{
System.out.println("Kapasitas buku ajar penuh...");
}
}
void lihatkoleksi(){
System.out.println("\nKoleksi Buku Teksnya "+nama+" :");
for(int i=0; i<jtb; i++){
System.out.println((i+1)+". "+tb[i].judul+" karya "+tb[i].penulis);
}
System.out.println("Koleksi Buku Ajarnya "+nama+" :");
for(int i=0; i<jba; i++){
System.out.println((i+1)+". "+ba[i].judul+" karya "+ba[i].penulis);
}
}
void hapuskoleksi(){
//1. input jenis buku
//2. input judul buku
//3. cari buku
//4. konfirmasi penghapusan
//5. hapus buku
}
}
public class koleksi {
public static void main(String h[]){
//buat obyek mahasiswa
mhs m = new mhs("Budi");
//buat obyek buku teks
textbook tb1 = new textbook("Java Fundamental","M.Carrick", "Sun System");
textbook tb2 = new textbook("Database for Dummies", "Samarkhand", "Mc Graw Hill");
//masukkan obyek buku teks ke obyek mahasiswa
m.tambahTB(tb1);
m.tambahTB(tb2);
m.lihatkoleksi();
//buat obyek buku ajar
bukuajar ba1 = new bukuajar("Pengantar Teknologi Informasi","Prof. Fauzi", "PTI");
bukuajar ba2 = new bukuajar("Sistem Informasi Manajemen", "Dr. Asti", "SIM");
//masukkan obyek buku ajar ke obyek mahasiswa
m.tambahBA(ba1);
m.tambahBA(ba2);
m.lihatkoleksi();
}
}
/**
* Program ini tentang mahasiswa yang memiliki banyak koleksi buku
* Buku bisa berupa text book, dan buku ajar
*/
class buku{
String judul;
String penulis;
}
class textbook extends buku{
String penerbit;
textbook(String j, String p, String b){
judul=j; penulis=p; penerbit=b;
}
}
class bukuajar extends buku{
String matakuliah;
bukuajar(String j, String p, String m){
judul=j; penulis=p; matakuliah=m;
}
}
class mhs{
String nama;
textbook tb[];
bukuajar ba[];
int jtb, jba;
mhs(String n){
nama=n;
tb = new textbook[10]; ba = new bukuajar[5];
}
void tambahTB(textbook t){ //obyek text book sbg parameter method
if (jtb<10){
tb[jtb]=t;
jtb++;
System.out.println("Penambahan text book sukses...");
}
else{
System.out.println("Kapasitas text book penuh...");
}
}
void tambahBA(bukuajar b){ //obyek buku ajar sbg parameter method
if (jba<10){
ba[jba]=b;
jba++;
System.out.println("Penambahan buku ajar sukses...");
}
else{
System.out.println("Kapasitas buku ajar penuh...");
}
}
void lihatkoleksi(){
System.out.println("\nKoleksi Buku Teksnya "+nama+" :");
for(int i=0; i<jtb; i++){
System.out.println((i+1)+". "+tb[i].judul+" karya "+tb[i].penulis);
}
System.out.println("Koleksi Buku Ajarnya "+nama+" :");
for(int i=0; i<jba; i++){
System.out.println((i+1)+". "+ba[i].judul+" karya "+ba[i].penulis);
}
}
void hapuskoleksi(){
//1. input jenis buku
//2. input judul buku
//3. cari buku
//4. konfirmasi penghapusan
//5. hapus buku
}
}
public class koleksi {
public static void main(String h[]){
//buat obyek mahasiswa
mhs m = new mhs("Budi");
//buat obyek buku teks
textbook tb1 = new textbook("Java Fundamental","M.Carrick", "Sun System");
textbook tb2 = new textbook("Database for Dummies", "Samarkhand", "Mc Graw Hill");
//masukkan obyek buku teks ke obyek mahasiswa
m.tambahTB(tb1);
m.tambahTB(tb2);
m.lihatkoleksi();
//buat obyek buku ajar
bukuajar ba1 = new bukuajar("Pengantar Teknologi Informasi","Prof. Fauzi", "PTI");
bukuajar ba2 = new bukuajar("Sistem Informasi Manajemen", "Dr. Asti", "SIM");
//masukkan obyek buku ajar ke obyek mahasiswa
m.tambahBA(ba1);
m.tambahBA(ba2);
m.lihatkoleksi();
}
}
Contoh Program Implementasi Stack Menggunakan Linked List dalam Bahasa Java
class item //atau node/simpul
{
public int data; // data item
public item next; // next node link in list
public item prev; // previous node link in list
public item(int id) // constructor
{
data = id; // initialize data
} // set to null)
public void displayLink() // display ourself
{
System.out.print("{" + data + "} ");
}
} // end class Link
class StackLinkList
{
private item top; // ref to first link on list
private item bottom; // ref to last link on list
public StackLinkList() // constructor
{
top = bottom = null; // no items on list yet
}
public boolean isEmpty() // true if list is empty
{
return (top==null);
}
public void push(int id) //node baru selalu di top
{ // make new link
item newitem = new item(id);
if (top == null) // the first node created
{
top = bottom = newitem; // first --> newLink
}
else // the second node and the next node
{
top.next = newitem; //next dr top (awal) diarahkan ke node baru
newitem.prev = top; //prev dr node baru diarahkan ke tail (awal)
top = newitem; //top (baru) diarahkan ke node baru
}
}
public item pop() // delete first item
{ item temp = null;
if (top == null) // stack is empty
System.out.println("Stack is empty");
else if (top == bottom) // stack is only one data
{
temp = top;
top = bottom = null;
}
else // stack has more than one data
{
temp = top; // save reference to link
top = top.prev; // delete it: first-->old next
top.next = null;
}
return temp;
}
public void display()
{
item current = bottom; // start from the first data
while(current != null) // until end of list,
{
current.displayLink(); // print data
current = current.next; // move to next link
}
System.out.println("");
}
} // end class LinkList
class StackLinkListApp
{
public static void main(String[] args)
{
StackLinkList theStack = new StackLinkList(); // make new list
System.out.println("Initializing Stack...");
theStack.push(22); // insert four items
theStack.push(44);
theStack.push(66);
theStack.push(88);
System.out.println("Display Forward :");
theStack.display(); // display list
System.out.println("Delete Stack from Top...");
while( !theStack.isEmpty() ) // until it's empty,
{
item aLink = theStack.pop(); // delete link
System.out.print("Deleted "); // display it
aLink.displayLink();
System.out.println("");
}
theStack.display(); // display list
} // end main()
}
{
public int data; // data item
public item next; // next node link in list
public item prev; // previous node link in list
public item(int id) // constructor
{
data = id; // initialize data
} // set to null)
public void displayLink() // display ourself
{
System.out.print("{" + data + "} ");
}
} // end class Link
class StackLinkList
{
private item top; // ref to first link on list
private item bottom; // ref to last link on list
public StackLinkList() // constructor
{
top = bottom = null; // no items on list yet
}
public boolean isEmpty() // true if list is empty
{
return (top==null);
}
public void push(int id) //node baru selalu di top
{ // make new link
item newitem = new item(id);
if (top == null) // the first node created
{
top = bottom = newitem; // first --> newLink
}
else // the second node and the next node
{
top.next = newitem; //next dr top (awal) diarahkan ke node baru
newitem.prev = top; //prev dr node baru diarahkan ke tail (awal)
top = newitem; //top (baru) diarahkan ke node baru
}
}
public item pop() // delete first item
{ item temp = null;
if (top == null) // stack is empty
System.out.println("Stack is empty");
else if (top == bottom) // stack is only one data
{
temp = top;
top = bottom = null;
}
else // stack has more than one data
{
temp = top; // save reference to link
top = top.prev; // delete it: first-->old next
top.next = null;
}
return temp;
}
public void display()
{
item current = bottom; // start from the first data
while(current != null) // until end of list,
{
current.displayLink(); // print data
current = current.next; // move to next link
}
System.out.println("");
}
} // end class LinkList
class StackLinkListApp
{
public static void main(String[] args)
{
StackLinkList theStack = new StackLinkList(); // make new list
System.out.println("Initializing Stack...");
theStack.push(22); // insert four items
theStack.push(44);
theStack.push(66);
theStack.push(88);
System.out.println("Display Forward :");
theStack.display(); // display list
System.out.println("Delete Stack from Top...");
while( !theStack.isEmpty() ) // until it's empty,
{
item aLink = theStack.pop(); // delete link
System.out.print("Deleted "); // display it
aLink.displayLink();
System.out.println("");
}
theStack.display(); // display list
} // end main()
}
Algoritma Evaluasi Hasil Persamaan Postfix
Berikut ini adalah contoh penggunaan tipe data stack untuk menghitung hasil akhir dari operasi/ formula matematis jenis postfix. Notasi postfix adalah notasi matematis dimana tanda operatornya diletakkan setelah kedua operannya. Sebagai contoh, jika dalam notas infix kita tulis A+B, maka dalam notasi postfix menjadi AB+. Berikut ini adalah algoritmanya:
opndstck = the_empty_stack
/* scan the input string, one by one element, into symb
while ( not_end_of_input_string )
{ symb = next_input_character
if ( symb_is_an_operand )
push ( opndstck, symb )
else /* symb is an operator */
{ opnd2 = pop ( opndstck )
opnd1 = pop ( opndstck )
value = opnd1 (symb) opnd2
push ( opndstck, value )
} /* end else */
} /* end while */
return ( pop ( opndstck ) )
opndstck = the_empty_stack
/* scan the input string, one by one element, into symb
while ( not_end_of_input_string )
{ symb = next_input_character
if ( symb_is_an_operand )
push ( opndstck, symb )
else /* symb is an operator */
{ opnd2 = pop ( opndstck )
opnd1 = pop ( opndstck )
value = opnd1 (symb) opnd2
push ( opndstck, value )
} /* end else */
} /* end while */
return ( pop ( opndstck ) )
Contoh Program Penggunaan Pustaka/ Library Linked List dalam Java
Pustaka LinkedList telah disediakan oleh Java. Dengan adanya pustaka ini, membuat aplikasi linked list menjadi sangat mudah dan cepat. Jika dengan cara biasa kita harus membuat class tersendiri untuk mendefinisikan simpul/ node, dan juga linked list-nya, maka dengan pustaka LinkedList programmer cukup memanggil library tersebut dan memakainya di bagian utama (main) program.
Di dalam pustaka tersebut sudah disediakan banyak sekali method. Diantaranya method untuk menambah simpul baru, mencari simpul, hingga menampilkan isi linked list serta menduplikasi dirinya. Berikut ini contoh source code program sederhananya:
import java.util.LinkedList;
public class liblinkedlist {
public static void main(String argo[]){
LinkedList link = new LinkedList();
link.add("budi");
link.add("cipto");
link.add("hamim");
System.out.println(link);
System.out.println(link.getFirst());
link.addFirst("made");
System.out.println(link);
}
}
Di dalam pustaka tersebut sudah disediakan banyak sekali method. Diantaranya method untuk menambah simpul baru, mencari simpul, hingga menampilkan isi linked list serta menduplikasi dirinya. Berikut ini contoh source code program sederhananya:
import java.util.LinkedList;
public class liblinkedlist {
public static void main(String argo[]){
LinkedList link = new LinkedList();
link.add("budi");
link.add("cipto");
link.add("hamim");
System.out.println(link);
System.out.println(link.getFirst());
link.addFirst("made");
System.out.println(link);
}
}
Contoh Program Class Container dalam OOP Memakai Bahasa Java
Dalam contoh coding berikut ini, diterapkan skema relasi Has-A dimana objek yang dimiliki oleh sebuah class berjumlah lebih dari satu. Teknik yang dipakai adalah menggunakan tipe data array/ larik dengan class sebagai tipe datanya. Contoh kasus yang diambil dalam program ini adalah aplikasi perbankan dengan asumsi sebuah Bank memiliki banyak Nasabah, dan seorang Nasabah bisa mempunyai banyak Rekening dalam bank yang sama.
Langkah-langkah untuk implementasinya adalah sebagai berikut:
1. Buat data member (variabel) bertipe array objek di dalam class pemilik.
2. Buat data member counter untuk menyimpan jumlah objek yang ada (bertambah/ berkurang).
3. Buat method untuk menambah dan menghapus objek, serta untuk menampilkan daftar semua objek yang dimiliki. Pastikan data jumlah objek poin (2) ter-update.
4. Buat pula method untuk fungsi agregat, misalnya menjumlah total saldo, total nasabah, dsb.
5. Uji cobakan di modul main() mulai dari objek yang paling rendah/ bawah.
Semoga bermanfaat, dan selamat mencoba source code berikut ini! :)
import java.util.Scanner;
class Bank{
String nama;
Nasabah nasabah [] = new Nasabah[10];
int jumlahnasabah;
public Bank(String n){
nama = n; jumlahnasabah = -1;
}
public void tambahnasabah(Nasabah n){
jumlahnasabah++;
nasabah[jumlahnasabah] = n;
}
public void hapusnasabah(String n){
int i;
for ( i=0; i<jumlahnasabah; i++){
if (n.equalsIgnoreCase(nasabah[i].getnama()))
break; //hentikan pencarian karena ketemu
}
if (i < jumlahnasabah) //rekening ditemukan
{
System.out.print("Yakin nasabah dihapus [1/0] = ");
Scanner sc = new Scanner(System.in);
int jawab = sc.nextInt();
if (jawab == 1){
//geser maju semua data yg ada dibelakangnya
for(int j=i; j<jumlahnasabah-1; j++){
nasabah[j] = nasabah[j+1];
}
jumlahnasabah--;
System.out.println("Nasabah sukses dihapus...");
}
else if (jawab == 0){
System.out.println("Nasabah batal dihapus...");
}
}
else
{
System.out.println("Nasabah tidak ditemukan...");
}
}
public void cetaksemuanasabah(){
System.out.println("Daftar nasabah "+nama+" : ");
for(int i=0; i<=jumlahnasabah; i++){
System.out.print((i+1)+". ");
nasabah[i].cetaknasabah();
}
System.out.println();
}
public double getsaldobank(){
double total = 0.0;
for(int i=0; i<=jumlahnasabah; i++){
total = total + nasabah[i].getsaldonasabah();
}
return total;
}
public String getnama(){ return nama; }
}
class Nasabah{
String nama;
Rekening rek [] = new Rekening[5];
int jumlahrek;
public Nasabah(String n){
nama = n;
jumlahrek = -1;
}
public String getnama(){ return nama; }
public void bukarekening(Rekening r){
jumlahrek++;
rek[jumlahrek] = r;
}
public void tutuprekening(long no){
int i;
for ( i=0; i<jumlahrek; i++){
if (no == rek[i].getnomor())
break; //hentikan pencarian karena ketemu
}
if (i < jumlahrek) //rekening ditemukan
{
System.out.print("Yakin dihapus [1/0] = ");
Scanner sc = new Scanner(System.in);
int jawab = sc.nextInt();
if (jawab == 1){
//geser maju semua data yg ada dibelakangnya
for(int j=i; j<jumlahrek-1; j++){
rek[j]=rek[j+1];
}
jumlahrek--;
System.out.println("Rekening sukses dihapus...");
}
else if (jawab == 0){
System.out.println("Rekening batal dihapus...");
}
}
else
{
System.out.println("Rekening tidak ditemukan...");
}
}
public void cetaksemuarekening(){
System.out.println("\nDaftar rekening "+nama+" : ");
for(int i=0; i<=jumlahrek; i++){
System.out.print((i+1)+". ");
rek[i].cetaksaldo();
}
System.out.println();
}
public double getsaldonasabah(){
double total = 0.0;
for(int i=0; i<=jumlahrek; i++){
total = total + rek[i].getsaldo();
}
return total;
}
public void cetaknasabah(){
System.out.println(nama+", saldo Rp. "+getsaldonasabah());
}
}
class Rekening{
long nomor;
double saldo;
public Rekening(long n, double s){
nomor = n; saldo = s;
System.out.println("Rekening nomor "+nomor+" sukses dibuat...");
}
public long getnomor(){ return nomor; }
public double getsaldo(){ return saldo; }
public void setoran(double s){
saldo = saldo + s;
System.out.println("Setoran tunai sukses. Saldo baru Rp. "+saldo);
}
public void penarikan(double p){
if (saldo > p) {
saldo = saldo - p;
System.out.println("Penarikan tunai sukses. Saldo baru Rp. "+saldo);
}
else System.out.println("Maaf saldo Anda tidak mencukupi...");
}
public void cetaksaldo(){
System.out.println("Rekening "+nomor+" memiliki saldo Rp. "+saldo);
}
}
public class banks {
public static void main(String arg[]){
Nasabah budi = new Nasabah("Budi");
Rekening r1 = new Rekening(12345, 1000000);
Rekening r2 = new Rekening(23456, 2000000);
Rekening r3 = new Rekening(34567, 3000000);
budi.bukarekening(r1); budi.bukarekening(r2); budi.bukarekening(r3);
budi.cetaksemuarekening();
Nasabah wati = new Nasabah("Wati");
Rekening r4 = new Rekening(45678, 4000000);
Rekening r5 = new Rekening(56789, 5000000);
wati.bukarekening(r4); wati.bukarekening(r5);
wati.cetaksemuarekening();
Nasabah iwan = new Nasabah("Iwan");
Rekening r6 = new Rekening(67890, 6000000);
Rekening r7 = new Rekening(78901, 7000000);
iwan.bukarekening(r6); iwan.bukarekening(r7);
iwan.cetaksemuarekening();
Bank bank [] = new Bank[2];
bank[0] = new Bank("BNI");
bank[1] = new Bank("Mandiri");
bank[0].tambahnasabah(wati);
bank[0].tambahnasabah(budi);
bank[1].tambahnasabah(iwan);
bank[0].cetaksemuanasabah();
System.out.println("Saldo bank "+ bank[0].getnama()+" Rp. "+bank[0].getsaldobank()+"\n");
bank[1].cetaksemuanasabah();
System.out.println("Saldo bank "+ bank[1].getnama()+" Rp. "+bank[1].getsaldobank()+"\n");
}
}
Langkah-langkah untuk implementasinya adalah sebagai berikut:
1. Buat data member (variabel) bertipe array objek di dalam class pemilik.
2. Buat data member counter untuk menyimpan jumlah objek yang ada (bertambah/ berkurang).
3. Buat method untuk menambah dan menghapus objek, serta untuk menampilkan daftar semua objek yang dimiliki. Pastikan data jumlah objek poin (2) ter-update.
4. Buat pula method untuk fungsi agregat, misalnya menjumlah total saldo, total nasabah, dsb.
5. Uji cobakan di modul main() mulai dari objek yang paling rendah/ bawah.
Semoga bermanfaat, dan selamat mencoba source code berikut ini! :)
import java.util.Scanner;
class Bank{
String nama;
Nasabah nasabah [] = new Nasabah[10];
int jumlahnasabah;
public Bank(String n){
nama = n; jumlahnasabah = -1;
}
public void tambahnasabah(Nasabah n){
jumlahnasabah++;
nasabah[jumlahnasabah] = n;
}
public void hapusnasabah(String n){
int i;
for ( i=0; i<jumlahnasabah; i++){
if (n.equalsIgnoreCase(nasabah[i].getnama()))
break; //hentikan pencarian karena ketemu
}
if (i < jumlahnasabah) //rekening ditemukan
{
System.out.print("Yakin nasabah dihapus [1/0] = ");
Scanner sc = new Scanner(System.in);
int jawab = sc.nextInt();
if (jawab == 1){
//geser maju semua data yg ada dibelakangnya
for(int j=i; j<jumlahnasabah-1; j++){
nasabah[j] = nasabah[j+1];
}
jumlahnasabah--;
System.out.println("Nasabah sukses dihapus...");
}
else if (jawab == 0){
System.out.println("Nasabah batal dihapus...");
}
}
else
{
System.out.println("Nasabah tidak ditemukan...");
}
}
public void cetaksemuanasabah(){
System.out.println("Daftar nasabah "+nama+" : ");
for(int i=0; i<=jumlahnasabah; i++){
System.out.print((i+1)+". ");
nasabah[i].cetaknasabah();
}
System.out.println();
}
public double getsaldobank(){
double total = 0.0;
for(int i=0; i<=jumlahnasabah; i++){
total = total + nasabah[i].getsaldonasabah();
}
return total;
}
public String getnama(){ return nama; }
}
class Nasabah{
String nama;
Rekening rek [] = new Rekening[5];
int jumlahrek;
public Nasabah(String n){
nama = n;
jumlahrek = -1;
}
public String getnama(){ return nama; }
public void bukarekening(Rekening r){
jumlahrek++;
rek[jumlahrek] = r;
}
public void tutuprekening(long no){
int i;
for ( i=0; i<jumlahrek; i++){
if (no == rek[i].getnomor())
break; //hentikan pencarian karena ketemu
}
if (i < jumlahrek) //rekening ditemukan
{
System.out.print("Yakin dihapus [1/0] = ");
Scanner sc = new Scanner(System.in);
int jawab = sc.nextInt();
if (jawab == 1){
//geser maju semua data yg ada dibelakangnya
for(int j=i; j<jumlahrek-1; j++){
rek[j]=rek[j+1];
}
jumlahrek--;
System.out.println("Rekening sukses dihapus...");
}
else if (jawab == 0){
System.out.println("Rekening batal dihapus...");
}
}
else
{
System.out.println("Rekening tidak ditemukan...");
}
}
public void cetaksemuarekening(){
System.out.println("\nDaftar rekening "+nama+" : ");
for(int i=0; i<=jumlahrek; i++){
System.out.print((i+1)+". ");
rek[i].cetaksaldo();
}
System.out.println();
}
public double getsaldonasabah(){
double total = 0.0;
for(int i=0; i<=jumlahrek; i++){
total = total + rek[i].getsaldo();
}
return total;
}
public void cetaknasabah(){
System.out.println(nama+", saldo Rp. "+getsaldonasabah());
}
}
class Rekening{
long nomor;
double saldo;
public Rekening(long n, double s){
nomor = n; saldo = s;
System.out.println("Rekening nomor "+nomor+" sukses dibuat...");
}
public long getnomor(){ return nomor; }
public double getsaldo(){ return saldo; }
public void setoran(double s){
saldo = saldo + s;
System.out.println("Setoran tunai sukses. Saldo baru Rp. "+saldo);
}
public void penarikan(double p){
if (saldo > p) {
saldo = saldo - p;
System.out.println("Penarikan tunai sukses. Saldo baru Rp. "+saldo);
}
else System.out.println("Maaf saldo Anda tidak mencukupi...");
}
public void cetaksaldo(){
System.out.println("Rekening "+nomor+" memiliki saldo Rp. "+saldo);
}
}
public class banks {
public static void main(String arg[]){
Nasabah budi = new Nasabah("Budi");
Rekening r1 = new Rekening(12345, 1000000);
Rekening r2 = new Rekening(23456, 2000000);
Rekening r3 = new Rekening(34567, 3000000);
budi.bukarekening(r1); budi.bukarekening(r2); budi.bukarekening(r3);
budi.cetaksemuarekening();
Nasabah wati = new Nasabah("Wati");
Rekening r4 = new Rekening(45678, 4000000);
Rekening r5 = new Rekening(56789, 5000000);
wati.bukarekening(r4); wati.bukarekening(r5);
wati.cetaksemuarekening();
Nasabah iwan = new Nasabah("Iwan");
Rekening r6 = new Rekening(67890, 6000000);
Rekening r7 = new Rekening(78901, 7000000);
iwan.bukarekening(r6); iwan.bukarekening(r7);
iwan.cetaksemuarekening();
Bank bank [] = new Bank[2];
bank[0] = new Bank("BNI");
bank[1] = new Bank("Mandiri");
bank[0].tambahnasabah(wati);
bank[0].tambahnasabah(budi);
bank[1].tambahnasabah(iwan);
bank[0].cetaksemuanasabah();
System.out.println("Saldo bank "+ bank[0].getnama()+" Rp. "+bank[0].getsaldobank()+"\n");
bank[1].cetaksemuanasabah();
System.out.println("Saldo bank "+ bank[1].getnama()+" Rp. "+bank[1].getsaldobank()+"\n");
}
}
Contoh Program Relasi Has-A dalam OOP Memakai Bahasa Java
Ada dua jenis relasi secara umum dalam Object Oriented Programming (OOP), yaitu jenis Has-A, dan jenis Is-A. Relasi Has-A antara objek X dan Y dapat diartikan sebagai objek X memiliki objek Y. Sedangkan relasi Is-A antara objek M dan N dapat diartikan sebagai objek M adalah objek N. Relasi ini dikenal juga sebagai bentuk pewarisan (inheritance).
Berikut ini adalah contoh source code relasi Has-A antara class nasabah dan class rekening dalam konteks aplikasi tentang perbankan. Langkah-langkah untuk menerapkannya ke dalam bentuk coding adalah sbb:
1. Buat data member dalam class nasabah dengan tipe class rekening.
2. Buat method "bukarekening" dalam class nasabah sebagai implementasi relasi Has-A.
3. Buat objek nasabah dan objek rekening di void main().
4. Di void main(), jalankan method "bukarekening" melalui objek nasabah, dan tuliskan objek rekening ke dalam argumentasi/ parameter method tersebut.
Berikut ini adalah contoh source code relasi Has-A antara class nasabah dan class rekening dalam konteks aplikasi tentang perbankan. Langkah-langkah untuk menerapkannya ke dalam bentuk coding adalah sbb:
1. Buat data member dalam class nasabah dengan tipe class rekening.
2. Buat method "bukarekening" dalam class nasabah sebagai implementasi relasi Has-A.
3. Buat objek nasabah dan objek rekening di void main().
4. Di void main(), jalankan method "bukarekening" melalui objek nasabah, dan tuliskan objek rekening ke dalam argumentasi/ parameter method tersebut.
Selamat menyimak dan mempelajari. Relasi Is-A akan kita bahas di artikel berikutnya. Simpan file di bawah ini dengan nama bank.java.
import java.util.Scanner;
class nasabah {
//data
String nama;
long ktp;
rekening rek; //data member berupa object class rekening
//beberapa jenis constructor
public nasabah(){
nama = "kosong"; ktp = 0;
System.out.println("nasabah baru dibuat...");
}
public nasabah(String n, long k){
nama = n; ktp = k;
System.out.println("nasabah "+nama+" dibuat...");
}
public nasabah(String n){ nama = n; }
public nasabah(long k){ ktp = k; }
public void bukarekening(rekening r){ //method untuk implementasi relasi
rek = r; //object assignment
System.out.println(nama+" sukses buka rekening ");
}
}
class rekening{
long nomor;
double saldo;
public rekening(long n, double s){
nomor = n; saldo = s;
System.out.println("Rekening nomor "+nomor+" sukses dibuat...");
}
}
public class bank {
public static void main(String a[]){
nasabah ika = new nasabah("ika", 123456789); //buat objek nasabah
rekening bni = new rekening(123456789, 1000000); //buat objek rekening
ika.bukarekening(bni); //buat relasi antar objeknya
}
}
import java.util.Scanner;
class nasabah {
//data
String nama;
long ktp;
rekening rek; //data member berupa object class rekening
//beberapa jenis constructor
public nasabah(){
nama = "kosong"; ktp = 0;
System.out.println("nasabah baru dibuat...");
}
public nasabah(String n, long k){
nama = n; ktp = k;
System.out.println("nasabah "+nama+" dibuat...");
}
public nasabah(String n){ nama = n; }
public nasabah(long k){ ktp = k; }
public void bukarekening(rekening r){ //method untuk implementasi relasi
rek = r; //object assignment
System.out.println(nama+" sukses buka rekening ");
}
}
class rekening{
long nomor;
double saldo;
public rekening(long n, double s){
nomor = n; saldo = s;
System.out.println("Rekening nomor "+nomor+" sukses dibuat...");
}
}
public class bank {
public static void main(String a[]){
nasabah ika = new nasabah("ika", 123456789); //buat objek nasabah
rekening bni = new rekening(123456789, 1000000); //buat objek rekening
ika.bukarekening(bni); //buat relasi antar objeknya
}
}
Contoh Program Relasi Is-A dalam OOP Memakai Bahasa Java
Relasi kedua dalam OOP adalah jenis Is-A. Relasi ini dikenal juga sebagai inheritance/ pewarisan. Relasi class X Is-A class Y berarti class X adalah class Y. Sebagai dampaknya atribut (data maupun method) class Y bisa diturunkan ke class X.
Dalam bahasa Java, perintah untuk pewarisan adalah menggunakan kata "extends". Class X extends class Y berarti class X merupakan turunan dari class Y. Class Y disebut sebagai class induk, base class atau super class. Sedangkan class X disebut sebagai class anak, derived class atau sub class.
Berikut ini adalah contoh source code implementasi relasi Is-A. Ada class tabungan dan class deposito yang diwarisi dari class rekening. Sehingga bisa kita baca class tabungan adalah class rekening. Dan class deposito adalah class rekening juga.
import java.util.Scanner;
class nasabah {
//data
String nama;
long ktp;
rekening rek;
//method
public nasabah(){
nama = "kosong"; ktp = 0;
System.out.println("nasabah baru dibuat...");
}
public nasabah(String n, long k){
nama = n; ktp = k;
System.out.println("nasabah "+nama+" dibuat...");
}
public nasabah(String n){ nama = n; }
public nasabah(long k){ ktp = k; }
//2. setter --> mengisi/ mengubah data
void setNama(String n){
nama = n;
}
void setKtp(long k){
ktp = k;
}
//3. getter --> mengambil data
String getNama(){
return nama;
}
long getKtp(){
return ktp;
}
//4. query
String toStr(){
return "nasabah "+nama+ " no. rekeningnya " +rek.getnomor();
}
public void bukarekening(rekening r){
rek = r; //object assignment
System.out.println(nama+" sukses buka rekening "+rek.toStr());
}
}
class rekening{
long nomor;
double saldo;
public rekening(long n, double s){
nomor = n; saldo = s;
System.out.println("Rekening nomor "+nomor+" sukses dibuat...");
}
public long getnomor(){ return nomor; }
public double getsaldo(){ return saldo; }
public void setsaldo(double s){ saldo = s; }
public String toStr(){ return nomor+" saldonya: "+saldo; }
public void transfer(long t){
saldo = saldo - 100000;
System.out.println("Sukses transfer 100.000 ke "+t);
System.out.println("Sisa saldo : "+saldo);
}
public void bayarlistrik(){
Scanner sc = new Scanner(System.in);
System.out.println("Pembayaran Listrik\nMasukkan Kode Pelanggan = ");
long kode = sc.nextLong();
System.out.print("Masukkan jumlah = ");
double tagihan = sc.nextDouble();
if (saldo > tagihan)
{ saldo = saldo - tagihan;
System.out.println("Pembayaran tagihan sukses");
}
else System.out.println("Saldo tidak mencukupi");
System.out.println("Saldo anda : "+saldo);
}
public void bayarlistrik(long k, double t){
if (saldo > t)
{ saldo = saldo - t;
System.out.println("Pembayaran tagihan sukses");
}
else System.out.println("Saldo tidak mencukupi");
System.out.println("Saldo anda : "+saldo);
}
}
class tabungan extends rekening{
tabungan(long n, double s){
super(n,s); //constructor utk base class
}
public void transfer(long tujuan, double nominal){
if (getsaldo() > nominal){
setsaldo(saldo - nominal);
System.out.println("Transfer sukses.\nSaldo "+getsaldo());
}
else{
System.out.println("Transfer gagal. Saldo tidak cukup");
}
}
}
class deposito extends rekening{
int jangkawaktu;
deposito(long n, double s, int j){
super(n,s); //constructor utk base class
jangkawaktu = j;
System.out.println("Deposito "+getnomor()+" senilai "+saldo+" dibuat dengan jangka "+jangkawaktu+" bulan");
}
}
public class bank {
public static void main(String a[]){
nasabah ika = new nasabah("ika", 123456789);
rekening bni = new rekening(123456789, 1000000);
ika.bukarekening(bni);
System.out.println(ika.toStr());
tabungan bri = new tabungan(56789, 200000);
ika.bukarekening(bri);
System.out.println(ika.toStr());
bri.transfer(34567, 100000);
deposito mandiri = new deposito(456789, 10000000, 36);
ika.bukarekening(mandiri);
System.out.println(ika.toStr());
}
}
Dalam bahasa Java, perintah untuk pewarisan adalah menggunakan kata "extends". Class X extends class Y berarti class X merupakan turunan dari class Y. Class Y disebut sebagai class induk, base class atau super class. Sedangkan class X disebut sebagai class anak, derived class atau sub class.
Berikut ini adalah contoh source code implementasi relasi Is-A. Ada class tabungan dan class deposito yang diwarisi dari class rekening. Sehingga bisa kita baca class tabungan adalah class rekening. Dan class deposito adalah class rekening juga.
import java.util.Scanner;
class nasabah {
//data
String nama;
long ktp;
rekening rek;
//method
public nasabah(){
nama = "kosong"; ktp = 0;
System.out.println("nasabah baru dibuat...");
}
public nasabah(String n, long k){
nama = n; ktp = k;
System.out.println("nasabah "+nama+" dibuat...");
}
public nasabah(String n){ nama = n; }
public nasabah(long k){ ktp = k; }
//2. setter --> mengisi/ mengubah data
void setNama(String n){
nama = n;
}
void setKtp(long k){
ktp = k;
}
//3. getter --> mengambil data
String getNama(){
return nama;
}
long getKtp(){
return ktp;
}
//4. query
String toStr(){
return "nasabah "+nama+ " no. rekeningnya " +rek.getnomor();
}
public void bukarekening(rekening r){
rek = r; //object assignment
System.out.println(nama+" sukses buka rekening "+rek.toStr());
}
}
class rekening{
long nomor;
double saldo;
public rekening(long n, double s){
nomor = n; saldo = s;
System.out.println("Rekening nomor "+nomor+" sukses dibuat...");
}
public long getnomor(){ return nomor; }
public double getsaldo(){ return saldo; }
public void setsaldo(double s){ saldo = s; }
public String toStr(){ return nomor+" saldonya: "+saldo; }
public void transfer(long t){
saldo = saldo - 100000;
System.out.println("Sukses transfer 100.000 ke "+t);
System.out.println("Sisa saldo : "+saldo);
}
public void bayarlistrik(){
Scanner sc = new Scanner(System.in);
System.out.println("Pembayaran Listrik\nMasukkan Kode Pelanggan = ");
long kode = sc.nextLong();
System.out.print("Masukkan jumlah = ");
double tagihan = sc.nextDouble();
if (saldo > tagihan)
{ saldo = saldo - tagihan;
System.out.println("Pembayaran tagihan sukses");
}
else System.out.println("Saldo tidak mencukupi");
System.out.println("Saldo anda : "+saldo);
}
public void bayarlistrik(long k, double t){
if (saldo > t)
{ saldo = saldo - t;
System.out.println("Pembayaran tagihan sukses");
}
else System.out.println("Saldo tidak mencukupi");
System.out.println("Saldo anda : "+saldo);
}
}
class tabungan extends rekening{
tabungan(long n, double s){
super(n,s); //constructor utk base class
}
public void transfer(long tujuan, double nominal){
if (getsaldo() > nominal){
setsaldo(saldo - nominal);
System.out.println("Transfer sukses.\nSaldo "+getsaldo());
}
else{
System.out.println("Transfer gagal. Saldo tidak cukup");
}
}
}
class deposito extends rekening{
int jangkawaktu;
deposito(long n, double s, int j){
super(n,s); //constructor utk base class
jangkawaktu = j;
System.out.println("Deposito "+getnomor()+" senilai "+saldo+" dibuat dengan jangka "+jangkawaktu+" bulan");
}
}
public class bank {
public static void main(String a[]){
nasabah ika = new nasabah("ika", 123456789);
rekening bni = new rekening(123456789, 1000000);
ika.bukarekening(bni);
System.out.println(ika.toStr());
tabungan bri = new tabungan(56789, 200000);
ika.bukarekening(bri);
System.out.println(ika.toStr());
bri.transfer(34567, 100000);
deposito mandiri = new deposito(456789, 10000000, 36);
ika.bukarekening(mandiri);
System.out.println(ika.toStr());
}
}
Contoh Program Doubly Linked List Sederhana dalam Bahasa Java
class simpul{
int data;
simpul next, prev;
public simpul(int d){ data=d; next=prev=null; }
int getdata(){ return data; }
}
class doubleLL{
simpul head, tail;
int jumlah;
public doubleLL(){ jumlah=0; head=tail=null; }
void tambahdepan(int d){
simpul baru = new simpul(d);
if(head==null){
head=tail=baru;
}
else{
head.prev = baru;
baru.next = head;
head = baru;
}
}
void hapusdepan(){
if (head==null){
System.out.println("Linked List kosong...");
}
else if(head.next==null){ //linked list tinggal 1 simpul
head = tail = null;
}
else{ //linked list memiliki > 1 simpul
head = head.next;
head.prev = null;
}
}
void tampil(){
simpul temp;
System.out.print("Baca maju : ");
for(temp=head; temp!=null; temp=temp.next){
System.out.print(temp.getdata()+" ");
}
System.out.print("\nBaca mundur : ");
for(temp=tail; temp!=null; temp=temp.prev){
System.out.print(temp.getdata()+" ");
}
System.out.println();
}
}
public class appdoublelinkedlist {
public static void main(String h[]){
doubleLL dll = new doubleLL();
dll.tambahdepan(7);
dll.tampil();
dll.tambahdepan(6);
dll.tampil();
dll.tambahdepan(8);
dll.tampil();
dll.hapusdepan();
dll.tampil();
dll.hapusdepan();
dll.tampil();
dll.hapusdepan();
dll.tampil();
dll.hapusdepan();
}
}
int data;
simpul next, prev;
public simpul(int d){ data=d; next=prev=null; }
int getdata(){ return data; }
}
class doubleLL{
simpul head, tail;
int jumlah;
public doubleLL(){ jumlah=0; head=tail=null; }
void tambahdepan(int d){
simpul baru = new simpul(d);
if(head==null){
head=tail=baru;
}
else{
head.prev = baru;
baru.next = head;
head = baru;
}
}
void hapusdepan(){
if (head==null){
System.out.println("Linked List kosong...");
}
else if(head.next==null){ //linked list tinggal 1 simpul
head = tail = null;
}
else{ //linked list memiliki > 1 simpul
head = head.next;
head.prev = null;
}
}
void tampil(){
simpul temp;
System.out.print("Baca maju : ");
for(temp=head; temp!=null; temp=temp.next){
System.out.print(temp.getdata()+" ");
}
System.out.print("\nBaca mundur : ");
for(temp=tail; temp!=null; temp=temp.prev){
System.out.print(temp.getdata()+" ");
}
System.out.println();
}
}
public class appdoublelinkedlist {
public static void main(String h[]){
doubleLL dll = new doubleLL();
dll.tambahdepan(7);
dll.tampil();
dll.tambahdepan(6);
dll.tampil();
dll.tambahdepan(8);
dll.tampil();
dll.hapusdepan();
dll.tampil();
dll.hapusdepan();
dll.tampil();
dll.hapusdepan();
dll.tampil();
dll.hapusdepan();
}
}
Subscribe to:
Posts (Atom)