درک مفاهیم کلاس، شیء و کپسوله سازی

چاپ

در اصطلاحات برنامه نویسی شیء گرا، به مجموعه ای از اشیاء که دارای خصوصیات مشترکی هستند، کلاس(class) گفته می شود.  تعریف یک کلاس، به این معنی است که اشیای آن باید دارای چه خصوصیاتی باشند و اینکه آن اشیاء باید چه کاری را انجام دهند.این property(پروپرتی یا متغیر درون یک کلاس) ها هستند که یک شیء را تعریف می کنند. مقادیر قرار گرفته در property های یک شیء باعث می شوند که اشیای ایجاد شده از یک کلاس، از یکدیگر متمایز شوند. می توان گفت که یک شیء، در حقیقت یک نمونه ی واقعی از یک کلاس است. 

property چیست؟

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

همچنین به property ها، متغیر عضوی نیز گفته می شود. 

به متغیرهای عضوی غیر استاتیک، در داخل یک کلاس، متغیرهای نمونه(instance variables) گفته می شود. 

به متغیرهای عضوی استاتیک، در داخل یک کلاس، متغیرهای کلاس(class fields) گفته می شود. 

برای اطلاعات بیشتر در مورد متغیرهای نمونه و متغیرهای کلاس، این مقاله را مطالعه کنید

نکته: در زبان فارسی، می توانیم کلمه ی property را معادل با کلمه ی خصوصیت ، در نظر بگیریم، و یا می توانیم به آن  پروپرتی بگوییم. 

 بعنوان مثال فرض کنید که کلاس Automobile بتواند اشیاء اتومبیل را ایجاد کند.خصوصیت های رنگ، سال تولید و مدل، در تمام اتومبیل ها وجود دارند. این خصوصیات در هر اتومبیل که ایجاد می شود وجود دارند، اما مقادیر آنها برای هر اتومبیل متفاوت است. مثلاً ممکن است یک پراید سال 95 به رنگ سفید و یا یک نیسان سال 93 به رنگ آبی داشته باشیم. 

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

در عکس 1.2 می توانید خصوصیات مشترک چند شیء پراید را در کلاسی به نام Praid مشاهده کنید. 

نکات مهم:

 نکته1: به صورت قراردادی، برنامه نویسان جاوا نام کلاس ها را با یک حرف بزرگ شروع می کنند. اما برای ایجاد یک برنامه، انجام این قرارداد ضروری نیست. 

 نکته2: هنگام یادگیری جاوا،شما با دو نوع کلاس آشنا خواهید شد: کلاس هایی که قبلا توسط برنامه نویسان این زبان ایجاد شده اند و کلاس هایی که شما خودتان تعریف می کنید. 

نکته3: همان طور که یک کاغذ کاربن قبل از برگه ی سفید قرار می گیرد، یک کلاس نیز باید قبل از اینکه از آن نمونه گیری شود، تعریف شده باشد. 

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


خصوصیت ها و متدها، در درون کلاس ها محافظت می شوند و سپس مثل اشیاء جهان واقعی مورد استفاده قرار می گیرند. 

نکته مهم:

به محافظت شدن و محصور شدن خصوصیت ها و متدها در درون کلاس ها، کپسوله سازی گفته می شود. 

کپسوله سازی، با محافظت کردن از داده ها و متدها در برابر تغییرات عمدی، امنیت را به ارمغان می آورد. 

کپسوله سازی را می توان به یک دستگاه تشبیه کرد که شما می توانید از آن بهره ببرید، بدون اینکه بتوانید از مکانیزم های داخلی این دستگاه مطلع شوید.