آموزش جاوا، فصل دهم: کلاس ها در برنامه نویسی شیءگرا

در فصل قبل درباره مفاهیم شیءگرایی مطالبی را به صورت تئوری گفتیم. در این فصل می‌خواهیم این مطالب را گسترش دهیم و با نحوه نگارش کلاس‌ها در زبان جاوا آشنا شویم.

1- تعریف کلاس:

package model;

/**
 * تعریف یک  کلاس ساده جاوا
 */
public class Person {

}

به مثال بالا دقت کنید. اجزای مهم این تعریف کدام‌اند؟ در تصویر زیر این اجزا را مشخص کرده‌ایم:

01

1- نام کلاس: شاید مهم ترین قسمت تعریف یک کلاس، نام آن باشد. نام کلاس باید گویای کاربرد اشیایی باشد که قرار است از روی آن ساخته شوند. در مثال بالا نام کلاس Person است. به سادگی می توان فرض کرد که هر شیءای که از روی این کلاس ساخته شود مربوط به یک شخص (همان Person) است.

چندین نکته درباره نام کلاس ها وجود دارد که باید حتماً رعایت شوند:

الف- نام کلاس با حرف یزرگ شروع می شود. بنابراین کلاسی به نام person هر چند از نظر کامپایلر جاوا صحیح است، ولی توصیه نمی شود.

ب- نام فایلی که کد منبع (Source Code) کلاس در آن قرار دارد، باید با نام کلاس یکی باشد. بنابراین کد منبع کلاس Person در فایلی به نام Person.java قرار دارد. توجه کنید که بزرگی و کوچکی حروف هم مهم است و شما نمی توانید کلاس Person را در فایلی به نام person.java یا PERSON.java ذخیره کنید.

ج- در صورتی که نام کلاس بیشتر از یک کلمه باشد، هر کلمه با حرف بزرگ شروع شده و به کلمه قبلی می چسبد. بنابراین اگر کلاسی برای مدیریت Person ها در سیستم بخواهیم می توانیم آن را PersonManager بنامیم.

اگر از یک IDE مثل NetBeans یا IntelliJ Idea استفاده می کنید، با اضافه کردن یک کلاس جدید به یک بسته (Package) به صورت خودکار فایلی به نام همان کلاس در محل مناسب تولید نموده و کد را در آن قرار می دهند.

2- کلمه کلیدی class: کامپایلر جاوا به کمک کلمه کلیدی class تشخیص می دهد که می خواهیم یک کلاس تعریف کنیم. نام کلاس با یک فاصله بعد از این کلمه کلیدی می آید. توجه کنید که هیچ چیزی جز فاصله سفید بین آن ها نباید بیاید.

3- سطح دسترسی: کلاس ها نوشته می شوند تا از آن ها استفاده شود! برای استفاده از کلاس ها دو راه بیشتر نداریم؛ یا از روی آن ها شیء بسازیم یا کلاس های دیگری بسازیم که از آن ها ارث ببرند. (درباره ارث بری در فصل 11 خواهیم گفت.) راهکاری که می توان سطح دسترسی به کلاس را تعیین کرد، اصطلاحاً مجوز دسترسی یا (Access Modifier) نامیده می شود. در جاوا چهار نوع مجوز دسترسی داریم که public یکی از آن ها است. درباره مجوزهای دسترسی در فصل 9 بیشتر خواهیم گفت.

