اشیا در جاوا اسکریپت

آموزش شی گرائی در جاوا اسکریپت - آموزش شی گرائی در javascript - object oriented programming in javascript

 

شی گرائی در جاوا اسکریپت ( javascript ) :

 

جاوا اسکریپت یک زبان شی گرا میباشد و زمانی که ما از شی گرائی صحبت میکنیم هر زبان برنامه نویسی باید حداقل موارد زیر را داشته باشد  :

  • کپسوله سازی ( Encapsulation  ) : قابلیت ذخیره سازی اطلاعات مربوطه ، داده ها و متدها درون یک کپسول به نام آبجکت را به شما میدهد
  • تجمع اشیا ( Aggregation ) : قابلیت ذخیره سازی یک شی درون شی دیگر را میدهد 
  • وراثت ( Inheritance ) : قابلیت این را میدهد که یک کلاس از داده ها  ومتد های درون یک کلاس دیگر ارث بری کند یعنی همان ها را درون خودش داشته باشد و ممکن است تغییرات جدیدتری روی آنها اعمال کند 
  • چند ریختی(Polymorphism)  : چند ریختی چند ریختی، کمیتی است که به یک رابط امکان می‌دهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند. عمل خاص کلاس را ذات حقیقی شیء تعیین می‌کند. مثال ساده‌ای از چند ریختی، فرمان اتومبیل است. عمل فرمان اتومبیل برای تمام اتومبیل‌ها بدون توجه به ساز و کاری که دارند، یکسان است.

اشیا از attribute ها تشکیل شده اند . اگر یک attribute تابع باشد آنرا متد نام گذاری میکنند و در غیر این صورت آنرا یک ویژگی یا property  برای شی تعریف میکنند .

 

خواص اشیا در جاوا اسکریپت : 

 

خواص اشیا میتوانند هر نوع  از سه نوع پیشین داده ها یا هر نوع داده ی انتزاعی باشند ، همانند شی دیگری . 

خواص یک شی همان متغیرهای درون شی هستند که میتوانند درون متد ها استفاده شوند یا بصورت سراسری در آن صفحه استفاده شوند .

سینتکس استاندارد اضافه کردن یک خاصیت جدید به یک شی طبق کدهای زیر است 

objectName.objectProperty = propertyValue;

برای مثال ، در شی document میتوانید به خاصیت title دسترسی داشته باشید . کد زیر را مشاهده کنید 

var str = document.title;

 

متدهای اشیا در جاوا اسکریپت : 

 

متدها همان توابعی هستند که درون یک شی نوشته میشوند و یک عملی را انجام میدهند . تفاوت کوچکی بین توابع و متدها است . توابع بصورت مستقل عمل میکنند و هر جایی میتوان از انها استفاده کرد ولی متدها فقط درون یک شی هستند و با کلمه ی this به انها اشاره کرد .

متدها تقریبا برای هر چیزی کاربرد دارند . از نمایش محتویات ساده از درون شی ، روی صفحه ی نمایش گرفته تا انجام عمل های پیچیده ریاضی روی پارامترها ، خاصیت ها و متغیرهای درون یک شی را میتوان از کارهای انجام شده توسط متد ها محسوب کرد . 

برای مثال - کد زیر مثال ساده ای است که نشان میدهد متد write() چطور یک متنی را شی document می نویسد :

document.write("This is test");

 

اشیا شخصی تعریف شده در جاوا اسکریپت : 

 

تمام اشیا که برنامه نویس آنها را برای خودش ایجاد میکند از فرزندان یک شی اصلی به نام Object محسوب میشود . 

 

اپراتور new در شی گرای جاوا اسکریپت : 

 

کلمه ی کلیدی new برای ساختن یک نمونه ی جدید از شی استفاده میشود . زمانی که شما یک نمونه ی جدید از یک شی میسازید . بعد از اجرای new ، بلافاصله نام متد سازنده را بنویسید . 

در مثال های زیر متدهای Object() و Array() .Date و Date() متدهای سازنده هستند .همانطور که میبینید این متدها میتوانند پارامتر ورودی نیز قبول کنند . 

var employee = new Object();
var books = new Array("C++", "Perl", "Java");
var day = new Date("August 15, 1947");

 

متد سازنده ی یک شی در جاوا اسکریپت : 

 

متد سازنده یک متد است مثل تمام متد ها ، ولی این متد زمانی که برای اولین بار نمونه ای از یک شی ساخته میشود اجرا میشود و ممکن است کاری را به انجام برساند . 

