Anda di halaman 1dari 36

Java Fundamentals

3-6
Mendefinisikan Metode

Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang.
Tujuan
• Pelajaran ini akan membahas tujuan berikut:
− Menguraikan penempatan metode dalam super atau subclass
− Menyederhanakan pemrograman dengan membuat
dan memanggil metode yang didefinisikan
− Menangani tabrakan

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 3
Metode Penetapan
Penempatan Efisien untuk Metode
• Sering kali, banyak baris kode diperlukan
untuk memprogram perilaku
− Misalnya, Anda mungkin ingin memprogram instance untuk
memakan objek lain, atau berbalik jika sudah tiba di tepi dunia
• Anda dapat menentukan metode baru untuk
menyederhanakan logika, menghemat waktu, dan
menggunakan lebih sedikit baris kode
− Tentukan (kode) metode baru untuk sebuah tindakan di
bawah metode act
− Panggil (gunakan) metode baru di metode act dunia atau
aktor, atau di dalam metode lain
− Tentukan (kode) metode dalam superclass jika Anda ingin
subclass mewarisi metode secara otomatis

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 4
Metode Penetapan
Metode yang Ditentukan
• Metode yang ditentukan merupakan metode baru
yang dibuat oleh programmer
• Metode ini:
− Dapat segera dijalankan, atau disimpan dan dipanggil nant
− Jangan mengubah perilaku kelas saat disimpan
− Pisahkan kode ke dalam beberapa metode yang lebih
singkat, yang memudahkannya dibaca

Metode yang didefinisikan membuat metode baru yang belum


dimiliki class. Metode tersebut ditulis di kode sumber kelas di
bawah metode act.

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 5
Metode Penetapan
Berbalik di Tepi Dunia
• Masalah:
− Instance berhent dan tdak dapat bergerak saat
mencapai tepi dunia
− Instance akan berbalik dan bergerak di arah
berlawanan setelah tba di tepi dunia
• Solusi:
− Buat subclass Aktor yang menentukan metode yang dapat
mendeteksi apakah objek berada di tepi dunia dan berballik
dengan benar
− Buat subclass Aktor yang akan mewarisi metode
− Panggil (gunakan) metode baru di subclass yang
seharusnya dapat berbalik dan bergerak di tepi dunia

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 6
Metode Penetapan
Menguji apakah Aktor berada di tepi Dunia
• Greenfoot memiliki metode dalam kelas Aktor
yang disebut isAtEdge()
• Ini menghasilkan true jika Aktor berada di salah
satu tepi
• Kita dapat menggunakannya untuk mendeteksi lalu
memutar aktor bukannya menempatkannya di salah
satu tepi

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 7
Metode Penetapan
Menguji Posisi Objek di Dunia
• Untuk menguji apakah objek berada di dekat
tepi dunia:
− Gunakan pernyataan if dengan metode isAtEdge()
untuk menguji apakah kondisi true atau false
− Contoh: Kita dapat memutar instance sebanyak 180
derajat jika berada di tepi dunia

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 8
Metode Penetapan
Operator Logika

Operator Logika dapat ditambahkan ke pernyataan if/else untuk


menggabungkan beberapa ekspresi boolean ke satu ekspresi
boolean.
Operator Logika Art Definisi
Membalikkan nilai ekspresi boolean (jika b benar, !b
Tanda seru (!) NOT
salah. Jika b salah, !b benar).

Menggabungkan dua nilai boolean, dan


Ampersand ganda (&&) AND mengembalikan nilai boolean yang benar jika dan
hanya jika kedua operandnya benar.

Menggabungkan dua variabel boolean atau ekspresi


Dua baris (II) OR dan mengembalikan hasil yang benar jika salah satu
pengoperasi benar.

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 9
Metode Penetapan
Operator Logika - Contoh
• Jika Laba-laba berada di paruh kanan atas
skenario, gerakkan Laba-laba ke depan:

• Jika posisi horizontal Aktor lebih besar dari


