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. 
 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
    }
}

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());
    }
}

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();
    }
}

Contoh Program Linked List Sederhana dalam Bahasa Java

package bp2;
class node {
    int data;
    node next;
    public node(int d){
        data = d; next = null;
    }
    int getnode(){ return (data); }
}
class LinkedList2{
    node head;
    node tail;
    int jumlah;
    public LinkedList2(){
        head = null; tail = null; jumlah = 0;
    }
    void tambahbelakang(node baru){
        if(head==null){
            head = baru; tail = baru;
        }
        else {
            tail.next = baru;
            tail = baru;
        }
    }
    //bagaimana dengan tambah depan?
    //bagaimana pula dengan hapus belakang atau
    //hapus berdasar pencarian?
    //silahkan ditambahkan sendiri :)
    void hapusdepan(){
        int data;
        if(head.next != null){
            data = head.getnode();
            head = head.next;
            System.out.println("Data "+data+" berhasil dihapus..");
        }
        //node terakhir belum bisa dihapus.
        //silahkan code-nya ditambahkan sendiri :)
    }
    void tampil(){
        node temp;
        for(temp=head; temp!=null; temp=temp.next){
            System.out.print(temp.getnode()+" ");
        }
    }
}
public class linkedlist {
    public static void main(String k[]){
        node simpul1 = new node(4);
        node simpul2 = new node(3);
        node simpul3 = new node(5);
       
        LinkedList2 LL = new LinkedList2();
        LL.tambahbelakang(simpul1);
        LL.tambahbelakang(simpul2);
        LL.tambahbelakang(simpul3);
        LL.tampil();
        LL.hapusdepan();
        LL.tampil();
        LL.hapusdepan();
        LL.tampil();
        LL.hapusdepan();
        LL.hapusdepan();
    }
}

Contoh Program Java: Sort dan Search Memakai Library Arrays


Pengurutan dan pencarian adalah topik yang senantiasa berhubungan. Setidaknya data yang sudah terurut akan memudahkan pencarian. Untuk data berukuran kecil mungkin belum terasa. Namun, jika data sudah berukuran besar, pencarian yang efektif menjadi hal yang sedemikian penting.


Ada cukup banyak metode pencarian maupun pengurutan yang bisa kita temukan di internet. Di dalam topik pengurutan kita kenal bubble sort, selection sort, insertion sort hingga yang melibatkan rekursi seperti quick sort dan merge sort. Sedangkan dalam hal pencarian kita kenal metode sequential dan indexed sequential search serta binary search.

Mengingat pentingnya kedua topik tersebut, bahasa pemrograman Java telah menyediakan pustakan khusus untuk menanganinya. Programmer tidak perlu lagi menulis source code dari awal. Dengan memakai pustaka Arrays yang ada dalam paket java.util, sorting dan searching dapat dilakukan dengan begitu mudahnya. Berikut ini contoh programnya:

import java.util.Arrays; //import pustaka
/**
*
* @author bluejundi
*/
public class sortnsearch {
static int data [] = {2,5,1,3,9,6,0,7,8}; //siapkan array-nya
public static void main(String args[])
{
Arrays.sort(data); //panggil method sorting
System.out.println(Arrays.toString(data)); //tampilkan hasil sorting
int key = 7; //set kunci yang akan dicari
int indeks_kunci = Arrays.binarySearch(data, key); //panggil method binary search
System.out.println("Kunci "+key+" ditemukan di indeks "+indeks_kunci); //tampilkan hasil search
}
}

Download file: sortnsearch.java