Top Banner

of 17

Modul Pbo II

Feb 11, 2018

Download

Documents

agus
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/23/2019 Modul Pbo II

    1/17

    MODUL PBO II

    BAB IClass, Object, Method

    1. Tujuan Pembelajaran:1. Praktikan mampu memahami konsep dasar pemrograman Java.2. Praktikan dapat membedakan arti dan pemakaian kelas, objek, referensi

    objek, method, constructor, dan beberapa kata kunci dalam pemrogramanJava.

    2. Teor !n"#at

    A$a Itu Kelas%Kelas merupakan inti dari pemrograman Java karena Java adalah bahasapemrograman yang mendukung dan mengimplementasikan konsep

    pemrograman berorientasi objek sepenuhnya. Setiap program Javamerupakan kelas, sehingga setiap konsep atau kasus pemrograman yangakan diimplementasikan dengan Java harus dibungkus ke dalam sebuahkelas.

    Kelas dapat didefinisikan sebagai cetak biru (blueprint) atauprototype/kerangka yang mendefinisikan variabelvariabel (data) dan methodmethod (perilaku) umum dari sebuah objek tertentu. Sebagai contoh, kitaambil objek Mahasiswa. Mahasiswa memiliki data seperti nim, nama, alamat,P!, jenis kelamin, jurusan, dan sebagainya. Selain data atau ciriciri fisiktersebut, mahasiswa juga memiliki perilakuperilaku spesifik yang dapat

    membedakan antara mahasis!a yang satu dengan yang lainnya, seperti carapresentasi, cara belajar, cara mengerjakan tugas dan sebagainya.

    "alam dunia pemrograman, sebenarnya kelas tidak jauh berbeda dengantipe data sederhana seperti integer, char, boolean, dan sebagainya.#erbedaannya, tipe data sederhana digunakan untuk mendeklarasikanvariabel $normal%, sedangkan kelas digunakan untuk mendeklarasikan sebuahvariabel yang berupa objek. &ariabel yang berupa objek ini sering disebutdengan referensi objek (object reference).

    Mende&ns#an 'elas

    "alam Java, kelas didefinisikan dengan menggunakan kata kunci class.'erikut ini bentuk umum yang digunakan untuk mendefinisikan sebuah kelas.

    class NamaKelas {

    tipe data1;tipe data2;

    .

    tipe dataN;

    tipe method1(daftar-parameter) {//kode untuk method1}

    tipe method2(daftar-parameter) {//kode untuk method2}

    1

  • 7/23/2019 Modul Pbo II

    2/17

    .

    tipe methodN(daftar-parameter) {//kode untuk methodN}

    }

    "ata atau variabel yang didefinisikan di dalam sebuah kelas sering disebutdengan instance variable yang selanjutnya akan diakses melalui methodmethod yang ada. "ata dan method yang tergabung dalam suatu kelassering dinamakan sebagai class members.

    Contoh 'elas !ederhana#ada bagian ini akan diberikan pembahasan terkait dengan pembuatan

    sebuah kelas sederhana. "i sini kita akan membuat kelas !aryawan, yang

    memiliki datadata ", nama, divisi, dan gaji. ntuk saat ini, belum

    ditambahkan methodke dalam kelas tersebut. Methodakan dibahas terpisah

    pada bagian selanjutnya dalam bab ini.

    #erhatikan kode berikut ini

    Pro"ram 1.1 *ontoh pembuatan kelas.

    u!lic class Kar"a#an{

    $trin% &'namadiisi;dou!le %a*i;

    }

    +elalui kode di atas, berarti kita telah mendefinisikan sebuah tipe data baru

    dengan nama !aryawan. #enting untuk diingat bah!a pendefinisian kelas

    hanya akan membuat sebuah pola atau template, bukan membuat objek.

    bjek aktual dari kelas tersebut harus dibuat sendiri melalui kode berikut

    //mem!uat o!*ek kar"a#an den%an nama +ainalKar"a#an +ainal , ne# Kar"a#an();

    "i sini, !aryawanadalah kelas dan #ainaladalah objek atau instance dari

    kelas !aryawan. +elalui objek #ainal, kita dapat mengakses dan

    memanipulasi datadata yang terdapat pada kelas !aryawan, dengan cara

    menggunakan operator titik (.), seperti yang tampak pada kode di ba!ah ini.

    +ainal.&' , K1;+ainal.nama , +ainal !idin;+ainal.deisi , 0arketin%;+ainal.%a*i, 2;

    kode tersebut digunakan untuk mengisikan nilai ke dalam data ", nama,

    divisi dan gaji yang dimiliki oleh objek #ainal masingmasing dengan nilai

    -K0, -1ainal 2bidin0, -+arketing0 dan 34 ntuk lebih jelasnya, coba

    perhatikan contoh kode program lengkap berikut ini yang akan menunjukkan

    penggunaan kelas !aryawandi atas.

    2

  • 7/23/2019 Modul Pbo II

    3/17

    Pro"ram 1.( *ontoh instansiasi objek dan pengaksesan data pada objek.

    pu!lic class &mplementasiKelasKar"a#an{

    pu!lic static oid main($trin%3 ar%s){

    //mem!uat o!*ek kar"a#an den%an nama +ainal Kar"a#an +ainal , ne# Kar"a#an();

    //men%isi nilai kedalam data-data 4!*ek Kar"a#an+ainal.&' , K1;

    +ainal.nama , +ainal !idin; +ainal.diisi , 0arketin%; +ainal.%a*i , 2;

    //mencetak data-data o!*ect kar"a#an $"stem.out.println('ata Kr"a#an); $"stem.out.println(&' 5 6 +ainal.&'); $"stem.out.println(Nama 5 6 +ainal.nama); $"stem.out.println('iisi 5 6 +ainal.diisi); $"stem.out.println(7a*i 5 6 +ainal.%a*i); }}

    Kode program di atas menunjukkan contoh implementasi dari kelas

    !aryawan yang telah dibuat sebelumnya, yaitu dimulai dengan membuatobjek !aryawan, mengisi nilai ke dalam datadata yang dimiliki oleh objek

    !aryawan yang telah diinstansiasi, kemudian mencetak datadata objek

    !aryawan tersebut.

    Saat dijalankan, program tersebut di atas akan memberikan hasil sebagai

    berikut

    )ambar 1.1 5asil eksekusi program .3

    #erlu diketahui bah!a setiap objek atau instance dari suatu kelas akan

    memiliki salinan data sendirisendiri. 6ni artinya, antara objek yang satu

    dengan yang lainnya, nilai datadatanya bisa berbeda. #erhatikan kode

    program di ba!ah ini.

    Pro"ram 1.* *ontoh instansiasi lebih dari satu objek dari satu kelas yang

    sama

    pu!lic class &mplementasiKelasKar"a#an {

    pu!lic static oid main($trin%3 ar%s) { //mem!uat o!*ek kar"a#an den%an nama +ainal

    3

  • 7/23/2019 Modul Pbo II

    4/17

    Kar"a#an +ainal , ne# Kar"a#an();

    //mem!uat o!*ek kar"a#an den%an nama 'hennis Kar"a#an 'hennis , ne# Kar"a#an();

    //men%isi nilai kedalam data-data 4!*ekKar"a#an +ainal.&' , K1; +ainal.nama , +ainal !idin; +ainal.diisi , 0arketin%; +ainal.%a*i , 2;

    //men%isi nilai kedalam data-data 4!*ekKar"a#an 'hennis.&' , K2; 'hennis.nama , 89;

    'hennis.diisi , 0uhamad 'hennis; 'hennis.%a*i , 22;

    //mencetak data-data o!*ect kar"a#an ke-1$"stem.out.println('ata Kar"a#an ke-1 5); $"stem.out.println(&' 5 6+ainal.&'); $"stem.out.println(Nama 5 6+ainal.nama); $"stem.out.println('iisi 5 6+ainal.diisi);

    $"stem.out.println(7a*i 5 6+ainal.%a*i);

    //mencetak data-data o!*ect kar"a#an ke-2$"stem.out.println(:n'ata Kar"a#an ke-2 5); $"stem.out.println(&' 5 6'hennis.&'); $"stem.out.println(Nama 5 6'hennis.nama); $"stem.out.println('iisi 5 6'hennis.diisi);

    $"stem.out.println(7a*i 5 6'hennis.%a*i); }}

    Saat dijalankan, program tersebut di atas akan memberikan hasil sebagaiberikut

    )ambar 1.( 5asil eksekusi program .7

    4

  • 7/23/2019 Modul Pbo II

    5/17

    Instansas Obje#ntuk membuat objek baru dari tipe kelas yang telah didefinisikan, secaraeksplisit kita perlu melakukan dua tahap. #ertama, kita perlumendeklarasikan variabel yang digunakan sebagai referensi ke objek dari

    kelas bersangkutan. Kedua, kita perlu menginstansiasi kelas denganmenggunakan operator new dan memasukkan instancenya ke dalamvariabel referensi yang baru saja dideklarasikan. perator new secaradinamis akan mengalokasikan ruang memori untuk menyimpan suatu objektertentu dan mengembalikan nilai berupa referensi ke objek bersangkutan.

    'erikut ini kode yang mengilustrasikan dua tahapan proses yang dimaksud diatas. ntuk mempermudah pembahasan, di sini masih menggunakan kelas!aryawanyang telah dibuat sebelumnya.

    //mendeklarasikan aria!el +ainal !ertipeKar"a#an Kar"a#an +ainal;//instansiasi memasukkan referensi kearia!el +ainal +ainal , ne# Kar"a#an();

    #ada praktiknya, dua tahap di atas biasanya ditulis dalam satu baris, sepertiberikut

    Kar"a#an rena , ne# Kar"a#an();

    Men"s +la $ada e&erens Obje#8erdapat satu buah catatan penting yang perlu diperhatikan pada saat kitamemasukkan nilai pada sebuah variabel referensi. Sebelumnya, perhatikanterlebih dahulu kode berikut

    'aris pertama digunakan untuk mendeklarasikan variabel referensi ke objek!aryawan dengan nama karyawan$$1 dan karyawan$$2. 'aris keduaberfungsi untuk membuat objek !aryawandan menyimpan referensinya kedalam variabel karyawan$$1. "an baris ketiga digunakan memasukkankaryawan$$1 ke dalam karyawan$$2. 6ni artinya, variabel karyawan$$2berperan sebagai referensi ke objek yang sedang ditunjuk oleh karyawan$$1."engan demikian, variabel karyawan$$1 dan karyawan$$2 masingmasingmenunjuk ke objek !aryawanyang sama. +aka dari itu, setiap perubahanyang terjadi pada objek yang bersangkutan melalui karyawan$$1 akanberpengaruh juga pada objek yang ditunjuk oleh karyawan$$2, karenakeduanya sebenarnya adalah objek yang sama, begitu juga sebaliknya.

    Pro"ram 1.- *ontoh pengaruh referensi objek ()pu!lic class en%aruh

  • 7/23/2019 Modul Pbo II

    6/17

    //men%isi data 4!*ek Kar"a#an melalui o!*ek referensi 1 Kar"a#an1.nama , >ah"u rdi; Kar"a#an1.diisi , ?

  • 7/23/2019 Modul Pbo II

    7/17

    pu!lic class en%aruhah"u rdi; Kar"a#an1.diisi , ?

  • 7/23/2019 Modul Pbo II

    8/17

    )ambar 1.- 5asil eksekusi program .4

    "ari hasil tersebut dapat terlihat bah!a pada saat variabel karyawan$$2dipindahkan untuk menunjuk ke objek lain (terjadi perubahan referensi objek),datadata karyawan$$2 yang dicetak akan berbeda dengan datadata darikaryawan$$1.

    Method"alam Java, kelas berisi kumpulan data dan method, yang selanjutnya akansaling bekerja sama dalam melakukan tugastugas spesifik tertentu sesuaidengan perilaku objek yangdimodelkan.

    'erikut ini bentuk umum dari pembuatan method di dalam kelas.

    tipe nama0ethod(daftar-parameter) {//kode "an% akan dituliskan}

    #ada bentuk umum di atas, tipe adalah tipe data yang akan dikembalikanoleh method. Sebagai catatan, dalam Java method terbagi menjadi dua voiddan nonvoid. Method void adalahmethod yang tidak mengembalikan nilai,sedangkan method nonvoid adalah method yang mengembalikan nilai. Jikamethod yang kita buat ditujukan untuk mengembalikan suatu nilai tertentu,maka di dalam method tersebut harus terdapat statemen return, yang diikutidengan nilai yang akan dikembalikan, seperti berikut

    return nilaiKem!alian;

    nilai!embalian dapat berupa konstanta maupun variabel, yang digunakanuntuk menandakan nilai yang akan dikembalikan oleh method.

    Mende&ns#an MethodSetelah mengetahui bentuk umum yang digunakan, di sini kita akan langsungmendefinisikan sebuah contoh method ke dalam kelas yang sebelumnya kitabuat, yaitu kelas %apangan&utsal. Kita akan menambahkan methodcetakPengelola() untuk mencetak nama pengelola dari objek%apangan&utsal. Method ini merupakan method yang tidak mengembalikannilai. maka dari itu, kita harus mengganti tipe kembalian dengan kata kuncivoid. 'erikut ini kode program yang dimaksud.

    Pro"ram 1./ #enambahan method void pada deklarasi kelas !aryawan

    pu!lic class Kar"a#an { $trin% &' nama diisi; 'ou!le %a*i; oid cetak'ata() { $"stem.out.println('ata Kar"a#an ); $"stem.out.println(&' 5 6 &');

    8

  • 7/23/2019 Modul Pbo II

    9/17

    $"stem.out.println(Nama 5 6 nama); $"stem.out.println('iisi 5 6 diisi); $"stem.out.println(7a*i 5 6 %a*i); }}

    Pro"ram 1.0 *ontoh pemanggilan method voidpu!lic class &mplementasi0ethodAoid { pu!lic static oid main($trin%3 ar%s){ //instansiasi o!*ek kar"a#an Kar"a#an Kar"a#an1 , ne#Kar"a#an();

    //men%isi data pada o!*eck kar"a#an Kar"a#an1.&' , K1; Kar"a#an1.nama , 0.

  • 7/23/2019 Modul Pbo II

    10/17

    hitung)umbangan#akat() yang akan mengembalikan nilai dengan tipe

    double. 'erikut ini kode program yang dimaksud.

    'erikut ini kode program yang dimaksud.

    Pro"ram 1. *ontoh implementasi method non*voidpu!lic class Kar"a#an {

    $trin% &' nama diisi; dou!le %a*i;

    oid cetak'ata() { $"stem.out.println('ata Kar"a#an 5); $"stem.out.println(&' 5 6

    &'); $"stem.out.println(Nama 5 6nama); $"stem.out.println('iisi 5 6diisi); $"stem.out.println(7a*i 5 6%a*i); }

    dou!le hitun%$um!an%an+akat() { dou!le Cakat , %a*i = .2; return Cakat; }

    Pro"ram 1.2 #emanggilan method non*voidpu!lic class &mplementasi0ethodNonAoid {

    pu!lic static oid main($trin%3 ar%s) { //instantiasi o!*ek Kar"a#an Kar"a#an kar"a#an1 , ne# Kar"a#an();

    //men%isi data pada o!*ek Kar"a#an kar"a#an1.&' , K1; kar"a#an1.nama , 0.

  • 7/23/2019 Modul Pbo II

    11/17

    println().Saat dijalankan, program tersebut di atas akan memberikan hasil

    sebagai berikut

    )ambar 1./ 5asil eksekusi program .