اشيا : جهاني را كه در آن زندگي مي كنيد در نظر بگيريد . اطراف شما پر از شي هاي گوناگون است . اين شي ها تفاوت هاي بسياري با هم دارند اما در يك ويژگي با هم مشتركند :
همه ي آنها از مجموعه اي از خصوصيات و رفتارها تشكيل شده اند . براي مثال يك گربه خصوصياتي مانند اندازه ، رنگ ، وزن و . . . و رفتارهايي مانند خوردن ، خوابيدن ، ميوميو كردن و . . . دارد .
اشيا در برنامه نويسي شي گرا ( Object Oriented Programming ) هم بر همين مفاهيم بنا شده اند يعني در برنامه نويسي شي گرا هر شي داراي مجموعه اي از خصوصيات ( properties ) و رفتارهاست ( Methodes ) .
مفهوم كلاسها :
اكشن اسكريپت و زبانهاي برنامه نويسي امكان ايجاد و كار كردن با اشيا را به كمك كلاسها ممكن مي سازند .
كلاس خصوصيات و متدهاي كلي مشترك ميان دسته اي از اشيا تعيين مي كند سپس با نمونه سازي از آن كلاس ميتوان شي مورد نظر را با خصوصيات خاص خودش ايجاد كرد .
يك كلاس را مي توان به نقشه ي يك خانه تشبيه كرد كه مي توان ساختمانهاي زيادي از روي آن ساخت اما هيچكدام از ساختمانها كاملا مشابه نيستند و مثلا در رنگ و نما باهم تفاوت دارند .
چگونگي ايجاد و استفاده از كلاسها در فلش : براي روشن شدن مطلب از يك مثال استفاده مي كنم :
|
class Box{ var tool:Number; var arz:Number; var ertefa:Number; function Box(t:Number ,a:Number ,e:Number ) { this.tool=t; this.arz=a; this.ertefa=e; } }
|
|
در اين مثال كلاسي به نام Box ايجاد مي شود كه از سه properties و يك متد ( constructor ) تشكيل شده است . يعني با نمونه سازي از اين كلاس مي توانيد جعبه هايي ايجاد كنيد كه طول - عرض و ارتفاع خاص خودشان را داشته باشند .
همانطور كه مي دانيد يا متوجه شده ايد تعريف هر كلاس با كلمه ي class شروع مي شود سپس نام كلاس نوشته مي شود و بعد از آن خصوصيات و متدها بين { } تعريف مي شوند .
متن كلاس بايد در يك فايل با پسوند AS نوشته و ذخيره شود .
ساده ترين راه استفاده از يك كلاس اين است كه فايلي را كه قصد داريد نمونه كلاس را در آن ايجاد كنيد در كنار فايل كلاس ذخيره كنيد و سپس با عبارتي مثل عبارت زير نمونه اي از آن ايجاد كنيد :
|
var myBox:Box = new Box(10,30,15); trace(myBox.tool); // 10 trace(myBox.arz); // 30 trace(myBox.ertefa); // 15
|
|
نهان سازي : يكي ديگر از ويژگي هاي OOP نهان سازي است . هدف از نهان سازي پوشاندن پيچيدگي هاست . براي مثال يك اتومبيل رو در نظر بگيريد . اصلا نيازي نيست يك راننده براي استفاده از اتومبيل تك تك اجزا و قطعات اتومبيل رو بشناسه فقط بايد با تعداد محدودي از ابزارها مثل دنده ، فرمان ، ترمز و . . . . كار كنه .
از مثال كه خارج شويم در برنامه نويسي شي گرا هم مي توان نمونه كلاسي (شي) داشت كه اعضاي ( متدها و متغيرها ) زيادي داشته باشد اما اصلا نيازي نباشد كه به طور مستقيم از همه ي آنها استفاده كرد .
اكشن و زبانهاي برنامه نويسي امكان نهان سازي را به وسيله ي مولفه هاي دستيابي ممكن مي سازند . اين مولفه ها عبارتند از : public ، private
با يك مثال كاربرد اين مولفه ها را نشان مي دهم :
|
class Box{ var tool:Number; var arz:Number; var ertefa:Number; function Box(t:Number ,a:Number ,e:Number ) { this.tool=t; this.arz=a; this.ertefa=e; } }
|
|
خوب اين همون كلاس قبلي است با كمي تغيير : پيش از متغيرهاي طول ، عرض و ارتفاع عبارت private آورده شده است به اين معني كه اين متغيرها فقط به وسيله ي اعضاي همان كلاس قابل دستيابي مي باشند .
پيش از متد constructor ( متدي كه هنگام نمونه سازي با عبارت new فراخوانده مي شود ) عبارت public قرار دارد كه به اين معني است كه اين متد براي همه ي اشيا قابل دستيابي است . به وسيله ي اين متد متغيرها مقدار دهي مي شوند .
از آن جا كه متغيرها private هستند و از بيرون قابل دستيابي نيستند براي دستيابي به آنها به متد public داخل كلاس نياز داريم تا مقدار متغيرها را بگيرد و به ما بر گرداند . ازاين بعد براي دستيابي به نمونه متغيرها اينگونه عمل مي كنيم :
|
var myBox:Box = new Box(10,30,15); trace(myBox.tool); // 10 trace(myBox.arz); // 30 trace(myBox.ertefa); // 15
|
|
البته در اين مثال نيازي به نهان سازي نبود اما در بسياري موارد واقعا ضروري است .
فايلهاي پيوستي
MyBox.zip