مدیریت رویداد یا Event Handling یکی از فعالیتهایی است که توسط برنامهنویسان در یک برنامه پیادهسازی شده و باعث میشود که یک نرمافزار و یا یک وبسایت بتواند با کاربران در تعامل باشد. این فرایند شامل تشخیص رویدادها و مدیریت کردن آنها میباشد. قبل از بحث در مورد مدیریت کردن رویداد، ابتدا باید مفهوم کلی رویداد یا Event را درک کنیم.
رویداد یا Event چیست؟
در برنامههای کامپیوتری مانند نرمافزارها، بازیهای رایانهای، وبسایتها و دیگر موارد، رویدادها برای تعامل با کاربرها مورد استفاده قرار میگیرند. یک گوشی هوشمند را در نظر بگیرید؛ فرضا نرمافزار Google Chrome، با کلیک کردن روی نرمافزار گوگل کروم، وارد آن میشوید، با تایپ کردن متن مورد جستجو و سپس کلید بر روی دکمه جستجو، گوگل مطالب مرتبط با جستجوی شما را آماده کرده و به شما نمایش میدهد. در واقع در اینجا 2 رویداد صریح اتفاق افتاده است: اول اینکه با کلیک بر روی نرمافزار، موبایل شما وارد نرمافزار مربوطه میشود و دومین رویداد مربوط به کلیک کردن دکمه جستجو است بنابراین تمامی اتفاقاتی که با مداخله شما بهعنوان کاربر در یک برنامه روی میدهد یک Event یا رویداد است؛ در واقع یک Event یک عکسالعمل نسبت به عمل ما بهعنوان کاربر میباشد. تمامی عملها مانند کلیک کردن روی صفحه لمسی، کلیک موس، فشار دادن کلیدهای کیبورد و... یک رویداد هستند. رویدادهایی که معرفی شدند، رویدادهای ملموس و قابل درکی میباشند. در برنامه نویسیبرنامه نویسی کامپیوتر چیست و چطور می توانید یک برنامه نویس موفق شوید؟در عصر فعلی برنامهنویسی یکی از پرطرفدارترین شغلهای دنیاست، دغدغهای افرادی که میخواهند در مسیر برنامهنویس شدن قدم بردارند این است که نمیدانند از کجا باید شروع کنند، در این صفحه هر آن چه برای تبدیل شدن به یک برنامه نویس حرفه ای نیاز دارید در اختیارتان قرار گرفته است انواع دیگر رویدادها نیز وجود دارد، بهعنوان مثال "کامل شدن دانلود" نیز یک رویداد است یا مثلا ارسال شدن صحیح ایمیل و از این دست موارد.
مدیریت کردن رویدادها
گفتیم که عملهای کاربران در برنامهها بهعنوان یک Event یا رویداد در نظر گرفته میشود؛ حالا که این رویداد بهوقوع پیوست چه اتفاقی باید بیافتد؟ این قسمت وظیفه Event Handlerها است که در واقع باید رویدادهای انجام شده را مدیریت و یا Handle کنند؛ در واقع این Handlerها یک Loop یاحلقهحلقه در برنامه نویسی چیست؟ حلقه یا لوپ (Loop) چیست؟این مقاله عالی به زبان ساده و با استفاده از فیلم توضیح داده که حلقه در برنامه نویسی چیست، همچنین در خصوص حلقه یا لوپ (Loop) بی نهایت صحبت کرده است ای هستند که دائما بهطور Asynchronous یا نامتقارن در حال بررسی کردن هستند که آیا رویداد مورد نظر انجام شده است یا خیر؟ اگر رویداد مورد نظر انجام شده باشد، Handler مربوط به این رویداد میبایست به این رویداد در قالب عکسالعمل پاسخ دهد؛ بهعنوان مثال یک بازی رایانهای شوتر را در نظر بگیرید، زمانی که کلیک چپ موس را فشار میدهیم، کاراکتر بازیکن "شلیک" میکند. اگر بعد از عمل شلیک کردن مجددا این کار را انجام دهید چه اتفاقی میافتد؟ مسلما عمل شلیک کردن دوباره اتفاق میافتد بنابراین حلقهای که رویداد شلیک را مدیریت میکند دائما در حال اجرا شدن و دور زدن است. در اینجا کلیک کردن بر روی موس یک رویداد است و شلیک کردن پاسخی در جواب این رویداد میباشد که توسط Handlerای که توسط برنامهنویس بازی نوشته شده است صورت میپذیرد. برای فهم بهتر این موضوع تصویر زیر را مشاهده کنید:
تفاوت Event Handler و Event Listener
یکی دیگر از واژههایی که در کنار Eventها و Event Handlerها مورد استفاده قرار میگیرد، Event Listenerها هستند. خیلی از افراد معتقدند که Event Listener با Event Handler تفاوت دارد و در واقع یک آبجکت در یک زبان برنامه نویسیزبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده میتواند Listenerهای مختلفی داشته باشد اما تنها قادر است تا یک Handler داشته باشد. این بحث تا حدودی در بعضی فریمورکها میتواند درست باشد اما بهطور کلی تفاوتی بین Event Handler و Event Listener وجود ندارد، در واقع Listener یک اصطلاح برای تابعی است که یک رویداد را Handle یا مدیریت میکند.
مراحل رسیدگی به رویدادها
بهطور کلی رسیدگی به یک Event شامل 3 مرحله شناسایی رویداد، پردازش رویداد و پاسخ مناسب به رویداد است که در زیر بهطور خلاصه به هر بخش پرداختهایم:
- تشخیص رویداد: اولین مرحله رسیدگی به رویداد، تشخیص آن است. تشخیص یک رویداد از طریق Listenerهای برنامه نویسی شده و Loopهای ایجاد شده صورت میگیرد. زمانی که یک رویداد (مثلا کلیک کردن یا تکمیل یک فرایند) تشخیص داده شد، اطلاعات مربوط به این Event وارد فاز بعدی میشود.
- اعلان یا Notify کردن رویداد: پس از تشخیص رویداد اکنون نوبت به رساندن اطلاعات مربوطه به مدیر رویداد یا همان Event Handler میرسد. این کار معمولا از طریق توابع Callback یا صفهای رویداد (Event Queues) انجام میشود.
- رسیدگی به رویداد: فاز نهایی رسیدگی به رویداد است. در این مرحله عملیات مربوط به یک رویداد اجرا میشود، در واقع پاسخ به رویداد در این فاز صورت میپذیرد؛ بهعنوان مثال ممکن است صفحه وبسایت بهروز شود و سپس برنامه شروع به پخش یک ویدیو کند (مثلا بعد از پایان یافتن رویداد دانلود ویدیو).
مثالهای برنامه نویسی
در این بخش ما دو مثال ساده را برای شما آماده کردهایم تا با نحوه پیاده سازی یک Event Handler بیشتر آشنا شوید.
مدیریت رویداد در زبان جاوا اسکریپت
زبان برنامه نویسی جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده که یکی از محبوبترین زبانهای برنامه نویسی توسعه وب است، از نمونه زبانهایی است که تعاملات کاربر با وبسایت را از طریق Eventها مدیریت میکند. بهعنوان مثال کد زیر را در نظر بگیرید:
var button = document.getElementById("myButton");
button.addEventListener("click", function() {
alert("Button clicked!");
});
در این کد یک متغیر button یا دکمه تعریف شده است که نماینده یک دکمه در وبسایت میباشد. تابع addEventListener برای این دکمه فراخوانی شده است. همانطور که مشاهده میکنید رویدادی که انتظار داریم رخ بدهد “click” نام دارد که با فشرده شدن دکمه این عمل انجام میشود. بعد از کلیک کردن، تابعی که بهعنوان دومین پارامتر به Listener ما اضافه شده است اجرا میشود. در این تابع، تابع alert که در واقع یک هشدار (یا یک نوتیفیکیشن) برای وب است اجرا میشود که در آن Button clicked! نوشته شده است:
مدیریت رویداد در اندروید
یکی دیگر از پلتفرمهایی که در آن نیاز به ایجاد Event Listenerهای متعددی میباشد، برنامه نویسی سیستم عامل اندرويدسیستم عامل اندرويد چیست؟ هر آنچه باید درمورد Android بدانیداندروید چیست و چه ویژگی هایی دارد؟ این مقاله عالی به معرفی سیستم عامل اندروید (Android)، تاریخچه و توسعه اندروید، ویژگی های ورژن های مختلف اندروید پرداخته است است. از کلیک و کشیدن انگشت و یا لمس چند انگشتی گرفته تا تغییر میزان باتری، کم و زیاد کردن نور صفحه و یا صدا، همه و همه یک رویداد هستند و برای مدیریت آنها نیاز داریم تا یک Handler یا Listener مناسب بنویسیم. کد زیر را در نظر بگیرید:
Button myButton = findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button clicked!", Toast.LENGTH_SHORT).show();
}
});
در این کد نیز با کلیک کردن بر روی دکمه myButton یک پیام toast (پیامی که در قسمت زیرین صفحه نمایش گوشی اندرود ظاهر میشود.) با پیام Button clicked! نمایش داده میشود.
جمعبندی
مدیریت رویدادها یکی از مفاهیم اساسی در حوزه برنامه نویسی است که به برنامهها امکان تعامل با کاربران و یا با سیستم را میدهد. با درک فرایند مدیریت کردن یک رویداد و آشنایی با روشهای پیادهسازی، توسعهدهندگان قادر هستند تا نرمافزارهای تعاملی و کاربر پسندی بسازند؛ از توسعه نرمافزارهای کامپیوتری و موبایلی گرفته تا بازیها و زمینههای مختلف دیگر. در این مقاله بهطور مختصر به بحث در مورد مدیریت رویدادها با ذکر چند مثال کدنویسیکدنویسی چیست؟ – کد نویسی یعنی چهاین مقاله عالی به بررسی این پرداخته که کد نویسی چیست و مفهوم کد نویسی را بررسی کرده، همچنین تفاوت کدنویسی و برنامه نویسی و کاربرد های کدنویسی را بررسی کرده پرداختیم.
مدیریت رویداد یا Event Handling چیست؟
بهطور خلاصه مدیریت رویداد یا Event Handling یکی از فعالیتهایی است که توسط برنامهنویسان در یک برنامه پیادهسازی شده و باعث میشود که یک نرمافزار و یا یک وبسایت بتواند با کاربران در تعامل باشد. این فرایند شامل تشخیص رویدادها و مدیریت کردن آنها میباشد.
فرایند مدیریت یک رویداد چگونه است؟
بهطور کلی رسیدگی به یک رویداد یا Event شامل 3 مرحله است: 1- شناسایی رویداد 2- پردازش رویداد 3- پاسخ مناسب به رویداد.