ایجاد یک کلاس در جاوا

چاپ

هنگامی که می خواهید یک کلاس ایجاد کنید، باید یک نام به این کلاس اختصاص دهید؛ همچنین باید تعیین کنید که چه متد و داده ای در این کلاس باید قرار گیرد. فرض کنید که می خواهیم یک کلاس به نام Employee بسازیم که در آن یک خاصیت(property) وجود داشته باشد تا در آن، شماره ی یک کارمند بانک را ذخیره یا دریافت کنیم. برای انجام این کار، باید دو متد به نام های set و get هم تعریف کنیم تا به ترتیب بتوانیم شماره ی کارمند بانک را ذخیره یا دریافت کنیم. برای انجام این کار، ابتدا باید عنوان کلاس را بنویسیم که باید شمال سه بخش زیر باشد: 

  1. ابتدا سطح دسترسی کلاس را تعریف می کنیم(access specifier).
  2. سپس کلمه ی class را می نویسیم.
  3. سپس نام(شناسه) کلاس را می نویسیم.

بعنوان مثال، این عنوان می تواند به صورت زیر باشد: 

مثال(آموزش ایجاد کلاس در جاوا)

public class Employee

 کلمه ی کلیدی public تعیین کننده ی سطح دسترسی یک کلاس می باشد. کلاس هایی که public باشند، توسط تمامی اشیاء قابل دسترسی هستند. این گفته، به این معنی است که کلاس های public می توانند توسط دیگر کلاس ها توسعه یابند(extend شوند) یا به عبارت دیگر، این کلاس ها می توانند مبنا و پایه ی دیگر کلاس ها شوند. بیشترین سطح دسترسی که مورد استفاده قرار می گیرد، کلمه ی کلیدی public است. 

public کردن سطح دسترسی، به این معنی است که مثلا اگر شما یک کلاس خوب به نام Employee بنویسید، و در روزهای آینده بخواهید دو کلاس خاص دیگر به نام های SalariedEmployee و HourlyEmployee بسازید، نیازی ندارید تا بنشینید و از اول این کلاس ها را بنویسید. هر یک از این کلاس های جدید می توانند کلاس Employee را توسعه دهند و داده ها و متدهای آن را به ارث ببرند. 

نکته: در فصل "مقدمه ای بر وارثت در جاوا" در مورد extend کردن کلاس ها توضیحات کاملی را مطالعه خواهید نمود. 

نکته: شما می توانید از سطوح دسترسی زیر، هنگام تعریف یک کلاس استفاده کنید: 

  1. public
  2. final
  3. abstract
  4. strictfp

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


پس از اینکه عنوان کلاس مورد نظر(یعنی public class Employee) را ایجاد کردیم، باید بدنه ی این کلاس که در داخل دو آکولاد قرار می گیرد را بنویسیم. بدنه ی یک کلاس، حاوی خاصیت ها(property) و متدهای آن کلاس است. عکس 3.5 کلاس Employee را نشان می دهد که حاوی یک خاصیت(property) به نام empNum است. خاصیت ها(property) درواقع متغیرهایی هستند که شما آنها را در داخل یک کلاس و بیرون از متدها، تعریف می کنید. 

تعریف: به متغیرهایی که در داخل یک کلاس و بیرون از تمام متدهای آن کلاس ایجاد می کنیم، خاصیت یا property (و یا فیلد)  گفته می شود. 

 

 در عکس 3.15 (عکس بالا) خاصیت empNum دارای کلمه ی کلیدی static نمی باشد. این یعنی هنگامی که شما از این کلاس نمونه گیری(instantiate) کنید، این خاصیت در هرکدام از اشیاء با دیگری متمایز می باشد. به عبارت دیگر، به دلیل اینکه خاصیت empNum از نوع static نیست، هر شیء کلاس Employee  یک متغیر empNum مخصوص به خود (و متمایز از دیگر اشیاء) خواهد داشت. 

 نکته: در صورتی که بخواهیم ...

نکته: متغیر عضوی یا همان member variable، به متغیری گفته می شود که  در داخل یک کلاس و در بیرون از متدها تعریف شده باشد. همچنین به این متغیر، نام های instance variable و field نیز گفته می شود.  

قبلا آموختید که زبان برنامه نویسی جاوا، از چهار سطح دسترسی برای دسته بندی متغیرها( منظور متغیرهای عضوی یا member variables است) و متدها استفاده می کند که عبارتند از: 

  1. private
  2. protected
  3. public
  4. package (در صورت نامشخص بودن)

اکثر متغیرها(ی عضوی) مانند متغیر  empNum که در کلاس Employee قرار دارد، دارای سطح دسترسی private هستند. این سطح دسترسی، بالاترین سطح امنیت را دارد. 

اگر به یک متغیر عضوی، سطح دسترسی private را بدهیم، به این معنی است که دیگر کلاس ها نمی توانند به مقدار درون این متغیر عضوی دسترسی داشته باشند. و تنها متدهای همین کلاس مجاز هستند تا از آن استفاده کنند ( و آن را set یا get کنند). 

 علت اینکه سطح دسترسی private ایجاد شده است را پنهان سازی داده ها یا information hiding می گویند. پنهان سازی داده ها، یک بخش مهم در برنامه های شیء گرا محسوب می شود. 

 داده هایی از یک کلاس که دارای سطح دسترسی private هستند، تنها به وسیله ی متدهای همان کلاس می توانند مورد تغییر یا دستکاری قرار بگیرند و به وسیله ی متدهای دیگر کلاس ها، نمی توانند مورد تغییر قرار بگیرند. 

 برخلاف متغیرهای عضوی که بیشتر از سطح دسترسی private استفاده می کنند، متدهای یک کلاس معمولا از سطح دسترسی public بیشتر استفاده می کنند. 

 اینکه داده ها را در متغیرهای عضوی، از نوع private قرار دهیم و از سطح دسترسی public در متدها استفاده کنیم، به ما امکان می دهد تا از بیرون، به داده ها(ی ذخیره شده در متغیرهای private) دسترسی داشته باشیم. زیرا در یک کلاس، تنها متدهای غیر private(یعنی متدهای public  و protected و غیره)، می توانند به داده ی متغیرها از نوع private دسترسی داشته باشند. 

نکته(ایجاد یک کلاس در جاوا)

متغیرهای عضوی، اغلب از نوع private هستند و نه static. به ندرت پیش می آید که یک متغیر عضوی از نوع public باشد.

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

در مقاله ی بعدی، در مورد سطح دسترسی static و غیر static بیشتر بحث خواهیم نمود. 

نکته(ایجاد یک کلاس در جاوا)

هنگامی که یک متغیر عضوی، هم static و هم final باشد، اغلب از سطح دسترسی public برای آن استفاده می شود. این کار زمانی انجام می شود که بخواهیم یک مقدار ثابت و بدون تغییر را ایجاد کنیم که نیازی به ایجاد یک شیء برای استفاده از آن وجود نداشته باشد. بعنوان مثال در کلاس Math از جاوا، یک متغیر عضوی به نام PI وجود دارد که بدون نمونه گیری از کلاس Math می توانید از آن استفاده کنید. در مورد کلاس Math در فصل آینده مطالبی را خواهید آموخت.