Daftar Isi:
Video: XML and Java tutorial: Creating a SAX event handler class | lynda.com 2024
Kata event memunculkan semua jenis gambar. Bagi seorang nonprogrammer, sebuah acara hanyalah "sesuatu yang terjadi. "Jika Anda terbiasa menangani jendela dan bingkai di Jawa, mungkin Anda memikirkan sebuah peristiwa sebagai kejadian yang membangunkan sebuah kode. Misalnya, klik mouse pengguna atau keystroke membangunkan kode yang menetapkan opsi dan menampilkan kotak OK. Klik atau keystroke itu sendiri disebut event karena hal itu terjadi secara independen dari program yang sedang berjalan. Hanya pengguna yang tahu kapan dia akan menekan tombol itu. Dan saat tombol ditekan, sebagian dari program Java baru saja bangun dan menangani situasi. Skenario ini disebut event-driven programming .
Event-driven programming
Program SAX event-driven . Misalnya, Anda tidur karena tidur nyenyak. Anda mengulurkan tangan untuk mengatur jam alarm Anda dan kemudian menetap, menutup mata Anda, dan menjadi tidak sadar selama beberapa jam. Kemudian sebuah peristiwa penting terjadi: Suatu waktu tertentu tiba. Saat acara berlangsung, jam alarm masuk ke mode "bangun" - dan membuat hiruk pikuk membuat Anda tertidur lelap.
Inilah skenario lain. Anda seorang eksekutif yang sibuk dan Anda akan keluar selama beberapa jam, tapi Anda tidak ingin melewatkan bisnis penting apa pun. Sebelum meninggalkan kantor, Anda memberi tahu asisten Anda, "Panggil saya jika ada sesuatu yang penting muncul. "Menerbitkan pesanan ini sama seperti menyetel jam alarm. Anda memberi tahu asisten Anda (jam alarm Anda) untuk membangunkan Anda jika sebuah peristiwa terjadi. Membuat permintaan ini ke asisten Anda (atau ke jam alarm Anda) disebut registrasi . Dalam skenario kedua, Anda mendaftarkan diri Anda dengan layanan wakeup. Setelah Anda terdaftar, Anda dapat mengejar aktivitas tidak santai Anda, mengabaikan semua bisnis nyata sampai beberapa peristiwa terjadi. Lalu …
Ring, ring. Ponsel Anda berteriak pada Anda. "Halo? "
" Halo. Ini asistenmu Saya memiliki angka penjualan untuk kuartal pertama. Mereka 1 juta, 4 juta, dan 2 juta. "
" Mari kita lihat. Itu total 7 juta, "katamu. "Saya akan mencatatnya di PalmPilot saya. Terima kasih. "Anda menutup telepon.
Beberapa saat kemudian, Anda mendapat telepon lain. "Presiden Big Bucks, Inc., ingin menutup kesepakatan itu. Mereka berbicara 10 juta dolar. "
"Hmm," jawab Anda. "Itu akan membawa pendapatan tahunan kami hingga 17 megabucks. Saya akan menyimpan informasi itu di aplikasi spreadsheet saya. Terima kasih sudah menelepon. "
Masing-masing interaksi ini dikenal sebagai panggilan balik .Sebelumnya pada hari itu, ketika Anda mendaftarkan keinginan Anda dengan asistennya, Anda meminta sebuah panggilan balik. Kemudian, kapan pun acara berlangsung, asisten membuat panggilan balik untuk memberi tahu Anda tentang acara tersebut. Dalam istilah pemrograman Java, asisten memanggil salah satu dari banyak metode Anda (salah satu subprogram Java Anda).
Inti dari pemrograman berbasis event
Pemrograman berbasis event memiliki tiga bagian:
- Registration: Anda mendaftarkan keinginan Anda untuk diberitahu bila terjadi peristiwa. Anda mendaftarkan keinginan ini dengan potongan kode lain - objek lain, biasanya sesuatu yang telah Anda impor (seperti potongan kode yang merupakan bagian dari API orang lain). Objek ini kemudian berjaga-jaga, dari balik layar, untuk terjadinya acara yang Anda tentukan.
- Peristiwa kejadian: Peristiwa tertentu terjadi.
- Callback: Bagian kode lainnya melakukan panggilan balik. Salah satu metode Anda dipanggil.
Dua kode
Membedakan antara kode kode aktif dan pasif berguna:
- Kode aktif memiliki metode utama. Kode aktif, setelah mulai berjalan, mengambil panggung utama. Kode aktif berisi benang eksekusi yang mengendalikan keseluruhan permainan bola.
- Kode pasif hanya ada di sana, menunggu untuk dipanggil. Kelas Dice pasif tidak melakukan apapun sampai beberapa kode lain memanggil Dice. gulungan().
Sekarang, Anda mungkin berpikir bahwa kode pasif adalah semua yang Anda butuhkan untuk pemrograman berbasis event tapi sebenarnya tidak. Untuk penanganan acara, Anda memerlukan langkah pendaftaran ini. Kode pasif dimulai dengan mendapatkan terdaftar dengan beberapa bagian kode lainnya.
Untuk menguatkan pengertian pendaftaran ini, pikirkan contoh dari dunia tikus, jendela, dan kancing di layar. Anda membuat jendela atau bingkai. Anda ingin frame Anda merespons klik mouse, jadi Anda mengeluarkan perintah berikut:
tombol. addMouseListener (ini);
Perintah ini mendaftarkan bingkai Anda dengan tombolnya. Perintah tersebut mengatakan, pada dasarnya, Setiap kali terjadi peristiwa mouse, sebutlah salah satu metode penanganan mouse frame . Nantinya, saat pengguna mengklik mouse, frame mendapat callback. Komputer memanggil metode mouseClicked frame.
Peristiwa SAX
Tentu, SAX adalah event-driven, tapi ini tidak berarti program SAX menunggu klik mouse. Sebagai gantinya, kode SAX mengikuti model register-event-callback yang dijelaskan dalam beberapa paragraf terakhir. Setiap program SAX memiliki dua bagian kode yang tak terpisahkan:
- Sepotong kode yang Anda tulis - disebut handler . (Penangan Anda dapat memperpanjang kelas DefaultHandler yang telah ditulis sebelumnya.) Pawang adalah seperti eksekutif juta dolar di bagian sebelumnya.
- Sepotong kode yang biasanya tidak Anda tulis - parser . Parser memainkan peran seperti asisten eksekutif. Java 1. 4 API memiliki parser built-in. Anda membuat contoh parser ini, dan kemudian Anda mendaftarkan handler Anda dengan instance parser itu. Akibatnya, Anda memberi tahu contoh untuk menelepon kembali pawang Anda kapan pun sebuah peristiwa terjadi.
Apa pun yang berhubungan dengan XML itu baru, dan masih dalam keadaan fluks. Karena itu, terminologi ini ditambal bersama dengan beberapa cara yang aneh. Saat mengembangkan versi SAX 2, beberapa teknisi memiliki festival make-up-new-names. Apa yang biasanya disebut "parser" diwujudkan dalam antarmuka Java yang bernama XMLReader. Dulu ada kelas bernama org. xml saksofon. Parser, tapi kelasnya sudah usang (yang berarti Anda harus mengikisnya dari dasar sepatu Anda). Untuk membuat hal-hal sedikit lebih rumit, masih ada alat penguraian lain, javax. xml parser SAXParser. Anda menggunakan SAXParser ini untuk membuat XMLReader sendiri. Dengan sedikit keberuntungan, Anda akan segera terbiasa dengan terminologi yang berbelit-belit ini. Untuk saat ini, ingatlah bahwa apa yang disebut "parser" biasanya merupakan instance dari XMLReader.
Skenario register-and-callback adalah apa yang membuat SAX event-driven. Sekarang yang lucu adalah, acara SAX tidak berwujud. Acara SAX tidak akan mengingatkan Anda akan keystroke atau klik tombol. Di SAX, parser memindai dokumen XML dari atas ke bawah. Setiap kali parser menemukan sesuatu yang menarik, parser mengeluarkan sebuah acara dan memanggil pawangnya. Lalu, terserah kepada pawang untuk melakukan sesuatu tentang pertemuan menarik ini.