Oke, saya mau merekam satu video terakhir hari ini Saya baru terpikir ini ketika membuat video tentang bagaimana objek berkomunikasi antara satu dengan lainnya Ada prinsip penting tentang bagaimana variabel dilewatkan sebagai argumen ke fungsi lainnya yang belum disampaikan di video-video sebelumnya Jadi, saya pikir saya tidak punya contoh untuk ini Saya hanya akan diag... Sampaikan kepada Anda melalui ini dan memperlihatkan susunannya dan kita akan lihat apa yang belum dibahas dan apa yang perlu ditambahkan dan apa yang membingungkan Saya akan mengarang suatu fungsi konyol suatu fungsi yang tidak ada gunanya Saya akan menyebutnya "change" (ubah) dan (fungsi) ini akan menerima suatu angka (val) sebagai argumennya dan di dalam fungsi ini val = val x 2 oke, jadi fungsi ini menerima suatu angka dan mengkalikan angka tersebut dengan dua dan menyimpan hasilnya di dirinya sendiri (val) Jadi, kalau saya bilang "int x" Kamu bisa lihat tidak? Tidak. Saya tulis lebih rendah deh. "int x = 50" lalu saya bilang "change(x)" lalu saya bilang "println(x)" Apa hasil dari "println" ini? Yuk pikirkan ini Nilai "x" adalah 50 "change(x)" artinya (nilai) x masuk ke "val" jadi sekarang nilai "val" adalah 50 lalu "val = val x 2" jadi sekarang "val" nilainya 100 tapi ketika saya cetak "x", apakah saya akan lihat "100" atau "50"? Pikirkan itu sebagai desainer bahasa pemrograman, terserah kamu memutuskan ini harusnya gimana Bahasa pemrograman Java, yang mana Processing dibangun di atasnya, Yang akan kita lihat adalah angka 50. Kenapa? Ini dikenal sebagai "pass by copy" (melewatkan argumen dengan menyalin nilai) Saat kau melewatkan suatu nilai primitif: angka, integer, float, dan sebagainya ke suatu fungsi kau melewatkan salinan dari nilai tersebut artinya, dalam memori komputer, "x" mereferensikan suatu tempat di memori dengan nilai 50 lalu "val" mereferensikan tempat lain di memori komputer dengan apa? nilai 50 disalin ke sana lalu di sini, "val" dikalikan 2 "val" sekarang nilainya 100 tapi "x", yang menunjuk ke 50, tidak terpengaruh "Pass by Copy" (melewatkan argumen dengan salinan nilai) Alasan kenapa saya bahas ini dan sadar bahwa ini sangat penting Jika kau melewatkan suatu objek ke fungsi, cara kerjanya tidak seperti ini. Cara kerjanya disebut "Pass by Reference" Kita anggap ada objek Particle buatan, di mana objek Particle itu cuma punya "x" dan "y" Jadi "Particle p = new Particle(50, 100);" lalu saya bilang "change(p);" lalu ada fungsi yang disebut "void change" yang menerima objek Particle, yang disebut "blah". Cuma butuh nama variabel yang berbeda. (nama) ini jelek. ah... sebal saya buat nama variabel "blah" mari pikirkan sesuatu... saya mau menyebutnya "aP" "a Particle". "aP" kalau saya bilang "aP.x = 300;" Apa yang terjadi? oke, jadi (bagian) ini setara dengan "int x = 50; change(x);" sekarang saya nyatakan "Particle p = new Particle; change(p);" fungsi "change()" ini, alih-alih mengkalikan dengan 2, saya set nilainya jadi 300 dan ingat sebelumnya bahwa x = 50 dan y = 100 Jadi, di sini saya punya partikel p dan "p" menunjuk ke suatu tempat di memori komputer di mana "50" dan "100" disimpan sekarang di sini saya buat partikel baru namanya "aP" - Saya tidak membuat objek baru. Saat kau melewatkan objek ke suatu fungsi, kau memberikan referensinya Lokasi data dalam memori, bukan salinan datanya. Jadi, "aP" sebenarnya menunjuk ke sini... dan jika saya mengubah aspek, parameter, data objek tersebut misal "x" jadi "300". Saya mengubah variabel asalnya juga. "Pass by Reference" (mengoper dengan referensi) Jadi, di Java saat kau mengoper nilai primitif ke suatu fungsi, sebagai argumennya, kau membuat salinannya dan variabel aslinya tidak terpengaruh ketika kau melewatkan objek ke suatu fungsi, kau hanya kirim referensinya saja dan jika kau ubah objeknya di fungsi itu, ini juga akan berubah Izinkan saya menunjukkan skenario di mana hal ini penting Jadi, kalau kita kembali ke sini... ... Ini adalah contoh di mana saya cuma mengganti warna latar belakangnya... Jadi saya akan simpan ini sebagai "ver_2" saya cuma mau buat suatu fungsi yang dipanggil "p1.overlaps(p2)" dan ini tidak akan mengembalikan "true" atau "false" lagi oke, dan di fungsi tersebut, ini hanya void ini akan mengerjakan sesuatu jika mereka overlap dan apa yang akan saya lakukan? saya akan beri partikelnya dengan "color" (warna) dan warnanya akan menjadi hitam pada awalnya dan isi dengan warna itu dan ketika ini tumpang-tindih, "other.col" menjadi merah jika tidak, "other.col" sama dengan hitam Jadi, saya tahu saya melakukan ini dengan cepat mungkin kamu bisa mengikuti atau tidak... Tapi izinkan saya menunjukkan kenapa ini SANGAT PENTING Perhatikan saat mereka tumpang-tindih, partikel ini akan berubah warnanya Saya melewatkan p2 ke fungsi tersebut Salinan tidak dibuat Saya memberikan referensi ke objek sebenarnya dan "p2", referensi ke objek tersebut, masuk ke "other" Dan sekarang saya mengubah nilai dari "other". Jika saya mengubah nilai "other", artinya saya sebenarnya mengubah nilai "p2" dan sekarang "p2" menjadi merah. Saya juga bisa bilang... warna objek ini adalah hijau saya beri masing-masing suatu alfa kecil Jadi jika kita perhatikan sekarang, kamu bisa lihat sekarang... Keduanya hitam... Satu berubah hijau, satu berubah merah... Satu berubah hijau, satu berubah merah... Hal lain yang perlu diperhatikan adalah sepertinya di versi program aslinya (sebelumnya), p1 overlap p2 adalah sama dengan p2 overlap p1. Tapi sekarang kalau saya ubah itu, karena saya beri p2 ke fungsi itu, p2 berubah hijau dan satunya jadi merah. Jadi, ada banyak yang asal-asalan dalam contoh buatan ini Tapi saya pikir ini penting untuk disadari bahwa jika kamu mengirimkan objek ini ke suatu fungsi, kamu bisa ubah objek itu dalam fungsi itu sendiri oke, jadi saya tidak tahu apakah ini bisa membuatmu lebih paham atau makin bingung Saya pikir saya sudah sampaikan di video terakhir Tapi saya hari ini hanya merangkum semua video dan coba buat konten kecil ekstra Video ini cuma 7 menit, yang mana tidak terlalu buruk oke, sampai jumpa