4- بدنه کلاس: همانطور که در فصل قبل گفتیم، هر کلاس شامل اجزایی است. این اجزا را اصطلاحاً در بدنه (Body) کلاس می نویسیم. بدنه کلاس بلافاصله بعد از نام کلاس با یک علامت } آغاز شده و با علامت { تمام می شود. بین این دو علامت جایی است که ما ویژگی ها و متدهای کلاس را تعریف می کنیم.

5- بسته (Package) کلاس: برای دسته بندی کلاس ها و قرار دادن کلاس های مرتیط با هم در یک مکان، جاوا از مفهومی به نام بسته یا package استفاده می کند. مثلاً در مهندسی نرم افزار، کل اشیایی که قرار است در پایگاه داده ذخیره شوند را اصطلاحاً اشیای مدل می نامند. ما اگر بخواهیم این کلاس ها را هم از نظر مفهومی و هم از نظر فیزیکی در یک جا قرار دهیم، از بسته (پکیج) استفاده می کنیم.

معنای مفهومی بسته: قرار دادن کلاس های مرتبط با هم در یک بسته کار ما را بسیار ساده تر می کند. فرض کنید تمام کلاس هایی که قرار است اشیای ساخته شده از آن ها را در یک بسته به نام model قرار دهیم، پس از آن هر وقت که بخواهیم می توانیم کل آن ها همزمان در برنامه import کنیم. همچنین این کار به خود-مستند (self-documented) بودن برنامه کمک می کند؛ می دانیم که همه اشیای مدل ما در بسته ای به نام مدل قرار دارند. همچنین به ساخت Build برنامه نیز کمک فراوانی می کند. می توانیم به جای کامپایل یا build کردن کل پروژه، فقط کلاس های یک بسته خاص را کامپایل یا build کنیم و ….

معنای فیزیکی بسته: هر بسته جاوا، معادل یک فولدر یا شاخه در سامانه فایل است. مثلاً بسته model همان فولدر model در برنامه است. کدهای منبع کلاس هایی که در یک بسته قرار دارند، همگی در این فولدر هستند. مثلاً کد منبع کلاس Person که در بسته model قرار دارد، در فولدری به نام model قرار دارد.

بسته ها را می توان به صورت تو در تو تعریف کرد. در این حالت در تعریف بسته یک کلاس، از بیرونی ترین بسته شروع کرده و هر بسته را با نقطه (.) به بسته بعدی متصل می کنیم. مثلاً اگر بسته test در بسته model قرار داشته باشد، تعریف بسته برای کلاس های بسته test به صورت package model.test; است.

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

قواعد نامگذاری بسته ها در جاوا: همانطور که برای نامگذاری کلاس ها قواعدی وجود دارد، برای بسته ها نیز قوانینی وجود دارد:

الف- بهتر است برای نامگداری بسته ها از وارونه نام دامنه (Domain) شرکت استفاده کنید. مثلاً اگر در شرکت The Best Software Company کار می کنید و نام دامنه شرکت شماwww.company.com است، بسته های خود را با com.company آغاز کنید. به دلیل این که نام دامنه ها در جهان یکتا هستند، نامگذاری بسته های شما و در نتیجه کلاس های شما نیز یکتا خواهد بود. اگر نام دامنه ندارید، سعی کنید بسته های خود را با نامی آغاز کنید که مطمئنید احتمال کمی دارد، بسته ای با همان نام در سایر کتابخانه هایی که استفاده می کنید، وجود ندارد. اگر دو کلاس همنام، در بسته های همنام و در کتابخانه های جدا باشند، ممکن است برنامه کامپایل یا حتی اجرا نشود.

ب- بسته ها کاملاً با حروف کوچک نوشته می شوند. حتی اگر دو کلمه یا بیشتر هم باشند، باز هم همه کلمه ها با حروف کوچک نوشته می شوند. بین آن ها نیز از زیر خط (_) استفاده نمی شود. اگر احساس می کنید نامی مانند someclassesthatweneed قابل خواندن نیست، مطمئن باشید که نامگذاری شما صحیح نیست و باید نام بسته را بهتر انتخاب می کردید!

ادامه دارد…

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail




1 فکر می‌کنند “آموزش جاوا، فصل دهم: کلاس ها در برنامه نویسی شیءگرا

  1. سعادت

    سلام
    تشکر بابت مطالب مفید سایتتون

    بنده به عنوان پیشنیاز برنامه نویسی آندروید قصد دارم جاوا رو از سایت شما یاد بگیرم آیا این فصل دهم فصل آخر آموزش جاواست و این ده فصل کفایت میکنه برای شروع برنامه نویسی آندروید ؟

    ممنون

    پاسخ

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *