Tuesday 24 March 2015

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

No comments:

Post a Comment