bagian tengah dunia horizontal, dan posisi
vertikal Aktor kurang dari bagian tengah dunia
vertikal…
− getX() akan menghasilkan posisi horizontal Aktor
− getWorld().getWidth() menghasilkan sisi horizontal Dunia
− getY() menghasilkan posisi vertkal Aktor

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 10
Metode Penetapan
− getWorld().getHeight() menghasilkan sisi vertkal Dunia

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 11
Metode Penetapan
Operator Logika - Contoh
• Gant || dengan && untuk menguji apakah Spider
berada di bagian tengah ke atas ATAU tengah ke
kanan dari skenario

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 12
Metode Penetapan
Operator Logika - Contoh
• Gunakan ! Untuk menggerakkan Spider maju jika TIDAK
berada di bagian tengah ke kanan dari skenario

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 13
Metode Penetapan
Membuat Superclass
• Untuk memungkinkan kelas Laba-laba dan Lalat
mewarisi perilaku berbalik, kita menempatkan kode
dalam superclass
• Nama superclass harus menjelaskan kesamaan kelas
yang akan mewarisinya
• Kita akan membuat kelas Serangga yang tidak memiliki
gambar dan tidak akan memiliki instance yang bertindak
dalam skenario, tetapi akan menyimpan metode yang
ditentukan yang akan diwarisi oleh subclass
− Klik kanan Aktor, pilih subclass Baru
− Beri nama kelas baru "Serangga"
− Jangan berikan gambar
− Klik Ok

Semua hak dilindungi undang-undang.


JF 3-6
Metode Penetapan Hak Cipta © 2020, Oracle dan/atau
afiliasinya.
13
Membuat Subclass Serangga
• Kita dapat membuat lagi Laba-laba dan Lalat dengan
mengeklik kanan pada Serangga dan memilih Subclass
baru
• Tetapi sepert cara kita membuatnya sebelumnya,
kita dapat memodifikasi kode sumber Laba-laba dan
Lalat untuk diperluas dari Serangga, bukan dari Aktor

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 14
Metode Penetapan
Menentukan metode turnAtEdge() di Superclass
• Buka editor Kode untuk kelas Serangga
• Tulis kode untuk metode turnAtEdge(), di bawah act()

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 15
Metode Penetapan
Dokumentasi Kelas
• Dokumentasi kelas Serangga akan
menampilkan metode baru setelah ditentukan

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 16
Metode Penetapan
Panggil Metode turnAtEdge() di Subclass
• Buka editor Kode untuk subclass Lalat dari
pelajaran sebelumnya
• Tambah panggilan ke metode turnAtEdge()
dalam metode act()
• Ulangi langkah ini untuk subclass Laba-laba

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 17
Metode Penetapan
Tentukan Metode at[left, right, top,
bottom]Edge() Methods di kelas Lebah
• Untuk kelas Lebah, kita akan menulis metode yang akan
− Menentukan tepi di mana Lebah mendekati
− menggerakkan Lebah ke tepi berlawanan (tampak seperti
putar balik)
• Misalnya, jika Lebah bergerak ke arah kanan, dan
mendekati tepi kanan:
− Lebah akan hilang dari tepi kanan
− muncul kembali di tepi kiri
− melanjutkan bergerak ke arah tepi kanan lagi
• Untuk mengetahui tepi yang disentuh oleh aktor, kita
akan menentukan 4 metode terpisah, satu untuk setiap
sisi

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 18
Metode Penetapan
Tentukan metode atRightEdge() dalam kelas Lebah
• Buka editor Kode untuk kelas Lebah
• Tulis kode untuk metode atRightEdge(), di
bawah metode act

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 19
Metode Penetapan
Tentukan Metode atBottomEdge() dalam kelas Lebah
• Buka editor Kode untuk kelas Lebah
• Tulis kode untuk metode atBottomEdge(), di
bawah metode act

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 20
Metode Penetapan
Metode dipanggil dari atRightEdge() dan
atBottomEdge()
• Metode yang digunakan di atRightEdge() meliputi:
− getX():
• Metode Aktor yang menghasilkan koordinat x lokasi aktor saat ini
− getY():
• Metode Aktor yang menghasilkan koordinat y lokasi aktor saat ini
− getWorld():
• Metode Aktor yang menghasilkan dunia tempat aktor tinggal
− getHeight():
• Metode kelas Dunia yang menghasilkan tinggi dunia
− getWidth():
• Metode kelas Dunia yang menghasilkan lebar dunia

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 21
Metode Penetapan
Memanggil Metode dalam Kelas Lebah
• Buka editor Kode untuk kelas Lebah
• Buat pernyataan IF yang memanggil metode
atRightEdge() dan atBottomEdge() sebagai
kondisi dalam tindakan
• Jika Lebah berada di kiri, dia akan muncul kembali
di kanan dan sebaliknya
Gerakan akan selalu mengeksekusi.

Jika Bee berada di dekat tepi kanan, koordinat x akan diatur ke


6. Posisi Y saat ini disimpan menggunakan metode getY().

