• Tidak ada hasil yang ditemukan

Class, Object, Method Pada Java

N/A
N/A
Protected

Academic year: 2018

Membagikan "Class, Object, Method Pada Java"

Copied!
17
0
0

Teks penuh

(1)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 1

Pemrograman Berorientasi Objek

Class, Object, Method Pada Java

Dalam pemrograman tradisional atau prosedural, seluruh data dan kode digabung menjadi satu bagian dalam satu program. Untuk membuat program-program sederhana, penggunaan jenis pemrograman procedural tidak menjadi masalah. Namun masalah akan muncul ketika program yang dibuat berkembang lebih besar dan kompleks. Hal inilah yang menjadi awal dibuatnya model pemrograman berorientasi objek.

Pada pemrograman berorientasi objek, komponen-komponen penyusun program secara konseptual akan dipecah menjadi bagian-bagian tersendiri yang disebut dengan objek.

Dalam pemrograman berorientasi objek, setiap objek akan memiliki data berupa variable maupun konstanta, dan memiliki method berupa fungsi. Sehingga objek dapat didefinisikan sebagai suatu entitas yang memiliki data dan method.

Kelebihan Pemrograman Berorientasi Objek

Objek-objeknya dapat digunakan ulang (reuseable) untuk program-program lain Programnya lebih terstruktur dan lebih mudah untuk dikembangkan

Bersifat natural karena perilaku dan sifat-sifat objek didalam program akan disesuaikan dengan objek-objek nyata yang ada di alam sekitar kita.

Kelas (Class) dan Objek (Object)

(2)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 2 methodnya, hewan memiliki cara berkembangbiak, cara mencari makanan, cara bertahan hidup dan sebagainya. Contoh lainnya adalah manusia sebagai objek dengan data-data berupa nama, jenis kelamin, tinggi badan, berat badan, usia dan yang lainnya. Untuk methodnya manusia memiliki cara bicara, cara berjalan, cara tertawa dan yang lainnya.

Objek dalam pemrograman berorientasi objek diabstraksikan menjadi sebuah kelas. Kelas dapat didefinisikan sebagai blueprint atau kerangka yang mendefinisikan variable-variabel dan method umum dari sebuah objek tertentu. Karena kelas bersifat abstrak, ketika membuat sebuah kelas baru maka kita telah mendefinisikan tipe data baru. Sekali didefinisikan, tipe data baru tersebut dapat digunakan untuk membuat suatu objek dari tipe tersebut. Dengan kata lain, kelas merupakan pola (template) untuk pembuatan objek, dan objek adalah wujud nyata (instance) dari sebuah kelas. Sebagai contoh, sebuah kelas manusia memiliki instance berupa nama-nama atau wujud dari manusia, seperti Udin, Kabayan, Iteung dan yang lainnya.

Modifier

Merupakan sifat yang dimiliki oleh setiap atribut, method maupun kelas dalam java. Modifier akses adalah modifier yang selalu digunakan. Modifier akses terdiri dari private, default, protected, public. Selain itu ada pula modifier final, static, abstract, synchronized, native, dan storage (transient, volatile).

Deklarasi Kelas

Dalam pemrograman java, kelas didefinisikan dengan kata kunci class. Untuk menyimpan file, simpan dengan nama yang sama seperti nama kelas yang digunakan dalam file tersebut. Kemudian didalam java ada aturan tersendiri untuk pemberian nama class, yaitu harus diawali dengan huruf besar untuk membedakan antara class dan objek.

Berikut adalah bentuk umum dari pendeklarasian class pada java :

[modifier] class nama_class { [deklarasi_atribut] [deklarasi_konstruktor] [deklarasi_metode] }

Deklarasi Atribut

Atribut merupakan karateristik yang dimiliki oleh objek. Deklarasi atribut dibutuhkan kelas untuk membentuk objek dan diletakkan didalam class body atau diluar method.

Berikut adalah pendeklarasian atribut pada java : - Atribut tanpa inisialisasi :

- Atribut dengan inisialisasi :

Contoh pendeklarasian atribut :

