Masih
tentang
Class
dan
Object,
jika
pada
bagian
sebelumnya
fokus
pembahasan
terletak
pada
bagaimana
cara
menggambarkan
desain
Cklas
menggunakan
Class
Diagram,
cara
membuat
Class
di
Java,
cara
membuat/deklarasi
atribut
dan
method,
cara
melakukan
instansiasi
dan
cara
mengakses
atribut
dan
method
dari
suatu
objek
yang
telah
terbentuk,
maka
pada
bagian
ini
akan
dibahas
konsep
Class
dan
Object
yang
lebih
lanjut.
Kensep
tersebut
antara
lain:
• Access
Modifier
• Konstruktor
• Atribut/Method
Instansiasi
• Atribut/Method
Class
Access Modifier
Atribut
dan
method
yang
dimiliki
oleh
oleh
suatu
class
bisa
dibatasi
hak
akses
terhadapnya.
Hal
itu
bisa
dilakukan
dengan
memberikan
access
modifier
pada
atribut
dan
method
dari
suatu
class.
Ada
4
macam
access
modifier,
yaitu:
Pada
Class
Diagram,
private
digambarkan
dengan
tanda
-‐,
public
dengan
tanda
+,
protected
dengan
tanda
#
dan
default
(tanpa
modifier
access)
dengan
tanda
~.
Konstruktor
Pada
bahasan
sebelumnya,
setelah
class
terbentuk,
selanjutnya
harus
dibuat
objek.
Pada
saat
proses
pembentukan
objek
(instansiasi),
sebenarnya
yang
berperan
adalah
konstruktor.
Pada
dasarnya,
konstruktor
merupakan
suatu
method
tetapi
dengan
karakteristik
khusus.
Beberapa
karakteristik
dari
konstuktor
antara
lain:
• Konstruktor
Default
:
konstruktor
yang
tidak
memiliki
parameter
atau
argumen.
Contoh
konstruktor
untuk
class
Mahasiswa:
• Konstruktor
Berparameter/Berargumen
:
konstruktor
yang
memiliki
parameter
atau
argumen.
Contoh
proses
instansiasi
yang
menggunakan
konstruktor
default
dari
contoh
di
atas,
yaitu:
Sedangkan
contoh
proses
instansiasi
yang
menggunakan
konstruktor
berparameter
dari
contoh
di
atas
yaitu:
Atribut
dan
method
instansiasi
merupakan
atribut
dan
method
yang
dimiliki
oleh
objek
hasil
instansiasi.
Jadi
untuk
mengakses
atribut
dan
method
tersebut,
sebelumnya
harus
dibuat
terlebih
dahulu
objek.
Atribut
instansiasi
biasanya
digunakan
untuk
atribut-‐atribut
dari
suatu
class,
dimana
nilai
dari
atribut
tersebut
untuk
objek
satu
dengan
objek
yang
lain
berbeda-‐beda
dan
tersimpan
pada
alamat
referensi
atau
alamat
memori
yang
berbeda.
Contohnya
pada
class
Mahasiswa
di
atas,
nilai
nim
dan
nama
untuk
objek
mahasiswa
satu
dengan
objek
mahasiswa
lain
bisa
berbeda
nilainya.
Sehingga
atribut
nim
dan
nama
tersebut
termasuk
ke
jenis
atribut
instansiasi.
Dan
untuk
mengakses
atribut
maupun
method
instansiasi,
harus
terlebih
dahulu
dibuat
objek.
Contohnya:
untuk
mengakses
atribut
nim,
nama
dan
memanggil
method
ubahNama(),
terlebih
dulu
harus
dibuat
objek
dari
class
Mahasiswa.
Baru
kemudian
atribut
nim
dan
nama
dan
method
ubahNama()
bisa
diakses.
Jika
atribut
instansiasi
digunakan
untuk
atribut
yang
memiliki
nilai
yang
berbeda-‐beda
antara
objek
yang
satu
dengan
objek
yang
lain
dari
class
yang
sama,
maka
atribut
class
digunakan
untuk
atribut
yang
nilainya
antara
objek
satu
dengan
objek
yang
lain
dari
class
yang
sama
akan
bernilai
sama.
Misalnya
mahasiswa
memiliki
SPP,
dan
nilai
SPP
tersebut
dipastikan
sama
antara
mahasiswa
satu
dengan
mahasiswa
lainya.
Ini
berarti,
atribut
SPP
untuk
objek
mahasiswa
satu
dengan
objek
mahasiswa
lainnya
bernilai
sama.
Sehingga
SPP
tersebut
bisa
digolongkan
sebagai
atribut
class.
Untuk
membuat
atribut
dan
method
class
ditandai
dengan
kata
kunci
static.
Dan
untuk
mengakses
atribut
class,
tidak
perlu
dibuat
objek
lebih
dulu,
karena
bisa
diakses
langsung
dari
nama
classnya.
Contohnya:
Class
Mahasiswa
di
atas
ditambahi
atribut
spp
yang
merupakan
atribut
class
dan
method
ubahSpp()
yang
merupakan
method
class.
Dan
untuk
mengakses
atribut
spp
dan
method
ubahSpp()
tidak
perlu
membuat
objek
dari
class
Mahasiswa
lebih
dulu,
melainkan
bisa
langsung
menggunakan
nama
class
Mahasiswa
langsung.
Mahasiswa.spp
=
10000;
Mahasiswa.ubahSpp(15000);
Prosedur Percobaan:
2. Buat program dari class diagram di atas, dan simpan dengan nama file Sepeda.java
Pertanyaan:
1. Adakah
atribut
dan
method
dari
class
Sepeda
yang
tidak
bisa
diakses
dari
dalam
class
itu
sendiri?
Sebutkan
jika
ada!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
2. Dari
hasil
percobaan
tahap
3
(hasil
compile
dan
run
terhadap
Sepeda.java),
apakah
Anda
menemukan
error?
Jelaskan
(error
atau
tidak
error
hasilnya)
dikaitkan
dengan
modifier
access
dari
atribut
maupun
methodnya!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
3. Dari
hasil
percobaan
tahap
5
(hasil
compile
dan
run
terhadap
SepedaDemo.java),
apakah
Anda
menemukan
error?
Jika
iya,
jelaskan
apa
penyebab
terjadinya
error
tersebut!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
4. Atribut
dan
method
apakah
dari
class
Sepeda,
yang
hanya
bisa
diakses
dari
dalam
class
itu
sendiri?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
5. Atribut
dan
method
apakah
dari
class
Sepeda,
yang
bisa
diakses
dari
class
lain
yang
berada
pada
paket
yang
sama
dengan
class
Sepeda
tersebut?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
6. Bisakah
atribut
jenis
dari
class
Sepeda
diakses
dari
class
SepedaDemo?
Jika
bisa,
jelaskan
lebih
lanjut
mengapa
bisa?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
7. Jika
di
dalam
method
main
di
dalam
class
SepedaDemo,
ditambahkan
sintaks
s1.kurangiGigi(),
apakah
bisa?
Jelaskan
jawaban
Anda!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
8. Perhatikan
baris
program
19
dan
24
dari
class
Sepeda,
disitu
terlihat
dipanggil
method
kurangiGigi()
dan
tambahGigi()
yang
notabene
memiliki
access
modifier
private,
dan
tidak
menimbulkan
error.
Mengapa
bisa
demikian?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
9. Apa
yang
harus
dilakukan
agar
error
pada
class
SepedaDemo
bisa
hilang?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
10. Berikan
kesimpulan
dari
percobaan
yang
telah
dilakukan
dan
beberapa
pertanyaan
terkait
dengan
access
modifier!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
PERCOBAAN
2
:
KONSTRUKTOR
Tujuan:
Prosedur Percobaan:
3. Di
dalam
method
main()
yang
ada
di
dalam
class
Sepeda,
tambahkan
beberapa
proses
instansiasi
seperti
tampil
di
gambar
berikut:
Pertanyaan:
1. Mengapa
pada
baris
pertama
hasil
keluaran
muncul
tulisan
Objek
terbentuk
menggunakan
konstruktor
default
?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
2. Mengapa
juga
pada
baris-‐baris
setelahnya
muncul
tulisan
Objek
terbentuk
menggunakan
konstruktor
berparameter
1
dan
Objek
terbentuk
menggunakan
konstruktor
berparameter
2?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
3. Perhatikan
pada
method
main()
dari
class
Sepeda
tersebut,
pada
baris
berapakah
proses
instansiasi
yang
menggunakan
konstruktor
berparameter
dengan
2
parameter
dijalankan?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
4. Perhatikan
hasil
keluaran
program:
Objek
terbentuk
menggunakan
konstruktor
berparameter
2
KODE
=
KOSONG
MEREK
=
KOSONG
JENIS
=
KOSONG
KECEPATAN
=
25.0
GIGI
=
4
Setelah
ditampilkan
muncul
nilai
kode=KOSONG,
merek=KOSONG,
jenis=KOSONG,
kecepatan=25.0
dan
gigi=4.
Dapat
dari
manakah
nilai-‐nilai
tersebut?
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
5. Misalkan
di
dalam
class
Sepeda
ditambahkan
konstruktor
seperti
di
bawah
ini:
public
Sepeda(int
x){
gigi
=
x;
}
Bisa
apa
tidak?
Jelaskan!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
6. Berikan
contoh
konstruktor
berparameter
dengan
3
parameter
untuk
class
Sepeda
tersebut,
dan
berikan
juga
contoh
proses
instansiasi
yang
menggunakan
konstruktor
dengan
3
parameter
tersebut!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
7. Berikan
kesimpulan
dari
percobaan
yang
telah
dilakukan
dan
beberapa
pertanyaan
terkait
dengan
konstruktor!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
Prosedur Percobaan:
Atribut class
Method class
3. Method
main()
di
dalam
class
Sepeda
juga
diubah
menjadi
sbb:
Penjelasan:
Setiap
selesai
proses
instansiasi,
dijalankan
method
class
tambahJumTotalSepeda(),
yang
menandakan
bahwa
jumlah
objek
yang
terbentu
dari
class
Sepeda
bertambah
4. Compile
dan
jalankan
class
Sepeda,
dan
amati
hasil
keluarannya!
Pertanyaan:
1. Sebutkan
atribut
dan
method
instansiasi
yang
dimiliki
oleh
class
Sepeda!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
2. Sebutkan
atribut
dan
method
class
yang
dimiliki
oleh
class
Sepeda!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
3. Jelaskan
perbedaan
antara
atribut
dan
method
instansiasi
dan
atribut
dan
method
class
dari
nilai
yang
disimpan
di
dalamnya!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
4. Jelaskan
perbedaan
antara
atribut
dan
method
instansiasi
dan
atribut
dan
method
class
dari
cara
mengakses
atribut
dan
method
tersebut!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
5. Perhatikan
hasil
keluaran
di
atas.
Jelaskan
bagaimana
bisa
muncul
nilai
3
untuk
jumlah
total
objek
sepeda
yang
dibuat!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
6. Berikan
kesimpulan
dari
percobaan
yang
telah
dilakukan
dan
beberapa
pertanyaan
terkait
dengan
konstruktor!
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………………………………..
LATIHAN
Buatlah
program
dari
Class
Diagram
di
bawah
ini!
Balok
+
panjang
:
double
#
lebar
:
double
~
tinggi
:
double
+
jumVolumeTotalBalok
:
double
+
hitungVolume
()
:
double
+
hitungLuasPermukaan()
:
double
+
hitungDiagonalRuang()
:
double
~
hitungDiagonalSisiDepan()
:
double
#
hitungDiagonalSisiSamping()
:
double
-‐
hitungDiagonalSisiAtas()
:
double
Penjelasan:
• Perhatikan
notasi
access
modifier
pada
tiap
atribut
dan
method
• Perhatikan
juga
notasi
atribut/method
class
• Atribut
jumVolumeTotalBalok
digunakan
untuk
menyimpan
jumlah
volume
total
dari
objek-‐objek
balok
yang
sudah
terbuat.