Package

Package (پکیج) راهی برای دسته بندی کدهای برنامه می‌باشد. هر چیز در جاوا حداقل در یک Package قرار دارد. وقتی برای یک کلاس اسمی انتخاب می‌کنید ممکن است برنامه نویسان دیگر به صورت اتفاقی اسمی شبیه به آن برای کلاسشان انتخاب کنند. وقتی شما از آن کلاسها در برنامه‌تان استفاده کنید از آنجاییکه از کلاسهای همنام استفاده می‌کنید در برنامه ممکن است خطا به وجود آید.

Package از وقوع این خطاها جلوگیری کرده یا آنها را کاهش می‌دهند. تاکنون و در درسهای قبلی ما فقط با یک پکیج آشنا شده‌ایم و آن پکیجی به نام myfirstprogram بود که کلاسی به همین نام (MyFirstProgram) و متد ()main را در خود داشت. هنگامی که یک پروژه جدید ایجاد کنید به صورت پیشفرض یک فضای نام برای شما ایجاد خواهد شد که نام آن شبیه به نام پروژه‌تان می‌باشد. در این درس به شما نشان می‌دهیم که چگونه کلاسهایتان در در کدهای جداگانه بنویسید و سپس از آنها در فایلهای جدا استفاده کنید. برنامه NetBeans را اجرا و یک پروژه جدید ایجاد کنید:
Package-in-java-01
بعد از کلیک بر روی گزینه New Project و یا زدن دکمه‌های ترکیبی Ctrl+Shfit+N پنجره‌ای به صورت زیر به نمایش در می‌آید که بر طبق شکل گزینه‌ها را نتخاب کنید :
Package-in-java-02
بعد از طی مراحل شکل بالا صفحه زیر به نمایش در می‌آید. در این صفحه و در قسمت Project Name نام پروژه‌تان را انتخاب کنید. مشاهده می‌کنید که در کادری پایین‌تر از آن بسته به نام پروژه یک Package به همراه نام کلاس ایجاد می‌کند :
Package-in-java-03
بعد از زدن دکمه finish در شکل بالا، یک Package یک class به صورت زیر ایجاد می‌شود :
Package-in-java-04
توجه کنید که پسوند کلاس در جاوا به صورت java. می‌باشد. پس تا اینجا ما یک Package و یک کلاس و یک متد داریم. حال می‌خواهیم یک پکیج دیگر ایجاد و از کلاس‌ها و متدهای آن در داخل این پکیج استفاده کنیم. برای این کار بر روی گزینه Source Package مانند شکل زیر راست کلیک کرده و یک پکیج جدید به نام MySecondPackage ایجاد می‌کنیم :

Package-in-java-05
Package-in-java-06

بعد از ایجاد این Package یک کلاس به نام MyClass به آن، به روش زیر اضافه می‌کنیم :
Package-in-java-07

Package-in-java-08
بعد از اضافه کردن کلاس یک متد به نام ()sayHello به شکل زیر به کلاس اضافه نمایید :
Package-in-java-09
حال فرض کنید که می‌خواهید از این کلاس و متد در کلاس MyFirstProgram استفاده کنید. برای این کار بر روی کلاس مذکور دو بار کلیک کرده و سپس مانند شکل زیر و با استفاده از کلمه import کلاس را در Package اولی وارد نمایید و سپس با ایجاد یک شیء از کلاس متد مربوط به آن را فراخوانی کنید :
Package-in-java-10

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

import Package.Class;

و اگر بخواهیم تمامی کلاس‌های یک Package را وارد Package دیگر کنیم به صورت زیر عمل می‌نماییم :

import Package.*;

اگر از کلمه import استفاده نکنیم مجبوریم که در ابتدای نام هر کلاس Package مربوط به آن را به صورت زیر ذکر کنیم :

MySecondPackage.MyClass MC = new MySecondPackage.MyClass();

شما محدود به دسته بندی کدهای کلاستان در داخل یک Package نیستید. می‌توانید یک Package تو در تو ایجاد کنید و کدهایتان را در درون آن بنویسید. برای دسترسی به کلاس Sample ، مجبورید اول نام تمام Package هایی را که کلاس Sample در آنها قرار دارد بنویسید.

Package1.Package2.Sample

یا می‌توان از کلمه کلیدی import استفاده کرد :

import Package1.Package2.Sample