سازماندهی کلاسهای پروژههای بزرگ Java در قالب Packages
همواره توسعه دهندگان حرفهای در جهت سازماندهی کلاسهای جاو، از مفهوم Packages بندی استفاده میکنند و این در حالی است که این مورد الزامی نمیباشد ولی مسبب حرفهای بودن عملکرد برنامه نویس میشود. پس بهتر است از همان ابتدا این مورد را رعایت نماییم و در این درس بطور اجمالی به این موضوع پرداختهایم.
فهرست مطالب آموزش
بسته بندیِ کلاسهای جاوا
در این بخش از آموزش هدف ما بسته بندیِ کلاسهای جاوا به منظور نظم و ترتیب دادنِ بیشتر به ساختارِ برنامه ما هست.
یک پروژه بزرگ میتواند دارای هزاران کلاس باشد که شما در چنین مواقعی باید آنها در بستهها(Packages) سازماندهی کنید. این عمل به شما اجازه دسته بندی فایلها و کنترل دسترسی به کلاسهای شما را میدهد، که این کار باعث جلوگیری از درگیری در نامگذاری نامها میشود، بدین معنی که اگر شما و همکارتان بصورت اتفاقی یک کلاسی را فراخوانی کنید، اگر کلاسهای شما در پکیجهای مختلفی باشند، هیچ مشکلی پیش نخواهد آمد.
توسعه دهندههای جاوا معمولاً کلاسهای خود را داخل پکیجها قرار میدهند و با این کار به برنامه خود نظم و ترتیب میدهند.
پکیج بندی در جاوا
یک پکیج یک شناسه یا همان یک identifier منحصربفرد هست که در بالای اعلان کلاس یا همان declaration قرار میگیرد. ولی در واقع با سلسله مراتبی از فولدرها مچ میشود.
همانطور که در ویدئوهایِ آموزشی قبلی دیدید میتوانید کلاسهای جاوا خود را در یک فولدر ریشه پروژه خود ایجاد کنید، که همان پکیج پایه محسوب میشود، ولی برای اینکه کلاسها سازماندهی بهتری داشته باشند، باید پکیج بندی را از همان ابتدا شروع کنید. من الان این نسخه از کلاس Main خود را که در فولدر Packages ِ پروژه من قرار دارد، باز میکنم. ما هنوز کارِ زیادی را انجام ندادهایم و فرض میکنیم فایلهایِ تمرینی ما همان پروژه ما محسوب شوند.
پس Packages ریشه، پروژه من هست و یکبار دیگر، از یک ویرایشگر متنی ساده برایِ باز کردنِ این نسخه از کلاسِ Main استفاده میکنم. کلیک راست و از Open with ویرایشگر متنِ Notepad را انتخاب میکنم.
و الان میخواهم یک رشته در بالای قسمت اعلان کلاس اضافه کنم، که با کلمه کلیدی package شروع میشود. پس قبل از عبارتِ Public قرار میگیرم و دو تا اینتر میزنم، بعد هم میآیم این بالا؛ و تایپ میکنم package.
حالا، میتوانید هر رشتهای که دوست داشته باشید را به عنوان شناسه پکیج استفاده کنید، ولی معمولاً این رشتهها از نام دامنه به صورت معکوس تشکیل و نشانهگذاری میشوند.
گاهی اوقات شما میخواهید از کتابخانههایی از کلاسهای نوشته شده جاوا در قسمتهای مختلف اداره یا حتی خارج از شرکت خود استفاده کنید. برای به حداقل رساندن هم نام شدن پکیجها شما میتوانید از نام دامین شرکت خود بصورت معکوس استفاده کنید،
پس اگر دامنه شرکت شما example.com باشد، پکیج شما با عبارت com.example شروع میشود. اینطوری؛
و در حقیقت نام پکیج باید با دامنه اینترنتیِ سازمان و شرکت شما مچ شود، همینطور ممکن است هم بخواهید بعد از قسمت اول رشته دیگری اضافه کنید تا نام پکیج شما برای برنامه شما منحصربفرد بشود. من از رشته Java برایِ این منظور استفاده میکنم.
پس با کلمه کلیدی package شروع میکنم، بعد نام رشته پکیج، و بعد هم یک semicolon.
حالا، این فایل باید به فولدر مربوط به خودش یعنی دقیاً به آن سلسه مراتب و ساختارِ درختیِ مدِ نظر که تعلق دارد، برود. پس من ویرایشگر خود را میبندم و در پیغامِ مبنی بر سؤال برایِ ذخیره متن اضافه شده هم رویِ Save کلیک میکنم
ایجاد سلسله مراتب با استفاده از فولدر در java
و میروم که زنجیره فولدری و سلسله مراتبِ مدِ نظر خود را به سادگی با ساخت فولدرهایی در اینجا ایجاد کنم.
یک فولدر جدید با نام com ایجاد میکنم.
روی آن دابل کلیک میکنم و بعد یک زیر فولدر داخل آن به نام example ایجاد میکنم.
و بعد رویِ آن هم دابل کلیک میکنم و یک زیرفولدر دیگر هم داخل این با نام java ایجاد میکنم و بعد یک پنجره Explorer ویندوز دیگر با همین مسیرِ حالِ حاضر باز میکنم، برمیگردم به فولدر Packages و بعد کلاس Main خود را دراگ و دراپ میکنم و آنرا داخل این زیرفولدر java قرارش میدهم. بعد این فایل را در یک ویرایشگر متن باز میکنم و میبینیم که نام پکیج یعنی com.example.java با مسیرِ حالِ حاضرِ محلِ قرار گیریِ فایل و ساختار فولدر یعنی com و بعد example و بعد java مچ شده است.
کامپایل و اجرا برنامه از command prompt
پس حالا آمادهام تا برنامه را کامپایل و اجرا کنم. یکبار دیگر به command prompt میروم.دقت کنید برایِ اینکه من مسیر حالِ حاضر را برایِ فراخونیِ command prompt سفارشی کنم؛ خیلی راحت میآیم و در نوار آدرس یک کلیک میکنم و تایپ میکنم cmd و بعد اینتر را میزنم. خب؛ الان من در آخرین فولدر از ساختار سلسله مراتبی، مدِ نظرِ چند لحظه پیش هستم.
ولی فولدر Packages در واقع فولدر ریشهای پروژه من است و من میخواهم که برگردم و از همین فولدر شروع کنم. خوب میدانید که در command prompt برایِ برگشتن به عقب باید تایپ کنیم cd.. (سیدی2نقطه) و بعد هم اینتر؛ اینکار را باید 3 بار انجام بدهیم.
چونکه میخواهم مطمئن بشوم که از ریشه پروژه شروع میکنم تا اینکه کامپایل و اجرا کلاس به درستی انجام بشود.
حالا، یکبار تایپ میکنم cls و اینتر را میزنم تا مراحلِ قبلی را فعلاً کنار بگذارم و با تمرکزِ بهتری بتوانیم ادامه بدهیم.
و بعد هم با این کد برنامه را کامپایل میکنم. با javac شروع میکنم و بعد آدرس فایل را با استفاده از نگارش استاندارد آدرس چند لحظه پیش به آن میدهم. با com شروع میکنم، بعد یک اسلش بعد example یک slash و java دوباره slash و در آخر نام فایل با فرمت آن یعنی Main.java را باید تایپ کنم.
اینتر میزنم و فایل کامپایل میشود و به فایل لیست شده خود برمیگردم و این نشان میدهد که Main.class با موفقیت ایجاد شده است.
بعد برمیگردم به command prompt خودمان.
حالا برای اجرای فایل، یکبار دیگر با java شروع میکنم نه javac، و اینبار از نام کامل کلاس استفاده میکنم. نام کامل کلاس شامل پکیج و نام کلاس که با نقطه به انتهای آن اضافه میشود. پس میشود com.example.java.Main و باز هم میگویم نباید پسوند فایل را اضافه کرد.
اینتر میزنم و این هم نتیجه.
من موفق شدم برنامه را اجرا کنم.
یکبار دیگر ارر exception داد چون کد من به یک آرگومان از command line نیاز دارد. پس کلید جهتی بالایِ صفحه کلید را فشار میدهم تا دستور قبلی را باز کند و آرگومان MyArgument را به انتهای عبارتِ تایپ شده قبلی اضافه میکنم. به این شکل؛
اینتر میزنم؛ و حالا کد من بدون ارر با موفقیت اجرا میشود.
پس در این بخش آمدیم ساختار فولدر پکیج خود را ایجاد کردیم و اعلان پکیج را به بالا کد خود اضافه کردم که نشان بدهد کلاس وجود خارجی دارد.
باز هم میگویم که مجبور نیستید برای سازماندهی به کلاسهای جاوا خود را پکیج بندی کنید، ولی تقریباً همه توسعه دهندگان جاوا اینکار را انجام میدهند، پس ایده خوبی است که از همان ابتدا سازماندهی کلاسها را شروع کنیم.