Definisi Metoda
Definisi Metoda
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
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
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:
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
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.
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