اصول برنامه نویس شئ‌گرا در Flash – قسمت پنجم

قبل از اینکه به صورت جدی، مبحث کلاس‌ها را شروع کنیم بهتر است با ذکر یک مثال، گذری بر مباحث و مفاهیم مربوط به کلاس‌ها داشته باشیم.

مثال زیر نمونه‌ای از کد کامل یک کلاس ساده و کوچک بوده که در یک فایل *.as تعریف شده و با import کردن آن در یک پروژه  Flashو تعریف یک شئ از نوع آن قابل استفاده است.

01:   package {
02:      import com.mshams.mhe1;
03:      import com.mshams.mutil;
04:      import flash.display.Sprite;
05:      import flash.events.Event;
06:   
07:      public class GraphicClass extends MovieClip {
08:         private var _id:Number;
09:         private var _name:String;
10:         public static var version:String = "V1.0";
11:   
12:         public function GraphicClass(yourname:String) {
13:            graphics.linestyle(1,0,1);
14:            trace("initialization");
15:            _name = yourname;
16:            addEventListener(Event.Enter_FRAME,evtEnterFrame);
17:         }
18:   
19:         private function evtEnterFrame(e:Event) {
20:            graphics.lineTo(Math.random() * 400,Math.random() * 400);
21:            printOut("line drawed");
22:         }
23:   
24:         private function printOut(s:String):void {
25:            trace("print text: " + s);
26:         }
27:      }
28:   }

در تعریف کلاس فوق، تقریباً از اکثر دستورات مربوط به برنامه‌نویسی شئ‌گرا استفاده شده است. اکنون به منظور آشنایی کلی با وظیفه این دستورات، خط به خط آنها را مورد بررسی قرار می‌دهیم:

–   دستور package (خط 1):

این دستور مشخص کننده نام دایرکتوری یا مسیری است که فایل *.as کلاس در آن قرار گرفته است. هدف از این دستور، دسته‌بندی کلاس‌های مختلف و جلوگیری از تداخل کار آنهاست.

هر بسته یا دایرکتوری می‌تواند شامل بینهایت کلاس باشد، در نتیجه معمولاً برای اینکه فایل‌های کلاس را با توجه به زمینه کاربرد آنها دسته‌بندی کنیم، هر مجموعه را در یک دایرکتوری جداگانه (و یا تودرتو و سلسله مراتبی) قرار داده و برای آدرس‌دهی به آنها از دستور package استفاده می‌نماییم.

به عنوان مثال در صورتی که فایل کلاس، در یک دایرکتوری با نام myclass قرار داشته و فایل فلش اصلی که قرار است از آن کلاس استفاده کند خارج از آن دایرکتوری باشد، باید از دستوری به شکلpackage myclass استفاده گردد.

–   دستورات import (خطوط 2 تا 5):

همان طور که از معنی این دستور مشخص است، وظیفه آن به نوعی با وارد کردن اطلاعات مرتبط است. پس از نوشتن یک کلاس، برای اینکه بتوانیم از شئ طراحی شده در آن، در کلاس‌های دیگر استفاده کنیم، باید کلاس مربوطه را import نماییم.

در حقیقت به منظور دسترسی به محتوای کلاس mhe1 (خط 2) و تعریف یک شئ از نوع آن کلاس، ابتدا باید آن را import کنیم. شیوه آدرس‌دهی در این دستور به این صورت است که ابتدا نام package و مسیر در برگیرنده کلاس ذکر شده (و با نقطه از هم جدا می‌شوند) و سپس نام کلاس درج می‌گردد.

در نتیجه دستوری که برای ورود کلاس mhe1 نوشته شده، به این معنی است که کلاس mhe1 در دایرکتوری (یا package) mshams قرار داشته که خود آن نیز در دایرکتوری دیگری به نام com واقع شده است.

–   دستور public (خط 7):

در صفحات قبل در مورد این دستور و مفهوم حوزه عملکرد توضیح داده شده است.

–   دستور class (خط 7):

از این دستور و نامی که پس از آن قرار می‌گیرد (مثلا GraphicClass) برای تعریف خود بدنه کلاس استفاده می‌شود.

–   دستور extends (خط 7):

از این دستور به منظور تعریف توارث در کلاس استفاده می‌شود. در واقع با استفاده از این دستور تمام خصوصیات و توابع قابل دسترس از کلاسی که نام آن پس از extends ذکر می‌شود (در اینجا MovieClip) به کلاس فعلی به ارث می‌رسد.

–   دستورات var (خطوط 8 تا10):

همانطور که از دستور var در حالت عادی برای تعریف متغیر استفاده می‌شود، در بدنه کلاس نیز از آن برای تعریف صفات کلاس استفاده می‌گردد. از ترکیب دستور  var با نام حوزه‌های عملکرد، می‌توان حالات مختلفی از صفات خصوصی یا عمومی ایجاد نمود.

–   دستور static (خط 10):

با استفاده از این خصوصیت، تابع یا صفتی که تعریف شده، برای خود کلاس در نظر گرفته شده و نمی‌توان با استفاده از اشیاء ساخته شده از نوع آن کلاس، به آنها دسترسی داشت. خصوصیات و توابع static فقط با استفاده از نام خود کلاس قابل دسترس بوده و امکان ارث‌بری از آنها نیز برای کلاس‌های فرزند وجود ندارد.

–   تابع همنام با کلاس (خط 12):

مهمترین تابعی که معمولاً در اکثر کلاس‌ها تعریف می‌شود، تابع سازنده (constructor) آن کلاس است. تابع سازنده، همیشه همنام با کلاس بوده و اولین تابعی است که پس از ایجاد شئ از کلاس و به صورت خودکار اجرا می‌گردد. معمولاً وظایفی مانند تعریف متغیر‌های اصلی و مقداردهی به آنها و آماده‌سازی کلاس در این تابع انجام می‌گردد.

–   فراخوانی توابع درونی کلاس (خط 21):

برای فراخوانی توابعی که در بدنه کلاس تعریف شده‌اند، از  قالب “(پارامتر) نام تابع” استفاده می‌شود.

–   دستور addEventListener (خط 16):

از این دستور برای تعیین یک تابع پاسخگو به رویداد (تابع شنودگر یا Event listener function) استفاده می‌گردد. در اینجا تابع evtEnterFrame به عنوان پاسخگو برای رویداد ورود به فریم جدید (ENTER_FRAME) تعیین شده و هر زمان که آن رویداد اتفاق افتد، تابع مذکور اجرا خواهد شد.

About محمد شمس

برنامه‌نویس، طراح انیمیشن و علاقمند به هوش مصنوعی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


× 9 = 18