BAB : ENCAPSULATION
NAMA : LATIFA GIBRANOVA ANWAR
NIM : 175150407111039
TANGGAL : 13/03/2018
ASISTEN : HABIB YAFI ARDI
A. DEFINISI MASALAH
Anda dan tim anda mendapat sebuah proyek untuk merancang sistem transaksi pada
sebuah swalayan Tiny. Anda ditugasi oleh tim untuk membuat programnya berdasarkan
hasil analisis tim anda :
1. Informasi akun seorang pelanggan (saldo, nomor pelanggan, nama) tidak bisa
diubah oleh pelanggan secara langsung.
2. Nomor pelanggan terdiri dari 10 digit, dimana 2 digit awal adalah jenis rekening
o 38 : Pelanggan jenis silver; setiap pembelian diatas 1 jt maka mendapat
cashback sebesar 5%
o 56 : Pelanggan jenis gold; setiap pembelian diatas 1 jt maka mendapat
cashback sebesar 7%, selain itu cashback 2% (cashback kembali ke
saldo)
o 74 : Pelanggan jenis platinum; setiap pembelian diatas 1 jt maka mendapat
cashback sebesar 10%, selain itu cashback 5% (cashback kembali ke
saldo)
3. Pelanggan harus memiliki saldo minimal Rp10.000, jika saldo pasca transaksi
kurang dari batas minimal tadi, maka transaksi pembelian dianggap gagal
4. Buatlah sistem transaksi swalayan ini terbatas pada pembelian dan top up saja
dan menggunakan PIN dan nomor pelanggan sebagai syarat transaksi pembelian
atau top up.
Database.java
1 package pemograman.lanjut.Bab4;
2 import java.util.Scanner;
3 public class Database {
4 Pelanggan[] pelanggan = new Pelanggan[3];
5 Scanner input = new Scanner(System.in);
6 public Database(){
7 pelanggan[0] = new Pelanggan(9000000,
488129,"3808125204","Latifa Gibranova Anwar");
8 pelanggan[1] = new Pelanggan(9000000,
199928,"5608211078","Fitrika Fridanova");
9 pelanggan[2] = new Pelanggan(9000000,
281199,"7408131585","Bella Vian Oktavia");
10 }
11 public void TopUp(Pelanggan pelanggan){
12 int nilai, saldo;
13 boolean work;
14 do{
15 System.out.print("Jumlah Yang Ingin Di Top-Up : ");
16 nilai = input.nextInt();
17 saldo = pelanggan.getSaldo()+ nilai;
18 work = SaldoAkhir(saldo);
19 if(work == true)
20 System.out.println("\nSELAMAT! ANDA BERHASIL TOP UP
SEBESAR Rp"+nilai);
21 }while(work == false);
22 pelanggan.setSaldo(saldo);
23 }
24 public void Pembelian(Pelanggan pelanggan){
25 String pilih;
26 int saldo1, saldo2, pin, indeks = 0, a = 0;
27 double nilai;
28 boolean work;
29 System.out.print("Total Belanja : ");
30 nilai = input.nextInt();
31 if(pelanggan.getJenis().equalsIgnoreCase("Gold")){
32 if(nilai>=1000000)
33 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.07)));
34 else
35 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.02)));}
36 else
if(pelanggan.getJenis().equalsIgnoreCase("Silver")){
37 if(nilai>=1000000)
38 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.05)));
39 else
40 saldo1 = (int) ((double)pelanggan.getSaldo() -
nilai);}
41 else {
42 if(nilai>=1000000)
43 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.1)));
44 else
45 saldo1 = (int) (pelanggan.getSaldo() - (nilai-
(nilai*0.05)));}
46 pelanggan.setSaldo(saldo1);
47 work = SaldoAkhir(saldo1);
48 System.out.println("Transaksi pembelian sebesar
Rp"+(int)nilai+" Sukses");
49 }
MainSwalayanTiny.java
1 package pemograman.lanjut.Bab4;
2 import java.util.Scanner;
3 public class MainSwalayanTiny {
4 int pin;
5 public static void main(String[] args) {
6 Scanner input = new Scanner(System.in);
7 Database data = new Database();
8 MainSwalayanTiny obj = new MainSwalayanTiny();
9 int pilih, pin, indeks;
10 String nopel;
11 boolean work;
12 int count=0;
13 do {
System.out.print(" SELAMAT DATANG DI SWALAYAN TINY\n"
+
"===========================================================\n"
+ "Masukan PIN Anda : ");
14 pin = input.nextInt();
15 obj.getPin(pin);
16 System.out.print("Masukan No. Pelanggan Anda : ");
17 input.nextLine();
18 nopel = input.nextLine();
19 work = data.PIN_REK(data.pelanggan, pin, nopel)
20 count++;
21 if(work == true){
22 obj.nextPage();
23 }
24 if (work == false) {
25 System.out.println(" PIN atau No. Pelanggan yang anda ma
salah");
26 } if ((work == false)&&(count ==3)) {
27 System.out.println("!! ANDA TELAH MEMASUKAN PIN YANG SALAH
SEBANYAK TIGA KALI !!\n"
+ " AKUN ANDA DITANGGUHKA
");
28 break;
29 } else {
30
31 System.out.println("========================================================
32 }
46 System.out.println("========================================================
47 data.TopUp(data.pelanggan[indeks]);
48 data.Display(data.pelanggan[indeks]);
49 System.out.println("========================================================
50 break;
51 case 2:
52 System.out.println("========================================================
53 data.Pembelian(data.pelanggan[indeks]);
54 data.Display(data.pelanggan[indeks]);
55 System.out.println("========================================================
56 break;
57 case 3:
58 System.out.println("========================================================
59 System.out.println(" TERIMAKASIH SUDAH
BERTRANSAKSI\n"
+ " SILAHKAN DATANG KEMBALI DI SW
TINY");
60 break;
61 default:
62 System.out.println("Pilihan Tidak Ditemukan");
C. PEMBAHASAN
Pelanggan.java
1 Deklarasi package pemograman.lanjut
2 Deklarasi class dengan nama Pelanggan
3 Mendeklarasi variabel dengan modifier private bertipe data integer bernama Saldo
dan Pin
4 Mendeklarasi variabel dengan modifier private bertipe data String bernama NmrRek,
Nama, dan Jenis
5 Mendeklarasi variabel dengan modifier public dengan nama constructor Pelanggan
dan parameter yang bertipe data integer dengan nama Saldo dan Pin serta parameter
yang bertipe data String dengan nama NmrRek dan Nama
6 Mendeklarasi array char dengan nama digit yang memiliki 2 indeks
7 Melalukan perulangan dengan for hingga kondisi yang ada pada Loop Condition
hingga baris 11
8 Perulangan for
9 Mendeklarasi dan inisialisasi variabel nilai dengan mengcasting variabel digit untuk
dimasukkan nilainya
10 Menginisialisasi atribut Saldo dengan nilai yang diberikan pada variabel Saldo dari
suatu objek dibuat
11 Menginisialisasi atribut Pin dengan nilai yang diberikan pada variabel Pin dari suatu
objek dibuat
12 Menginisialisasi atribut NmrRek dengan nilai yang diberikan pada variabel NmrRek
dari suatu objek dibuat
Menginisialisasi atribut Nama dengan nilai yang diberikan pada variabel Nama dari
13 suatu objek dibuat
Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
14 yang ada di baris selanjutnya
Mendeklarasikan Jenis dengan String Gold
15 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
16 yang ada di baris selanjutnya
Mendeklarasikan Jenis dengan String Silver
17 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
18 yang ada di baris selanjutnya
Mendeklarasikan Jenis dengan String Platinum
19 Akhir dari constructor berjalan
20 Mendeklarasikan method getSaldo yang bertipe data integer
21 Mengembalikan nilai pada atribut Saldo ketika program dijalankan
22 Akhir dari method getSaldo
23 Mendeklarasikan method getPin yang bertipe data integer
24 Mengembalikan nilai pada atribut Pin ketika program dijalankan
25 Akhir dari method getPin
26 Mendeklarasikan method getNmrRekyang bertipe data integer
27 Mengembalikan nilai pada atribut Saldo ketika program dijalankan
28 Akhir dari method getNmrRek
29 Mendeklarasikan method getNama yang bertipe data integer
30 Mengembalikan nilai pada atribut Nama ketika program dijalankan
31 Akhir dari method getNama
32 Mendeklarasikan method getJenis yang bertipe data integer
33 Mengembalikan nilai pada atribut Jenis ketika program dijalankan
34 Akhir dari method getJenis
35 Mendeklarasikan method public tipe void bernama setSaldo yang berparameter
36 variabel Saldo yang bertipe data double
37 Menginisialisas
38 Akhir dari method setSaldo
39 Mendeklarasikan method setPin yang bertipe void dengan parameter Pin yang
40 bertipe data integer
41 Akhir dari method void
42 Akhir dari class Pelanggan
Database.java
1 Deklarasi package pemograman.lanjut.Bab4
2 Melakukan import dari package Scanner untuk menggunakan fungsi scanner pada
program
3 Deklarasi class dengan nama Database
4 Mendeklarasi array Nasabah dengan nama pelanggan yang memiliki 3 indeks
5 Deklarasi variabel Scanner dengan nama variabel input
6 Mendeklarasikan constructor Database
7 Instansiasi objek pada kelas Pelanggan dengan nama pelanggan indeks ke 0
8 Instansiasi objek pada kelas Pelanggan dengan nama pelanggan indeks ke 1
9 Instansiasi objek pada kelas Pelanggan dengan nama pelanggan indeks ke 2
10 Akhir dari constructor
11 Mendeklarasikan method TarikTunai yang bertipe void dengan parameter pelanggan
12 Mendeklarasikan variabel nilai dan saldo dengan tipe integer
13 Mendeklarasikan variabel work dengan tipe boolean
14 Awal dari perulangan do while
15 Mencetak "Jumlah Yang Ingin Di Top-Up : "
16 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable nilai
17 Inisialisasi variabel saldo yang bernilai hasil dari isi variabelpelanggan.getSaldo()
ditambah dengan isi darivariabel nilai
18 Memanggil method SaldoAkhir dengan memberikan 1 parameter variabel saldo
19 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
20 Mencetak "\nSELAMAT! ANDA BERHASIL TOP UP SEBESAR Rp" serta isi dari
variabel nilai
21 Melakukan fungsi logika if dimana ketika bernilai false, akan menjalankan program
yang ada di baris selanjutnya
22 Memanggil instance method bernama setSaldo dengan objek pelanggan dengan
memberikan variabel saldo
23 Akhir dari method TarikTunai
24 Mendeklarasikan method Pembelian yang bertipe void dengan parameter pelanggan
25 Mendeklarasikan variabel pilih dengan tipe String
26 Mendeklarasikan variabel saldo1, saldo2, pin, indeks, dan a dengan tipe integer
27 Mendeklarasikan variabel nilai dengan tipe double
28 Mendeklarasikan variabel work dengan tipe boolean
29 Mencetak "Total Belanja : "
30 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable nilai
31 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
32 Jika isi dari variabel nilai lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
33 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.07
34 Jika isi dari variabel nilai tidak lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
35 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.02
36 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
37 Jika isi dari variabel nilai lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
38 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.05
39 Jika isi dari variabel nilai tidak lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
40 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
variabel nilai
41 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
42 Jika isi dari variabel nilai lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
43 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.1
44 Jika isi dari variabel nilai tidak lebih besar sama dengan dari 1000000, program akan
menjalankan baris selanjutnya
45 Inisialisasi variabel saldo1 yang nilainya hasil pengurangan dari atribut Saldo dan
hasil dari variabel nilai dikurang variabel nilai dikali 0.05
46 Memanggil instance method bernama setSaldo dengan objek pelanggan dengan
memberikan variabel saldo
47 Inisialisasi varibel work yang nilainya sesuai dengan hasil method return Saldo Akhir
48 Mencetak "SALDO ANDA :
49 Mencetak "Transaksi pembelian sebesar Rp" serta isi dari variabel nilai ditambah
"Sukses"
50 Akhir dari method Pembelian
51 Mendeklarasikan method Display yang bertipe void dengan parameter pelanggan
52 Mencetak "Saldo Anda Saat Ini : " serta isi dari pelanggan.getSaldo();
53 Akhir dari method Display
54 Mendeklarasikan method Display yang bertipe boolean dengan parameter pelanggan,
variabel pinn yang bertipe data integer, dan variabel rek yang bertipe data String
55 Mendeklarasikan variabel nilai yang bertipe data integer yang bernilai 0
56 Melakukan perulangan for
57 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
58 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
59 Post increment dari variabel nilai
60 Akhir dari if
61 Akhir dari perulangan for
62 Jika isi dari nilai sama dengann 1, program akan menjalankan baris selanjutnya
63 Mengembalikan nilai true
64 Jika isi dari nilai tidak sama dengann 1, program akan menjalankan baris selanjutnya
65 Mengembalikan nilai false
66 Akhir dari else
67 Akhir dari method PIN_REK
68 Mendeklarasikan method SaldoAkhir yang bertipe boolean dengan parameter saldo
yang bertipe data integer
69 Jika isi dari saldo lebih dari sama dengan 10000, program akan menjalankan baris
selanjutnya
70 Mengembalikan nilai true
71 Jika isi dari saldo tidak lebih dari sama dengan 10000, program akan menjalankan
baris selanjutnya
72 Mengembalikan nilai false
73 Akhir dari if else
74 Akhir dari method SaldoAkhir
75 Akhir dari class Pelanggan
MainSwalayanTiny.java
1 Deklarasi package pemograman.lanjut.Bab4
2 Melakukan import dari package Scanner untuk menggunakan fungsi scanner pada
program
3 Deklarasi class dengan nama MainSwalayanTiny
4 Deklarasi variabel pin bertipe data integer
5 Deklarasi dari method/fungsi main, untuk menjalankan program.
6 Deklarasi variabel Scanner dengan nama variabel input
7 Instansiasi objek bernama data
8 Instansiasi objek bernama obj
9 Deklarasi variabel pilih, pin, dan indeks bertipe data integer
10 Deklarasi variabel nopel bertipe data String
11 Deklarasi variabel work bertipe data boolean
12 Deklarasi variabel count bertipe data integer bernilai 0
13 Mencetak " SELAMAT DATANG DI SWALAYAN TINY\n" +
14 "===========================================================\n"
+ "Masukan PIN Anda :"
15 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable pin
16 Memanggil method nextPage melalui object ob
17 Mencetak "Masukan No. Pelanggan Anda : "
18 Perintah untuk memasukkan inputan dari user
19 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable nopel
20 Post increment dari variabel count
21 Jika nilai dari work sama dengan true, program akan menjalankan baris selanjutnya
22 Memanggil method nextPage melalui object ob
23 Akhir dari if
24 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
25 Mencetak " PIN atau No. Pelanggan yang anda masukan salah"
26 Melakukan fungsi logika if dimana ketika bernilai true, akan menjalankan program
yang ada di baris selanjutnya
27 Mencetak "!! ANDA TELAH MEMASUKAN PIN YANG SALAH SEBANYAK
TIGA KALI !!\n" + " AKUN ANDA DITANGGUHKAN "
28 Batas dari kondisi if
29 Program akan menjalankan baris selanjutnya jika pada fungsi if bernilai salah
30 Mencetak
"==========================================================="
31 Akhir dari else
32 Deklarasi while dengan memasukkan kondisi perulangan. Apabila while bernilai true
maka akan mengulang pada bagian awal do. Jika bernilai false maka akan keluar dari
perulangan
33 Akhir dari perulangan do while
34 Mendeklarasikan method nextPage yang bertipe void
35 Deklarasi variabel Scanner dengan nama variabel input
36 Instansiasi objek bernama data
37 Deklarasi variabel pilih dan indeks bertipe data integer
38 Inisialisasi varibel indeks yang nilainya sesuai dengan hasil method return Nama
39 Mencetak "Selamat datang "
40 Perulangan do while
41 Mencetak "\n=====================Pilih
Transaksi======================\n" + "1. Top Up\n" + "2. Transaksi
Pembelian\n" + "3. Keluar \n" + "Pilih : "
42 Perintah untuk memasukkan inputan dari user yang disimpan dalam variable pilih
43 Pencabangan logika dengan menggunakan switch-case
44 Mendeklarasikan kondisi pertama
45 Mencetak
"==========================================================="
46 Memanggil instance method bernama TopUpdengan objek data dengan memberikan
objek pelanggan
47 Memanggil instance method bernama Display dengan objek data dengan memberikan
objek pelanggan
48 Mencetak
"==========================================================="
49 Batas dari case satu
50 Mendeklarasikan kondisi kedua
51 Mencetak
"==========================================================="
52 Memanggil instance method bernama Pembelian objek data dengan memberikan objek
pelanggan
53 Memanggil instance method bernama Display dengan objek data dengan memberikan
objek pelanggan
54 Mencetak
"==========================================================="
55 Batas dari case dua
56 Mendeklarasikan kondisi ketiga
57 Mencetak
"==========================================================="
58 Mencetak " TERIMAKASIH SUDAH BERTRANSAKSI\n" + "
SILAHKAN DATANG KEMBALI DI SWALAYAN TINY"
59 Batas dari case tiga
60 Jika nilai yang dimasukkan pada variabel pilihan tidak ada dimasing-masing kondisi,
maka statement yang berada di default akan di proses dan akan tercetak MENU
61 PILIHAN TIDAK TERSEDIA"
62 Mencetak "Pilihan Tidak Ditemukan"
D. SCREENSHOT PROGRAM
Top Up dan Transaksi Jenis Silver
Test.java
1 package pemograman.lanjut;
2 public class Test {
3 public static void main(String [] args) {
4 Student s1=new Student();
5 s1.setName("Enkapsulasi");
6 s1.setMark(90);
7 System.out.println("s1Name is "+s1.getName());
8 System.out.println("s1Mark is "+s1.getMark());
9 System.out.println("name dan mark
"+s1.getName()+" "+s1.getMark());
10 }
11 }
2. Jika pada baris 6 s1.setName diubah menjadi s1.getName apa yang terjadi?
jelaskan!
Jawab:
Sama seperti yang sudah dijelaskan sebelumnya, Baris ke-6 error karena
parameter yang di inputkan berupa String, sedangkan seharusnya parameter yang
di inputkan adalah integer. Maka, agar program tidak error tanda “” dihilangkan.
3. Setelah diperbaiki, ubahlah hak akses pada baris 4 (pada class Student) menjadi
private apa yang terjadi jika class Test dijalankan? Jelaskan!
Jawab:
Akan terjadi error pada baris ke-5 yaitu pada saat pemanggilan method setName
di Test.java karena access modifier diubah dari public menjadi private dimana
method itu hanya bisa diakses pdaa class itu sendiri (Student.java) tidak bisa di
class yang lain (Test.java)
Student.java
1 public class Student {
2 private String name;
3 private int mark;
4 private void setName(String n){
5 name=n;
6 }
7 public String getName(){
8 return name;
9 }
10 public void setMark(int m){
11 mark=m;
12 }
13 public int getMark(){
14 return mark;
15 }
16 }
4. Jika kedua kelas diatas terdapat dalam package yang sama apakah konsep
enkapsulasi tetap berfungsi? jelaskan!
Jawab :
Enkapsulasi akan tetap berfungsi apabila sesuai dengan kapasitas hak akses yang
dibuat. Maka dari itu terdapat berbagai jenis enkapsulasi supaya program dapat
memahami akses mana saja yang dapat diizinkan terlepas dari class tersebut
berbeda package atau tidak.
B. Encapsulation 2
1. Method apakah yang menjadi accessor (getter) ?
Jawab :
TestVehicle1.java
//
7 System.out.println("Add load(100kg) : " +
(vehicle.load=500));
//
Hasil Output :
TestVehicle1.java
//
10 System.out.println("Add load(100kg) : "
+(vehicle.load=500));
//
4. Ulangi instruksi pada nomer 4 dengan mengubah tipe data pada atribut load dan
maxload pada class Vehicle1 menjadi protected.
Jawab :
Vehicle1.java
//
4 protected double load, maxLoad;
//
TestVehicle1.java
//
7 System.out.println("Add load(100kg) : " +
(vehicle.load=500));
//
Hasil Output :
Vehicle1.java
//
4 protected double load, maxLoad;
//
TestVehicle1.java
//
10 System.out.println("Add load(100kg) : "
+(vehicle.load=500));
//
5. Ulangi instruksi pada nomer 4 dengan mengubah tipe data pada atribut load dan
maxload pada class Vehicle1 menjadi default.
Jawab!
Vehicle1.java
//
4 double load, maxLoad;
//
TestVehicle1.java
//
7 System.out.println("Add load(100kg) : " +
(vehicle.load=500));
//
Hasil Output :
Vehicle1.java
//
4 double load, maxLoad;
//
TestVehicle1.java
//
10 System.out.println("Add load(100kg) : "
+(vehicle.load=500));
//
F. KESIMPULAN
Dari percobaan yang sudah saya lakukan, dapat disimpulkan bahwa Encapsulation
adalah pembungkus, encapsulation pada object oriented maksudnya adalah
membungkus class dan menjaga apa apa saja yang ada didalam class tersebut, baik
method ataupun atribut, agar tidak dapat di akses oleh class lainnya.
Ketika sebuah program Java ingin diciptakan, dan user menginginkan beberapa data
dilarang untuk diakses, pengimplementasi inilah yang sering disebut Access Modifiers.
Access Modifier / Pemberian hak akses adalah sesuatu hal yang paling penting
diperhatikan oleh developer atau programmer Java dalam membuat sebuah program
atau aplikasi. Kegunaan Access Modifiers ini untuk memberi hak akses kepada user.
Tentu tidak semua data yang berada di dalam suatu kelas, atau turunannya dapat diakses.
1. Akses Default adalah tipe yang hanya class dalam package yang sama yang
memiliki hak akses terhadap variabel dan methods dalam class. Contoh
program sebagai berikut:
2. Akses Public adalah class member untuk diakses baik dari dalam dan luar class.
Sebagai contoh:
3. Akses Private pengaksesan class hanya dapat diakses oleh class dimana tipe
ini dibuat. Contoh kutipan program dari akses private:
4. Akses Protected mengijinkan class member untuk diakses oleh method dalam
class tersebut dan elemen – elemen subclass. Sebagai contoh: