مقدمه ای بر مبحث شی گرایی :
جاوا اسکریپت ، یک زبان برنامه نویسی شی گرا یا ( Object Oriented Programming ) است
. این زبان به برنامه نویس ، قابلیت استفاده از اشیای پیش ساخته و یا تعریف و ایجاد
اشیای جدید مورد نیاز خود را می دهد .
توجه : در این قسمت ، مروری کوتاه بر مفهوم برنامه نویسی شی
گرا در جاوا اسکریپت و نحوه استفاده از آن خواهیم داشت . در قسمت های بعدی به معرفی
انواع اشیا پیش ساخته در Java Script می پردازیم .
مفهوم کلاس :
کلاس ( class ) ، اساسی ترین مفهوم شی گرایی است . یک کلاس یک الگو یا چهارچوب از پیش
تعریف شده است که اشیا ( objects ) از روی آن ساخته می شوند . هر کلاس مجموعه ای از
خواص ( Properties ) و متدها ( Methods ) است ، که کلاس آنها را به اشیایی که از رویش
ساخته می شوند ، به ارث می دهد .
یک کلاس همانند یک دستورالعمل یا نقشه برای ایجاد اشیای جدید مشتق شده از آن است .
برای مثال موجودیت دانشجو در مجموعه دانشگاه یک کلاس است ، که هر دانشجو یک شی ساخته
شده از روی آن است .
مثال 2 : متغیرهای متنی یا string ، یکی از کلاس های پیش ساخته در
جاوااسکریپت است . در قسمت بعد با تمام خواص و متدهای آن آشنا خواهید شد .
مفهوم شی :
هر شی ، یک نمونه ساخته شده از روی کلاس مادر است . شی خصوصیات و متدهای خود را از
کلاس مادر به ارث می برد .
هر یک از خصوصیات یک شی ، در برگیرنده مقدار مختص به آن خاصیت برای آن شی است . به
عبارت دیگر ، از هر یک از خواص یک کلاس ، یک نسخه یا کپی منحصر به فرد به هر شی اختصاص
می یابد ، که مقدار آن با مقدارش برای سایر اشیای آن کلاس ، متمایز و منحصر به فرد
است .
مثال : برای مثال ، هر دانشجو که از روی کلاس دانشجو ایجاد می شود
، دارای خاصیت های نام ، نام خواندگی ، شماره دانشجویی و ... غیره مخصوص به خود است
. گرچه مقدار این خواص در نمونه های مختلف دانشجوها ممکن است در برخی از آنها مثل نام
یکسان و در برخی مثل شماره دانشجویی یکتا باشد ، ولی مقدار آن برای هر دانشجو جدا و
متمایز است .
مفهوم متد :
متدها ، عملیات یا رفتارهایی است که اشیا یک کلاس می توانند انجام دهند .
مثال : برای مثال هر دانشجو که از روی کلاس دانشجو ساخته می شود ،
دارای عملیات های یکسانی مثل ثبت نام ، انتخاب واحد و ... است .
نحوه تعریف یک کلاس و ایجاد یک شی جدید در جاوا اسکریپت :
در اینجا ، به معرفی یکی از روش های تعریف یک کلاس و ایجاد شی جدید از روی آن می پردازیم
. سپس با نحوه دسترسی به خواص . متدهای اشیا ، آشنا خواهیم شد .
برای ایجاد یک کلاس ، از واژه کلیدی function به شکل کلی زیر
استفاده می شود :
function نام کلاس ( Parameter1 , Parameter2 , ... )
{
this.نام خاصیت 1 = Parameter1 ;
this.نام خاصیت 2 = Parameter2 ;
.
.
.
}
توضیح : ابتدا واژه کلیدی function را نوشته ، پس از آن نام
کلاس ، که در سطح برنامه برای شناسایی و دسترسی به کلاس مورد نظر از آن استفاده می
شود را تعیین می کنیم . به تعداد خواص مورد نظر برای اشیای کلاس ، در پرانتز جلوی نام
کلاس ، پارامتر تعریف کرده ، تا در هنگام فراخوانی کلاس برای ایجاد شی جدید در برگیرنده
مقادیر لازم برای خواص شی باشند .
سپس در بدنه دستورات کلاس برای تعریف و مقدار دهی هر یک از خواص اشیای کلاس ، از وایه
کلیدی this به شکل کلی زیر استفاده می شود :
this.نام پارامتر = نام خاصیت
واژه کلیدی this ، در هر لحظه به شی جاری از کلاس که در آن لحظه در حال ساخت یا ویرایش
است ، اشاره می کند .
پس از تعریف ساختار کلاس ، برای ایجاد یک شی جدید از حالت کلی زیر استفاده می شود :
var نام شی جدید = function نام کلاس ( Parameter1 Value , Parameter2 Value , ... ) ;
برای دسترسی و مقدار دهی هر یک از خواص یک شی از روش کلی زیر استفاده می شود :
نام خاصیت . نام شی
مثال : در مثال زیر یک کلاس به نام student ایجاد کرده ایم . هر شی
این کلاس 3 خاصیت نام ( Name ) ، نام خواندگی ( Family ) و شماره دانشجویی ( ID ) را
خواهد داشت . در هنگام فراخوانی کلاس برای ایجاد یک شی جدید ، مقادیر این 3 خاصیت به
ترتیب به پارامترهای n , f و i ارسال خواهند شد .
در مثال ، پس از تعریف کلاس به ایجاد یک شی جدید به نام St1 و مقدار دهی خواص آن پرداخته
ایم . سپس توسط سه دستور چاپ در خروجی مشخصات کامل دانشجو جدید را در خروجی چاپ کرده
ایم . در انتها هم شماره دانشجویی ، دانشجو مذکور را دوباره مقدار دهی کرده و مقدار
جدید آن را چاپ کرده ایم :
<script type ="text/javascript">
function Student ( n , f , i )
{
this.Name = n ;
this.Family = f ;
this.ID = i ;
}
var St1 = new Student ( "Mehrdad" , "Fattahi" , 122092 ) ;
document.write ( "Name :" + St1.Name +"<br />");
document.write ( "Family : " + St1.Family +"<br />");
document.write ( "Studnet ID : " + St1 .ID +"<br />" );
St1.ID = 299302 ;
document.write ( "New Student ID : " + St1.ID ) ;
</script>Name :Mehrdad
Family : Fattahi
Studnet ID : 122092
New Student ID : 299302