Isi kandungan:
Video: iron-ajax… wat?! -- Polycasts #26 2024
Perkataan acara merangkumi semua jenis imej. Untuk bukan program, satu peristiwa adalah "sesuatu yang berlaku. "Jika anda digunakan untuk menangani tingkap dan bingkai di Jawa, maka anda mungkin memikirkan peristiwa sebagai kejadian yang membangkitkan sekeping kod. Sebagai contoh, klik tetikus pengguna atau kekunci pintar membuat kod yang menetapkan pilihan dan memaparkan kotak OK. Klik atau kekunci itu sendiri dipanggil acara kerana ia berlaku secara bebas daripada program yang dijalankan. Hanya pengguna yang tahu bila dia akan menekan butang itu. Dan apabila butang ditekan, sebahagian daripada program Java hanya bangun dan menangani keadaan. Senario ini dipanggil pengaturcaraan berasaskan acara .
Pengaturcaraan yang dipacu acara
SAX adalah didorong oleh peristiwa . Sebagai contoh, anda akan tidur untuk tidur malam yang baik. Anda menjangkau untuk menetapkan jam penggera anda dan kemudian menyelesaikannya, menutup mata anda, dan menjadi tidak sedarkan diri selama beberapa jam. Kemudian satu peristiwa penting berlaku: Masa tertentu tiba. Apabila acara berlangsung, jam penggera masuk ke mod "bangun" - dan membuat keadaan yang mengerikan untuk membangkitkan anda dari tidur yang tenang.
Berikut adalah satu lagi senario. Anda seorang eksekutif yang sibuk dan anda akan keluar selama beberapa jam, tetapi anda tidak mahu melepaskan sebarang perniagaan penting. Sebelum meninggalkan pejabat, anda memberitahu pembantu anda, "Panggil saya jika ada sesuatu yang penting. "Pengeluaran pesanan ini adalah serupa dengan menetapkan jam penggera. Anda memberitahu pembantu anda (jam penggera anda) untuk membangunkan anda jika acara berlaku. Membuat permintaan ini kepada pembantu anda (atau jam penggera anda) dipanggil pendaftaran . Dalam kedua-dua senario, anda mendaftar diri anda dengan perkhidmatan bangun. Selepas anda mendaftar, anda boleh mengejar aktiviti tidak aktif anda dengan santai, tanpa menghiraukan semua urusan sebenar sehingga berlaku beberapa peristiwa. Kemudian …
Cincin, cincin. Telefon bimbit anda sedang hollering pada anda. "Hello? "
" Hello. Ini pembantu awak. Saya mempunyai angka jualan untuk suku pertama. Mereka adalah 1 juta, 4 juta, dan 2 juta. "
" Mari lihat. Itulah jumlah 7 juta, "kata kamu. "Saya akan perhatikan pada PalmPilot saya. Terima kasih. "Kamu gantung.
Beberapa saat kemudian, anda mendapat panggilan lain. "Presiden Big Bucks, Inc., mahu menutup perjanjian itu. Mereka bercakap 10 juta dolar. "
"Hmm," awak balas. "Itu akan membawa pendapatan tahunan kami sehingga 17 megabucks. Saya akan menyimpan maklumat itu dalam aplikasi spreadsheet saya. Terima kasih kerana memanggil. "
Setiap interaksi ini dikenali sebagai panggilan balik .Terdahulu pada hari itu, apabila anda mendaftarkan hasrat anda dengan pembantu, anda meminta panggilan balik. Kemudian, apabila sesuatu peristiwa berlaku, pembantunya membuat panggilan balik untuk memaklumkan anda tentang acara tersebut. Dalam istilah pengaturcaraan Java, pembantu panggilan salah satu daripada banyak kaedah anda (salah satu subprogram Java anda).
Intipati pemrograman yang didorong oleh acara
Pengaturcaraan yang didorong oleh acara mempunyai tiga bahagian:
- Pendaftaran: Anda mendaftarkan hasrat anda untuk dimaklumkan apabila kejadian berlaku. Anda mendaftarkan hasrat ini dengan sekeping kod lain - objek lain, biasanya sesuatu yang anda impor (seperti sekeping kod yang merupakan sebahagian daripada API orang lain). Objek ini kemudian menonton, dari belakang tabir, untuk kejadian yang anda tentukan.
- Kejadian berlaku: Satu peristiwa tertentu berlaku.
- Panggil balik: Sekeping kod lain melakukan panggilan balik. Salah satu kaedah anda akan dipanggil.
Dua jenis kod
Membezakan antara kod aktif dan kod pasif berguna:
- Kod aktif mempunyai kaedah utama. Kod aktif, sebaik sahaja ia mula berjalan, mengambil peringkat pusat. Kod aktif mengandungi benang pelaksanaan yang mengawal keseluruhan permainan bola.
- Kod pasif hanya duduk di sana, menunggu dipanggil. Kelas Dadu pasif tidak melakukan apa-apa sehingga beberapa kod lain memanggil Dadu. gulung().
Sekarang, anda mungkin berfikir bahawa kod pasif adalah semua yang anda perlukan untuk pengaturcaraan yang didorong oleh acara tetapi tidak. Untuk pengendalian peristiwa, anda memerlukan langkah pendaftaran ini. Kod pasif bermula dengan mendaftar dengan beberapa kod lain.
Untuk menguatkan tanggapan pendaftaran ini, fikirkan contoh dari dunia tikus, tingkap, dan butang di skrin. Anda membuat tingkap atau bingkai. Anda mahu bingkai anda bertindak balas terhadap klik mouse, jadi anda mengeluarkan arahan berikut:
. addMouseListener (ini);
Perintah ini mendaftarkan bingkai anda dengan butang. Perintah mengatakan, pada dasarnya, Setiap kali peristiwa tetikus berlaku, panggil salah satu kaedah pengendalian tetikus bingkai . Kemudian, apabila pengguna mengklik tetikus, bingkai mendapat panggilan balik. Komputer memanggil kaedah tetikusClick tetingkap.
Acara SAX
Pastinya, SAX adalah yang didorong oleh peristiwa, tetapi ini tidak bermakna program SAX menunggu klik tetikus. Sebaliknya, kod SAX mengikuti model daftar-peristiwa-panggilan balik yang diterangkan dalam beberapa perenggan terakhir. Setiap program SAX mempunyai dua keping kod yang sangat diperlukan:
- Sekeping kod yang anda tulis - dipanggil pengendali . (Pengendali anda boleh memanjangkan kelas DefaultHandler yang telah ditulis sebelumnya.) Pengendali adalah seperti eksekutif juta dolar pada bahagian sebelumnya.
- Sekeping kod yang biasanya anda tidak menulis - parser . Parser memainkan peranan seperti pembantu eksekutif. Java 1. 4 API mempunyai parser terbina dalam. Anda membuat contoh parser ini, dan kemudian anda mendaftarkan pengendali anda dengan contoh parser itu. Sebenarnya, anda memberitahu contoh untuk memanggil semula pengendali anda setiap kali sesuatu berlaku.
Apa-apa yang berkaitan dengan XML adalah baru, dan masih dalam keadaan fluks. Kerana ini, terminologi ditambal bersama dalam beberapa cara yang unik. Semasa membangunkan versi SAX 2, sesetengah pakar mempunyai perayaan nama baru. Apa yang lazim disebut "parser" dimuatkan dalam antara muka Java bernama XMLReader. Sudah tentu ada kelas bernama org. xml. sax. Parser, tetapi kelas mendapat usang (yang bermaksud bahawa anda harus mengikisnya dari dasar kasut anda). Untuk membuat perkara menjadi lebih rumit, masih ada alat parsing lain, javax. xml. parsers. SAXParser. Anda menggunakan SAXParser ini untuk menjadikan diri anda seorang XMLReader. Dengan apa-apa nasib, anda akan menjadi terbiasa dengan istilah ini yang rumit. Buat masa ini, ingatlah bahawa apa yang disebut "parser" biasanya merupakan contoh XMLReader.
Senario daftar-dan-panggil balik adalah yang menjadikan acara SAX didorong. Sekarang perkara yang lucu adalah, acara SAX tidak ketara. Acara SAX tidak akan mengingatkan anda tentang kekunci pintasan atau klik butang. Dalam SAX, parser itu mengimbas dokumen XML dari atas ke bawah. Apabila parser menghadapi sesuatu yang menarik, parser memadamkan acara dan memanggil pengendali. Kemudian, ia terpulang kepada pawang untuk melakukan sesuatu mengenai pertemuan yang menarik ini.