[modifier] tipedata nama_atribut ;

[modifier] tipedata nama_atribut = nilai;

(3)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 3

[modifier] tipe_nilaiKembali nama_method (parameter input) { Method body;

}

void nama_method (parameter input) { Method body;

}

public int LuasPersegi() { int luas = sisi * sisi; return luas;

}

}

public int LuasPersegi(int sisi) { return sisi * sisi; }

Deklarasi Method

Merupakan tingkah laku yang dimiliki oleh objek. Method digunakan untuk memodularisasi program pemisah satu tugas menjadi satu unit tersendiri. Didalam java terdapat dua buah method, yaitu :

a. Fungsi. Merupakan method yang memiliki nilai balik jika method tersebut dipanggil. Cara pembuatan sebuah fungsi adalah dengan cara menentukan nilai baliknya, kemudian nama methodnya.

b. Prosedur. Merupakan method yang tidak mengembalikan nilai. Cara pembuatan prosedur sama dengan fungsi, namun bedanya adalah pada prosedur menggunakan kata kunci void.

Berikut adalah pendeklarasian method pada java : - Method fungsi tanpa parameter :

- Method fungsi menggunakan parameter :

- Method prosedur tanpa parameter :

- Method prosedur menggunakan parameter :

Contoh pendeklarasian method : - Method fungsi tanpa parameter :

- Method fungsi menggunakan parameter :

[modifier] tipe_nilaiKembali nama_method () { Method body;

}

