Modul · Web viewApa yang terjadi dengan program tersebut? dapatkah kita mengakses nilai atribut...

13

Transcript of Modul · Web viewApa yang terjadi dengan program tersebut? dapatkah kita mengakses nilai atribut...

1. CLASSClass bukanlah sebuah objek. Class digunakan untuk membangun sebuah objek dan mendefinisikan atribut dan perilaku obyek yang dibuatnya. Beberapa istilah lain class adalah template, prototype atau blue print.

Objek adalah instansiasi atau perwujudan dari Class. Sebuah class dapat memiliki banyak objek.

Untuk dapat membuat sebuah objek, kita perlu melakukan instansiasi.

cara melakukan instansiasi:

NameOfClass nameOfObject = new NameOfClass([params]);contoh, untuk membuat objek aku dari class Mahasiswa:

Mahasiswa aku = new Mahasiswa ();

Untuk mempermudah pemahaman kita, mari kita lihat contoh berikut:

Class Mahasiswa Objek Mahasiswa aku

Obek Mahasiswa kamu

attr

ibut

/ in

stan

ce

vari

able

nim 22063986 22053800nama Rukmana Chandra

DewiAmalia Indradinata

ipk 3.67 3.80

Class Mahasiswa memiliki attribut: nim, nama dan ipk

sedangkan contoh objek dari class manusia adalah aku, kamu yang masing masing mempunyai nilai atribut yang menjadi identitas mahasiswa tersebut.

Jika sudah mengerti, berikan masing-masing 3 contoh attribut untuk class berikut:

a. Mobilb. Bukuc. Laptop

Selain memiliki attribut, class juga memiliki method. Method adalah operasi yang dapat dilakukan oleh objek. Dalam bahasa pemrograman lain, method dikenal dengan function atau procedure. contoh method yang dapat dilakukan oleh objek mahasiswa adalah registrasi, belajar.

2 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

Seperti konsep pemrograman yang lain, fingsi yang pertama kali dipanggil adalah fungsi main. Dalam Java, konsep tersebut juga berlaku. Sebuah method hanya akan berjalan ketika method tersebut dipanggil.

cara memanggil method :

nameOfObject.nameOfMethod([params]);

contoh, untuk memanggil objek registrasi:

aku.registrasi();

Sekarang mari kita coba membuat penerapan dari teori diatas:

program tersebut merupakan contoh penerapan class dan method.

untuk menjalankan program tersebut, buatlah sebuah class lagi dengan nama MahasiswaTest yang isinya sebagai berikut:

pada program diatas, kita belum dapat memasukkan nilai dari setiap attribut yang kita gunakan, bukan?

3 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

Saat ini kita akan mencoba mengubah nilai attribut dari objek yang kita buat.

coba ubah program sebagai berikut!

jalankan kembali program.

Apa yang terjadi dengan program tersebut? dapatkah kita mengisi nilai atribut dengan cara seperti diatas?

kemudian, coba ubah kembali program diatas menjadi sebagai berikut:

jalankan kembali program.

Apa yang terjadi dengan program tersebut? dapatkah kita mengakses nilai atribut dengan cara seperti diatas?

2. EnkapsulasiSetelah kita melakukan pengamatan class dan objek diatas, ternyata kita tidak dapat menginputkan dan mengakses nilai pada attribut objek secara langsung.

Hal ini disebabkan karena hak akses untuk tiap attribut pada class Mahasiswa bertipe private (untuk hak akses yang lain, akan dijelaskan lebih mendetil pada

4 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

pertemuan selanjutnya). Dengan diberikannya hak akses tersebut pada sebuah attribut, maka attribut yang bersangkutan hanya bisa diakses oleh class nya.

proses inilah yang disebut dengan enkapsulasi. Jadi, kita bisa mengartikan enkapsulasi sebagai mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan penyalahguaan dari luar sistem.

Lalu, bagaimana cara memberikan nilai pada sebuah attribut yang terenkapsulasi?

kita dapat mengaksesnya menggunakan accesor dan mutator.

sekarang kita akan menambahkan acessor untuk class Mahasiswa. buka kembali Mahasiswa.java kemudian tambahkan accesor dan mutator pada program sebagai berikut:

a. mutator

Mutator digunakan untuk mengubah nilai attribut, method mutator bersifat void dan biasanya nama methodnya diawali dengan kata set (tidak wajib, hanya konvensi). dan memiliki parameter untuk menampung nilai yang ingin kita masukkan ke

b. accesorAccesor digunakan untuk mengambil nilai suatu attribut. Method ini bersifat non void karena mengembalikan nilai. Tipe datanya tergantung dari tipe data attribut yang akan diambil nilainya.