جاوا اسکریپت یک متد سازنده ی ویژه را فراهم کرده است که برای ساخت یک شی استفاده میشود و نام ان Object() میباشد . 

مقدار بازگشی Object() به یک متغیر اختصاص داده میشود . یک متغیر که به شی ساخته شده اشاره میکند و توجه کنید که متغیرهای چسبیده به یک شی ساخته شده متغیر معمولی نیستند که با کلمه ی کلیدی var  شناخته شوند . 

در مثال زیر تمام این موارد را میتوانید ببینید و تست کنید . 

<html>
   <head>
      <title>User-defined objects</title>     
      <script type = "text/javascript">
         var book = new Object();   // Create the object
         book.subject = "Perl";     // Assign properties to the object
         book.author  = "Mohtashim";
      </script>      
   </head>
   
   <body>  
      <script type = "text/javascript">
         document.write("Book name is : " + book.subject + "<br>");
         document.write("Book author is : " + book.author + "<br>");
      </script>   
   </body>
</html>

خروجی : 

Book name is : Perl 
Book author is : Mohtashim

 

مثال دوم : 

در این مثال شما میبینید که چطور میتوانید یک شی با متد شخصی بسازید . اینجا کاربرد کلمه ی this  که پیش تر گفتیم را میتوانید ببینید که به شی ای که درون آن متد شخصی است اشاره میکند

<html>
   <head>   
   <title>User-defined objects</title>
      <script type = "text/javascript">
         function book(title, author) {
            this.title = title; 
            this.author  = author;
         }
      </script>      
   </head>
   
   <body>   
      <script type = "text/javascript">
         var myBook = new book("Perl", "Mohtashim");
         document.write("Book title is : " + myBook.title + "<br>");
         document.write("Book author is : " + myBook.author + "<br>");
      </script>      
   </body>
</html>

خروجی : 

Book title is : Perl 
Book author is : Mohtashim

 

تعریف کردن متد جدیدی برای یک شی  : 

 

در مثال قبلی شما دیدید که چطور سازنده یک شی جدید ساخت ولی ما قصد داریم یک شی کامل به همراه متد های آن ایجاد کنیم 

کدهای زیر را تمرین کنید این کدها به شما نشان میدهد که چطور متدی را به شی ای اضافه کنید 

<html>
   
   <head>
   <title>User-defined objects</title>
      <script type = "text/javascript">
         // Define a function which will work as a method
         function addPrice(amount) {
            this.price = amount; 
         }
         
         function book(title, author) {
            this.title = title;
            this.author  = author;
            this.addPrice = addPrice;  // Assign that method as property.
         }
      </script>      
   </head>
   
   <body>   
      <script type = "text/javascript">
         var myBook = new book("Perl", "Mohtashim");
         myBook.addPrice(100);
         
         document.write("Book title is : " + myBook.title + "<br>");
         document.write("Book author is : " + myBook.author + "<br>");
         document.write("Book price is : " + myBook.price + "<br>");
      </script>      
   </body>
</html>

خروجی : 

Book title is : Perl 
Book author is : Mohtashim 
Book price is : 100

 

کلمه ی کلیدی with در شی گرائی جاوا اسکریپت : 

 

کلمه ی کلیدی with ، نوعی اشاره گر به خواص و متدهای یک شی میباشد . 

هر شی که بعنوان یک آرگومان به with ارسال شود بعنوان شی پیشفرض برای یک بلاک خاصی که درون {} قرار میگیرد تعریف میشود . 

خواص و متدهای درون یک شی میتواند بدون نام گذاری برای شی ، مورد استفاده قرار گیرند . 

سینتکس استفاده ی صحیح از with در زیر امده است 

with (object) {
   properties used without the object name and dot
}

مثال کاربردی : 

<html>
   <head>
   <title>User-defined objects</title>   
      <script type = "text/javascript">
         // Define a function which will work as a method
         function addPrice(amount) {
            with(this) {
               price = amount;
            }
         }
         function book(title, author) {
            this.title = title;
            this.author = author;
            this.price = 0;
            this.addPrice = addPrice;  // Assign that method as property.
         }
      </script>      
   </head>
   
   <body>   
      <script type = "text/javascript">
         var myBook = new book("Perl", "Mohtashim");
         myBook.addPrice(100);
         
         document.write("Book title is : " + myBook.title + "<br>");
         document.write("Book author is : " + myBook.author + "<br>");
         document.write("Book price is : " + myBook.price + "<br>");
      </script>      
   </body>
</html>

خروجی : 

Book title is : Perl 
Book author is : Mohtashim 
Book price is : 100

 

. اتمام .