void nama_method () { Method body;

(4)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 4

void LuasPersegi() {

System.out.println(“Luas Persegi = ” + (sisi * sisi));

}

void LuasPersegi(int s) { sisi = s;

}

get namaInstanceVariabel

public class Persegi{ private int sisi;

public int getSisi(){ return sisi;

} }

set namaInstanceVariabel

public class Persegi{ private int sisi;

public void setSisi(int temp){ sisi = temp;

} }

- Method prosedur tanpa parameter :

- Method prosedur menggunakan parameter :

Accessor Method

Accessor method digunakan untuk membaca nilai variable pada class, baik berupa instance maupun static.

Berikut penulisan accessor method :

Contoh pendeklarasian accessor method :

Mutator Method

Mutator method digunakan untuk memberi atau mengubah variable dalam class oleh object lain.

Berikut penulisan mutator method :

(5)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 5

nama_class nama_object;

nama_object = new nama_constructor();

Kotak k = new Kotak();

Kotak k;

k = new Kotak();

Object

Object adalah instance atau representasi nyata dari sebuah kelas. Sebuah kelas bisa memiliki banyak object, setiap object mempunyai sifat yang sama persisi seperti yang didefinisikan dalam kelas tersebut. Untuk pemberian nama sebuah object diawali dengan huruf kecil.

Berikut adalah pendeklarasian object pada java :

Contoh pendeklarasian object :

Kata kunci this

Java menyediakan kata kunci this yang merupakan referensi ke object yang sedang aktif. This digunakan didalam method untuk mewakili nama kelas bersangkutan.

Berikut adalah pendeklarasian kata kunci this :

Contoh kode java yang tidak menggunakan kata kunci this :

Contoh kode java yang menggunakan kata kunci this :

Class PersegiPanjang{

double panjang, lebar; PersegiPanjang(double p, double l){

this.panjang = p; this.lebar = l; }

}

nama_class nama_object = new nama_constructor();

Class PersegiPanjang{

double panjang, lebar; PersegiPanjang(double p, double l){

panjang = p; lebar = l; }

}

(6)
(7)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 7

Overloading Method, Constructor Dan Access Modifier

Overloading Method

Dalam satu class dapat mendefinisikan lebih dari satu method dengan nama yang sama tetapi parameter yang dideklarasikan harus berbeda baik itu jumlahnya ataupun tipe parameternya.

Jenis-jenis method overloading: 1. Jumlah parameter beda, tipe beda 2. Jumlah parameter sama, tipe beda 3. Jumlah parameter beda, tipe sama

Syarat-syarat overloading:

1. Dalam sebuah kelas diperbolehkan lebih dari satu method dengan nama yang sama dengn catatan method dapat dibedakan berdasarkan banyaknya parameter atau tipe data parameter.

2. Overloading tidak bisa dilakukan dengan membedakan nilai kembaliannya. 3. Overloading juga bisa dilakukan pada sub kelasnya.

Contoh method yang mengalami overloading: Method yang di Overload :

myMethod(String s, int i, float f)

Method yang mengOverload (LEGAL)

myMethod(String s1, String s2, String s3)

Jumlah arugument berbeda, tapi urut-urutan tipe data berbeda

myMethod(String s, float f, int i)

Jumlah arugument berbeda, tapi urut-urutan tipe data berbeda

Method yang mengoverload (ILEGAL)

myMethod(String s, int i, float f)

Jumlah argument sama, urut-urutan tipe data sama.

myMethod(String x, int y, float z)

Jumlah argument sama, urut-urutan tipe data sama.

Yang haru diperhatikan dari contoh ini adalah, nama variabel yang berbada tidak lantas menyebabkan argument list menjadi berbeda.

(8)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 8 Overloading method terjadi pada objek yang sama. Ketika overloading method dipanggil, Java mencari kesamaan antara argumen yang digunakan untuk memanggil method dan parameter dari method. tetapi, kesamaan ini tidak mutlak karena pada Java ada otomatisasi konversi tipe yang berbeda.

Contoh overloading method secara keseluruhan pada program java :

class OverloadMetode {

//konversi tujuan bertipe integer void test(int a)

{

System.out.println("Hasil konversi byte ke integer :"+a); }

}

class OverloadKonversi {

public static void main(String args[]) {

OverloadMetode ob = new OverloadMetode(); //variabel asal yang akan dikonversi bertipe byte byte i=88;

ob.test(i);//memanggil test(integer) }

}

Konversi otomatis pada java seperti program diatas, hanya dapat dilakukan jika kedua aturan ini dipenuhi:

1. Kedua tipe data (data asal dan tujuan) memiliki kompatibilitas(compatible). 2. Tipe tujuan mempunyai range lebih besar daripada tipe asal.

Selain itu Java juga mengerjakan konversi secara otomatis ketika menyimpan konstanta integer literal menjadi variable bertipe byte, short, atau long.

Deklarasi Constructor

Constructor adalah method khusus yang didefinisikan didalam kelas dan akan dipanggil secara otomatis setiap kali terjadi instansiasi objek. Jika dalam suatu kelas kontruktor tidak didefinisikan, maka secara otomatis Java akan membuat sebuah constructor, yaitu null constructor. Constructor tersebut dinamakan sebagai default constructor.

Namun jika kita mendefiniskan sebuah constructor baru untuk kelas yang dibuat, maka default constructor sudah tidak berfugsi atau tidak digunakan lagi.

Ciri-ciri default constructor:

3. Dibuat secara otomatis saat class dikompilasi.

4. Dibuat secara otomatis jika class yang dikompilasi tidak mempunyai constructor sama sekali.

5. Tidak memiliki parameter formal.

Contoh default constructor :

(9)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 9

{

//area penulisan kode }

Sifat-sifat constructor:

1. Nama constructor sama dengan nama class 2. Tidak memiliki tipe data termasuk void 3. Tidak memiliki return value.

4. Dieksekusi ketika terjadi instansiasi.

5. Dapat mempunyai akses modifier, biasanya public namun dapat berupa private 6. Tidak dapat dipanggil secara langsung, namun harus dipanggil dengan

menggunakan operator new pada pembentukan sebuah class.

Berikut cara pendeklarasian constructor :

- Pendeklarasian tanpa menggunakan parameter

[modifier] nama_class () {

//statement }

- Pendeklarasian menggunakan parameter

[modifier] nama_class (parameter) {

//statement }

Overloading Constructor

Constructor dapat melakukan overloading. overloading constructor terjadi pada objek yang berbeda-beda, nilai argument berbeda, sehingga method bisa lebih dari satu.

Berikut contoh overloading pada constructor:

class Kotak { double panjang; double lebar; double tinggi;

// Mendefinisikan constructor dengan satu parameter Kotak(double sisi) {

panjang = lebar = tinggi = sisi; }

// Mendefinisikan constructor dengan tiga parameter Kotak(double p, double l, double t) {

panjang = p; lebar = l; tinggi = t; }

double hitungVolume() {

(10)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 10 }

class Over {

public static void main(String[] args) {

Kotak k1, k2;

k1 = new Kotak(10); k2 = new Kotak(4, 3, 2);

//Menampilkan volume dari masing-masing objek Kotak System.out.println("Volume k1 = " + k1.hitungVolume()); System.out.println("Volume k2 = " + k2.hitungVolume()); }

}

Pada kode program diatas didefinisikan ada dua buah constructor dengan nama Kotak. Constructor pertama memiliki satu buah parameter dimana parameter sisi sama dengan nilai panjang, lebar dan tinggi. Constructor kedua memiliki tiga buah parameter dengan nilai panjang, lebar dan tinggi yang berbeda.

Access Modifier

Berikut adalah jenis-jenis access modifier : No

. Access Modifier Pada class dan Interface Pada Method & Variable

1. Default Dapat diakses oleh yang sepaket.

Diwarisi oleh subkelas dipaket yang sama, dapat diakses oleh method-method yang sepaket. 2. Public Dapat diakses dimanapun Diwarisi oleh subkelasnya, dapat diakses dimanapun.

3. Protected Tidak bisa diterapkan Diwarisi oleh subkelasnya, dapat diakses oleh method-method yang sepaket.

4. private Tidak bisa diterapkan

Tidak dapat diakses dimanapun kecuali oleh method-method yang ada dalam kelas itu sendiri.

(11)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 11 Inheritance

Inheritance dapat menciptakan kelas umum yang mendefinisikan sifat/watak umum. Kelas ini kemudian dapat diwarisi oleh kelas-kelas lain, yang merupakan kelas-kelas yang lebih spesifik, dengan menambahkan hal-hal unik. Dalam terminologi java, sebuah kelas yang diwarisi dikenal dengan superkelas. Kelas yang mewarisi dikenal dengan subkelas. Oleh karena itu, subkelas merupakan versi terspesialisasi dari superkelas. Subkelas mewarisi semua variabel dan metode instans yang didefinisikan oleh superkelas. Pada konsep Inheritance ada beberapa istilah yang perlu diketahui, yaitu :

Sub class, digunakan untuk menunjukkan class anak atau turunan secara hirarkis dari super class

Super class, digunakan untuk menunjukkan class induk secara hirarkis dari sub class (class anak)

Extends, digunakan untuk menunjukkan, bahwa suatu class merupakan turunan dari class lain. Misal A extends B, berarti class A adalah turunan dari class B. A merupakan subclass, sedangkan B merupakan superclass.

Super, digunakan untuk memanggil konstruktor dari super class atau memanggil variable yang mengacu pada super class. Misal super(x,y,z), berarti atribut x,y,z diambil dari atribut pada class induk

Cara Inheritance Kelas Pendeklarasian kelas turunan :

Class KelasTurunan extends KelasDasar{ TubuhKelas

}

Pemanggilan Constructor Super Kelas

Superkelas tidak mengandung konstruktor. Untuk itu digunakan kata kunci super. Super (nama, nim)

Pemanggilan konstruktor kelas dasar harus memenuhi persyaratan berikut :

Pemanggilan dengan super seperti di atas hanya bisa dilakukan pada konstruktor. Pemanggilan konstruktor superkelas harus berkedudukan sebagai pernyataan

pertama dalam konstruktor.

Overriding

Overriding adalah suatu cara untuk mendefinisikan ulang method yang ada pada class induk apabila class anak menginginkan adanya informasi yang lain. Overriding dilakukan dengan cara menulis ulang method yang ada pada class induk dengan syarat bahwa nama dan parameter fungsi tersebut harus sama (tidak boleh diubah). Meskipun fungsi telah ditulis ulang oleh class anak, fungsi yang asli pada class induk masih dapat dipanggil di class anak dengan menggunakan class super.

Overloading

Overloading fungsi adalah penulisan beberapa fungsi (dua atau lebih) yang memiliki nama yang sama. Pada bahasan overloading dikenal istilah signature. Signature sebuah fungsi adalah parameter lengkap dengan tipe datanya yang terdapat dalam fungsi tersebut.Misal terdapat fungsi:

(12)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 12 maka signature dari fungsi tersebut adalah (int, int, String). Suatu fungsi dikatakan

dioverloadmanakala terdapat beberapa fungsi dengan nama yang sama namun memiliki signature yang berbeda-beda, sebagai contoh

Contoh Kasus Inheritance

Menunjukkan hirarki kelas dosen., memiliki turunan berupa kelas rektor, kelas dekan dan kelas kalab. class induk (class dosen) memiliki atribut nama, nik dan jurusan. Method yang dimiliki oleh class dosen adalah view(). Class turunan dari class dosen ada tiga class. Pada class rektor, terdapat tambahan atribut berupa th_mulai dan jabatan_ke, serta method viewRektor(). Pada class dekan terdapat tambahan atribut fakultas, dan method viewDekan(). Pada class kalab terdapat tambahan atribut laboratorium, dan method viewKalab().

public void infoMahasiswa (int laki2, int perempuan,Stringkelas) {

... }

public void infoMahasiswa (int mhsLama, int mhsBaru, int mhsCuti, int angkatan)

{

... }

}}

}} Rektor

(13)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 13 Kalab

private

public void viewkalab() { super (namaX,nikX,jurX);

(14)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 14 Polimorfisme

Polimorfisme adalah kemampuan mengungkap suatu hal yang berbeda melalui satu cara yang sama. Apabila mempunyai objek yang bertipe superkelas, variable objek ini bisa diisi dengan objek superkelas ataupun objek subkelas tanpa perlu melakukan perubahan tipe. Pada polimorfisme kondisi yang harus terpenuhi supaya fungsi dapat dijalankan yaitu: 1. Semua kelas diturunkan dari suatu kelas yang sama

2. Method yang dipanggil harus melalui variabel dari super class.

3. Method yang dipanggil juga harus merupakan method yang ada pada super class. 4. Signature method harus sama baik yang ada pada super class maupun di subclass. 5. Method access attribute pada subclass tidak boleh lebih terbatas daripada yang ada

(15)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 15 Polimorfisme untuk alat-alat transportasi

Pada program utama dilakukan pemanggilan terhadap ketiga class tersebut, masing-masing dengan parameter yang bersesuaian

Interface

Interface adalah class yang hanya mengandung deklarasi method tanpa memiliki implementasi dan semua property yang dimilikinya bersifat final. Interface mirip dengan class abstrak, tetapi interface tidak terikat dengan class hierarki.

Berikut ini adalah aturan yang harus kita ingat tentang pendeklarasian interface:

1. Modifier yang digunakan hanya public atau tidak sama sekali. Jika tidak

(16)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 16

2. Semua variabel yang dideklarasikan dalam interface secara otomatis adalah static

final. Karena itu waktu pendeklarasian harus diberikan nilai.

3. Semua method adalah abstrak. Bedanya dengan class abstrak adalah kita tidak perlu

menuliskan keyword abstract pada saat mendeklarasikan method dalam interface. 4. Kita dapat mengimplementasikan lebih dari satu interface (multiple inheritance)

dengan memisahkan nama dari setiap interface dengan tanda koma.

5. Dapat terjadi saat kita mengimplementasikan lebih dari satu interface ternyata interface – interface tersebut memiliki method yang sama. Dalam hal ini method yang akan diimplementasi adalah method yang berada pada posisi pertama.

6. Semua method yang diimplemetasikan harus public.

7. Jika kita tidak mengimplementasikan semua method yang ada pada interface, maka

class tersebut harus dideklarasikan sebagai abstract class.

Untuk lebih jelasnya kita akan mengambil contoh pada dunia nyata. Misalnya pembuat remote control dan pembuat TV. Seorang pembuat remote control tentunya tidak perlu tahu merk TV dan siapa yang membuat TV tersebut untuk dikontrol menggunakan remote control tersebut. Yang perlu diketahui adalah Interface apa yang digunakan oleh TV tersebut agar dapat dikontrol. Demikian pulu si pembuat TV tidak perlu tahu bagaimana remote control tersebut dibuat. Pembuat TV hanya perlu tahu interface apa yang akan digunakan agar Tvnya dapat dikontrol oleh remote control tersebut. Perhatikan implementasinya dalam kode berikut ini.

public class TVSamsung implements Control{

String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"};

public void pindahChannel(int channel) {

System.out.println("Pindah channel pada TV Samsung ke "+ this.channel[channel]); }

public void perbesarVolume(int intensitas) {

System.out.println("Perbesar volume pada TV Samsung sebanyak "+ intensitas); }

public void perkecilVolume(int intensitas) {

System.out.println("Perkecil volume pada TV Samsung sebanyak "+ intensitas); }

}

public class RemoteControl {

public void kirimPerintahKeTv(int aksi,Control tv,int tombol){ switch(aksi){

case 1:

tv.pindahChannel(tombol); break;

case 2:

tv.perbesarVolume(tombol); break;

case 3:

tv.perkecilVolume(tombol); break;

} } }

public class TestRemoteControl { public static void main(String[] args){ TVPolitron tvp = new TVPolitron(); TVSamsung tvs = new TVSamsung(); RemoteControl rc = new RemoteControl();

rc.kirimPerintahKeTv(1,tvp,1); }

(17)

Pemrograman berorientasi objek – efazriyati@staff.gunadarma.ac.id Page 17

public interface Control {

public void pindahChannel(int channel); public void perbesarVolume(int intensitas); public void perkecilVolume(int intensitas); }

public class TVPolitron implements Control{

String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"}; public void pindahChannel(int channel) {

System.out.println("Pindah channel pada TV Politron ke "+ this.channel[channel]); }

public void perbesarVolume(int intensitas) {

System.out.println("Perbesar volume pada TV Politron sebanyak "+ intensitas); }

public void perkecilVolume(int intensitas) {

System.out.println("Perkecil volume pada TV Politron sebanyak "+ intensitas); }

Referensi

Dokumen terkait

Hanya 1 Kota dari 26 Kabupaten/Kota di Provinsi Jawa Barat yang dapat mencapai target tersebut pada tahun 2013... CAKUPAN PERSALINAN DITOLONG TENAGA KESEHATAN DI INDONESIA

Untuk mendukung kegiatan program Aksi Perbibitan Kerbau melalui kegiatan uji coba inseminasi buatan kerbau yang dimulai pada tahun 2006 – 2009, bekerjasama dengan Dinas

Puji dan syukur kehadirat Allah Yang Maha Kuasa atas semua rahmat dan karunia yang telah Dia berikan sehingga penulis dapat menyelesaikan tugas akhir ini. Penyelesaian tugas akhir

Selanjutnya, itu akan terjadi digunakan dua jenis teknik analisis (a) analisis faktor, digunakan untuk mengkonfirmasi faktor yang paling dominan variabel dalam satu kelompok dan

Dengan mengamati guru bernyanyi, siswa dapat mengidentifikasi bentuk pola irama sederhana dalam lagu dengan tepat.. Setelah mengidentifikasi pola irama sederhana,

Pendidikan Kecakapan Hidup (PKH) bagi Lembaga Kursus dan Pelatihan dan satuan pendidikan lainnya adalah program yang diselenggarakan oleh Lembaga Kursus dan Pelatihan maupun

Untuk itu, pada tahun 2018 ini Direktorat Jenderal Anak Usia Dini dan Pendidikan Masyarakat melalui Direktorat Pembinaan Kursus dan Pelatihan menyelenggarakan program

Sesuai dengan proposal yang diajukan oleh lembaga, kami siap untuk menjadi menyelenggarakan program Pendidikan Kecakapan Hidup dan menggunakan dana bantuan