biasanya method Accesor diawali dengan kata get dan tidak memiliki parameter. namun

5 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

keyword this digunakan untuk membedakan attribut class dengan variable pada method. this mengacu pada attribut class.

setelah menambahkan accesor dan mutator pada Mahasiswa.java, sekarang kita akan melakukan testing. buka kembali MahasiswaTest.java, lalu ubah fungsi utamanya menjadi:

Apa yang terjadi ketika aku.registrasi dijalankan? apakah nama, nim dan ipk untuk objek aku telah berubah menjadi seperti ya ng kita inginkan?

Sekarang, lakukan coba ubah programmu!

Lakukan pengubahan nilai atribut objek kamu dengan nama, nim dan ipk kalian menggunakan mutaor. lalu cetak dengan accesor.

3. Constructor Constructor adalah sebuah method yang dipanggil ketika kita melakukan instansiasi suatu objek. Constructor biasanya berfungsi untuk memberikan nilai awal pada attribut ketika objek tersebut dibuat.

beberapa hal mengenai constructor:

1. mempunyai nama method yang sama dengan nama class.2. tidak mempunyai return value.3. tidak bisa dipanggil seperti pemanggilan method biasa.

Constructor hanya bisa dipanggil menggunakan keyword new.

a. Default constructorCoba lihat program yang kalian buat tadi!

6 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

Di sana tidak ada method yang sama dengan nama class bukan? Lalu, apakah kesimpulannya, pada saat instansiasi objek, tidak ada constructor yang dipanggil? BUKAN!!

Pada program tersebut, tetap ada constructor yang dipanggil pada waktu instansiasi objek. Tetapi, karena kita tidak mendefinisikan 1 pun constructor, maka java membuat default constructor.

Default constructor tidak menggunakan parameter. Jadi, jika methodnya ditulis, kira-kira seperti ini:

b. Create your own Constructor kita akan mencoba membuat constructor kita sendiri.

silakan ubah Mahasiswa.java menjadi seperti ini (accessor, mutator dan method registrasi jangan dihapus):

dan ubah Mahasiswa.java menjadi:

7 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

ketika kita belum mendefinisikan constructor, jika Mahasiswa Test.java dijalankan, hasilnya adalah:

Sekarang, compile dan run program kalian. Apakah kalian menemukan perbedaan dan memahami kegunaan constructor?

Untuk lebih memahami penggunaan constructor,ubah kembali constructor pada Mahasiswa.java menjadi :

kemudian compile Mahasiswa.java. compile dan run juga MahasiswaTest.java!

Apa output dari program?

8 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

ternyata ketika kita melakukan compile pada MahasiswaTest.java, terdapat 2 error

mengapa error tersebut muncul?

ingat!! tadi kita mendefinisikan constructor dengan 2 parameter. yaitu String nama dan String nim. tetapi pada saat instansiasi objek aku dan kamu, kita tidak menginputkan parameter apapun?

Lalu, bagaimana dengan default constructor yang tidak mempunyai parameter itu?? Sekali lagi, default constructor hanya akan tercipta ketika kita tidak membuat satupun constructor. Dengan kata lain, jika kita membuat sebuah constructor, default constructor tidak akan tercipta.

untuk itu, mari ubah MahasiswaTest.java menjadi:

compile MahasiswaTest.java, kemudian run!

c. Overloading constructorPerlu kita ketahui, kita dapat membuat lebih dari satu constructor dalam satu class. Tetapi, kita tidak bisa membuat lebih dari satu constructor yang benar-benar sama. Harus ada perbedaan yang menjadi identitas constructor. Perbedaan tersebut dapat terletak pada jumlah parameter, atau urutan tipe data pada parameter.

9 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

tambahkan program berikut pada Mahasiswa.java sehingga kita memiliki 4 constructor:

compile program.

ubah MahasiswaTest.java menjadi:

compile , kemudian run program.

apa yang terjadi pada program ini? errorkah?

10 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

Pada saat dilakukan instansiasi atas objek aku, kamu, dia dan saya, terdapat perbedaan. apa yang menjadi perbedaan? Bagaimana program dapat mengenali constructor mana yang dipakai pada class Mahasiswa?

sekarang, tambahkan sebuah constructor pada Mahasiswa.java:

compile program. Apakah terjadi error?

mengapa?

11 | C l a s s : : O b j e k : : I n s t a n s i a s i : : E n k a p s u l a s i : : C o n s t r u c t o r

Overloading dapat dilakukan pada sebuah class dengan pembeda berupa jumlah tipe data dan urutan tipe data. Dua buah method dengan nama variabel yang berbeda tidak membedakan method.