Jika Bee berada di dekat tepi bawah, koordinat Y akan diatur ke


6. Posisi X saat ini disimpan menggunakan metode getX().

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 22
Metode Penetapan
Memanggil Metode dalam Kelas
• Buka editor Kode untuk kelas myWorld
• Jika perlu,
− tambahkan empat objek Lebah ke dunia Anda
− pilih Kontrol -> Simpan Dunia
• Dalam metode prepare(), tambahkan hal berikut:
− bee2.turn(90);
− bee3.turn(-90);
− bee4.turn(180);

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 23
Metode Penetapan
Memanggil Metode dalam Kelas
• Lengkapi pernyataan IF untuk atLefEdge()
dan atTopEdge()
• Uji program Anda untuk memastikan instance
Lebah pindah dari tepi dunia ke tepi lainnya

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 24
Metode Penetapan
Dokumentasi Kelas
• Dokumentasi kelas Lebah memperlihatkan
metode baru setelah didefinisikan

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 25
Metode Penetapan
Tabrakan
• Sebagian besar proyek game harus mendeteksi
saat dua aktor bersentuhan, yang disebut tabrakan
• Dalam GreenFoot ada beberapa cara untuk
mendeteksi masalah ini
• Sebagian di antaranya:
− isTouching()
− getOneIntersectngObject(Class)
− getOneObjectAtOffset(Class)
− getIntersectngObjects(Class)
− getNeighbours(distance,diagonal)
− getObjectsAtOffset(dx,dy,Class)

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 26
Metode Penetapan
Tabrakan
Metode Kapan Harus Menggunakan
isTouching() Bila Anda ingin mendeteksi tabrakan dengan
objek.
getOneIntersectingObject() Bila Anda ingin menghasilkan referensi ke objek
yang telah bertabrakan dengan Anda. Gunakan
untuk melakukan tindakan pada objek yang saling
bertabrakan.
getOneObjectAtOfset() Sama sepert getOneIntersectingObject(), kecuali
bahwa Anda dapat mengubah di mana benturan
ini akan terdeteksi relatif ke objek saat ini. Jadi
Anda dapat mengatur agar tabrakan terdeteksi
sebelum terjadi, yakni untuk menghentikan aktor
berjalan ke arah dinding.

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 27
Metode Penetapan
Metode yang Ditentukan untuk Menghapus Objek
• Anda dapat menuliskan kode dalam game agar
objek predator dapat memakan objek mangsa
• Buat metode yang ditentukan dalam kelas Lebah
yang disebut catchfly() untuk memungkinkan kita
menghapus lalat yang ditangkap oleh Lebah
• Untuk membuat metode yang ditentukan ini, kita
akan menggunakan deteksi tabrakan paling sederhana
- isTouching()
• Metode ini akan mendeteksi tabrakan Lebah dengan
Lalat, lalu menghapusnya

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 28
Metode Penetapan
Menentukan Metode catchfy() - Alternatf
• Kita juga dapat menggunakan
getOneIntersectingObject(), dan mengakses referensi
ke aktor sebelum menghapusnya

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 29
Metode Penetapan
Panggil catchfy () dalam Metode act()
• Panggil metode catchfly() baru dalam metode
act() Lebah
• Berhati-hatilah saat menambahkan kode di luar
pernyataan if karena kita ingin agar lebah selalu
mencoba menangkap lalat
• Jalankan skenario untuk menguji kode

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 30
Metode Penetapan
Panggil catchfy () dalam Metode act()
• Perubahan tambahan disarankan untuk metode act():
− cari lagi pernyataan move() dari metode act() ke
metode baru, yang disebut handleMovement()
− cari lagi pernyataan if dari metode act() yang memeriksa
apakah Lebah berada di tepi dengan menambahkan metode
turnAtEdge() yang menguji apakah Lebah berada di tepi

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 31
Metode Penetapan
Terminologi
• Istilah-istilah penting yang digunakan dalam
pelajaran ini di antaranya:
− Mendefinisikan Metode
− Tabrakan

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 32
Metode Penetapan
Rangkuman
• Dalam pelajaran ini, Anda seharusnya sudah belajar
cara:
− Menguraikan penempatan metode dalam super atau subclass
− Menyederhanakan pemrograman dengan membuat
dan memanggil metode yang didefinisikan

JF 3-6
Hak Cipta © 2020, Oracle dan/atau afiliasinya. Semua hak dilindungi undang-undang. 33
Metode Penetapan

Anda mungkin juga menyukai