قسمت ششم : اشیاء(Object) و کلاس ها(Class) و سازنده ها(Constructors) و Modifier ها
زبان جاوا یک زبان برنامه نویسی شیء گرا می باشد که مفاهیم زیر را پشتیبانی می کند :
- Polymorphism
- Inheritance
- Encapsulation
- Abstraction
- Classes
- Objects
- Instance
- Method
- Message Parsing
حال به مفهوم Object و Class می پردازیم :
Object : هر شیء ای حالت(State) و رفتاری(Behavior) دارد. به عنوان مثال, یک سگ حالت هایی از قبیل رنگ, نام, قد, سن و ... دارد و رفتارهایی از قبیل خوردن, دویدن, پارس کردن دارد. یک شیء (Object) , یک نمونه(Instance) از کلاس است.
ایجاد یک Object سه مرحله دارد :
- 1. Declaration (اعلان) : اعلان متغیر با یک نام و یک نوع.
- 2. Instantiation (نمونه سازی یا وهله سازی) : استفاده از کلمه کلیدی new برای ایجاد Object.
- 3. Initialization (مقدار دهی اولیه) : بعد از اینکه با کلمه کلیدی new شیء ایجاد شد, بلافاصله بطور اتوماتیک سازنده(Constructor) فراخوانی می شود. فراخوانی شدن سازنده باعث می شود که شیء مقدار دهی اولیه شود.
مثال :
بعد از کامپایل و اجرای قطعه کد بالا خروجی زیر را مشاهده می کنیم :
Class : کلاس می تواند تعریف شده باشد به عنوان یک قالب که توصیف می کند حالات(States) و رفتارهای(Behaviors) یک شیء از نوع خودش را.
در دنیای نرم افزار, یک شیء نرم افزار یک سری State و Behavior دارد. حالت یک شیء نرم افزار در داخل Instance Variable ها ذخیره شده اند و رفتار با متدها نشان داده می شود.
یک مثال برای کلاس :
کلاس ها انواع مختلف متغیر های زیر را شامل می شوند :
- Local variables
- Instance variables
- Class variables
سازنده :
متدی همنام با خود کلاس است که وظیفه مقدار دهی اولیه(Initialize) یک Object را برعهده دارد. هنگامی که یک شیء new می شود بطور اتوماتیک فراخوانی می شود.
مثال :
Modifier ها :
مانند دیگر زبان های برنامه نویسی می توان سطح دسترسی و نوع کلاس ها , متد ها و Instance Variable ها را بوسیله Modifier ها تغییر داد.Modifier ها در دو گروه هستند:
- Access Modifiers : شامل default, public , protected, private .
- Non-access Modifiers : شامل final, abstract, static .
مثال برای private :
مثال برای public :
مثال برای protected :
مثال برای Static :
مثال برای final Variable :
مثال برای final Method :
مثال برای final class :
مثال برای Abstract :
مثال برای Synchronized و Volatile :
نتیجه گیری :
کلاس :
* کلاس در یک فایل جاوا کامپایل می شود.
* کلاس رفتارش مانند یک Template است.
* کلاس تعداد زیادی متد دارد.
شیء :
* شیء در heap است.
* مقدارش در Runtime می تواند عوض شود.
* رفتار دارد.
* می تواند تعداد زیادی رفتار داشته باشد.
* حالت هایش می تواند عوض شود.
* Object یک نمونه از کلاس است.
* شیء یکبار ساخته(new) می شود و بعد از مدتی از بین می رود(توسط GC(Garbage Collector)
تخریب(Garbage) می شود) و برای مدت محدودی Live است.
Access Modifiers :
* قابل دسترسی است فقط برای همان Package(پیش فرض می باشد(By Default))
* قابل دسترسی است فقط برای اعضای کلاس(Private).
* قابل دسترسی است برای همه(Public).
* قابل دسترسی است فقط برای همان Package و زیر کلاس هایش(Protected).
Non-Access Modifiers :
* Static Modifier برای ایجاد کلاس, متد و متغیر استاتیک.
* Abstract Modifier برای ایجاد کلاس و متد Abstract استفاده می شود.
* Synchronized Modifier و Volatile Modifier برای Thread ها استفاده می شود.
* final Modifier برای نهایی کردن کلاس, متد و متغیر .
*یک متغیر final یعنی : مقدار آن متغیر قابل تغییر نیست(یکبار مقدار دهی می شود و غیر قابل تغییر است).
* یک متد final یعنی : آن متد قابل بازنویسی(Override) نیست.
* یک کلاس final یعنی : آن کلاس قابل ارث بری(Inheritance) نیست.
* وقتی تعداد متغیر های final زیاد باشد با از enum استفاده کنیم(خوانایی برنامه بالا می رود).
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.