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