با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. پکیج در جاوا به منظور جلوگیری از نامگذاری conflict، کنترل دسترسی، جستجو / قرار دادن و استفاده از کلاس ها، اینترفیس ها، شمارش و حاشیه نویسی، و… استفاده می شود. یک پکیج را می توان به عنوان یک گروه بندی از انواع مرتبط (کلاس ها، اینترفیس ها، شمارش و حاشیه نویسی) که دسترسی محافظت شده و مدیریت نامحدود را تعریف می کنند تعریف کرد. برای آشنایی با مفهوم Package در Java در ادامه ی مباحث این بخش با ما همراه باشید.
در ادامه ی مباحث این بخش شما را با ساختار و چگونگی ایجاد Package در جاوا آشنا خواهیم کرد.
برخی از پکیج های موجود در جاوا عبارتند از:
برنامه نویسان می توانند پکیج های خود را به مجموعه دسته های کلاس / اینترفیس و… تعریف کنند.
این ویژگی برای دسته بندی کلاس های مربوطه ای که توسط شما اجرا می شود،مفید است.
با این ویژگی یک برنامه نویس به راحتی می تواند تعیین کند که کلاس ها، اینترفیس ها، شمارگان و حاشیه نویسی مرتبط هستند.
هنگام ایجاد یک پکیج، شما باید یک نام را برای پکیج انتخاب کرده و کدهای پکیج را در بالای نام فایل منبع لحاظ کنید.
دستور پکیج باید اولین خط در فایل منبع باشد. در هر پرونده منبع تنها یک دستور پکیج وجود دارد و همان در همه انواع پرونده کاربرد دارد.
اگر دستور پکیج استفاده نشود، کلاس، اینترفیس ها، لیست ها و انواع حاشیه نویسی در پکیج پیش فرض فعلی قرار می گیرد.
برای کامپایل برنامه ها در جاوا به همراه دستور پکیج شما باید از گزینه ی -d بصورت زیر استفاده کنید:
1 | javac -d Destination_folder file_name.java |
سپس یک فولدر با نام Package داده شده در مقصد مشخص شده ایجاد می شود و فایل های کلاس کامپایل شده در آن فولدر قرار می گیرد.
مثال – برای نمونه به کدی اشاره می کنیم که یک پکیج به نام animals را ایجاد می کند:
نکته : بهتر است در تعریف نام پکیج از حروف کوچک استفاده شود تا با کلاس ها و اینترفیس ها تداخلی ایجاد نشود.
1 2 3 4 5 6 7 | /* File name : Animal.java */ package animals; interface Animal { public void eat(); public void travel(); } |
سپس اینترفیس پکیج animals را ایجاد می کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | package animals; public class MammalInt implements Animal { public void eat() { System.out.println("Mammal eats"); } public void travel() { System.out.println("Mammal travels"); } public int noOfLegs() { return 0; } public static void main(String args[]) { MammalInt m = new MammalInt(); m.eat(); m.travel(); } } |
اکنون فایل جاوای فوق را به صورت زیر کامپایل نمائید:
1 2 | $ javac -d . Animal.java $ javac -d . MammalInt.java |
سپس یک پکیج/ فولدر با نام animals در دایرکتوری فعلی ایجاد می شود.
فایل های کلاس نیز در پکیج ایجاد شده قرار می گیرد همانطور که در زیر نشان داده شده است:
شما می توانید فایل کلاس را در داخل پکیج اجرا کنید و نتیجه را همانطور که در زیر نشان داده شده مشاهده کنید:
1 2 | Mammal eats Mammal travels |
اگر یک کلاس بخواهد از یک کلاس دیگر در همان پکیج استفاده کند، نام پکیج نباید مورد استفاده قرار گیرد.
کلاس ها در یک پکیج یکنواخت بدون هماهنگی خاص پیدا می شود.
مثال – برای نمونه یک کلاس با نام Boss که شامل کلاس Employee می باشد را به بسته ی payroll اضافه می کنیم.
سپس کلاس Boss می تواند بدون استفاده از کلاس Employee به پکیج payroll اشاره کند:
1 2 3 4 5 6 | package payroll; public class Boss { public void payEmployee(Employee e) { e.mailCheck(); } } |
چه اتفاقی می افتد اگر کلاس Employee در پکیج payroll قرار نباشد؟
کلاس Boss باید از یکی از تکنیک های زیر برای اشاره به یک کلاس در یک بسته متفاوت استفاده کند.
نام کلاس می تواند مورد استفاده قرار گیرد. مثلا:
1 | payroll.Employee |
پکیج را می توان با استفاده از کلمه ی کلیدی import و (*) wild card وارد کرد. به عنوان مثال:
1 | import payroll.*; |
کلاس خود را می تواند با استفاده از کلمه ی کلیدی import وارد کند، به عنوان مثال :
1 | import payroll.Employee; |
نکته : یک فایل کلاس می تواند هر تعداد دستور import را داشته باشد. دستور import باید پس از دستور Package و قبل از اعلان کلاس ظاهر شود.
دو کلاس اصلی در یک پکیج قرار می گیرند.
این یک روش ساده برای مدیریت فایل های شما در جاوا است:
کد منبع را برای نوع کلاس، اینترفیس، شمارش یا حاشیه نویسی در یک فایل متنی که نام آن نام ساده ی نوع است و پسوند آن .java است قرار دهید.
مثال:
1 2 3 4 5 | package vehicle; public class Car { } |
سپس، فایل منبع را در یک فولدر قرار دهید که نام آن نشان دهنده نام پکیجی است که متعلق به آن کلاس است.
1 | ....\vehicle\Car.java |
اکنون نام کلاس واجد شرایط و آدرس آن، به شرح زیر است:
به طور کلی، یک شرکت از نام دامنه اینترنتی معکوس خود برای نام پکیج های خود استفاده می کند.
مثال – یک نام دامنه اینترنتی شرکت apple.com است، سپس تمام پکیج های آن با com.apple آغاز می شود. هر جزء نام پکیج به یک زیر شاخه بستگی دارد.
به عنوان مثال – این کمپانی یک پکیج com.apple.computers دارد که شامل یک فایل منبع Dell.java می باشد.
فایل Dell.java در زیر شاخه ی زیر قرار دارد:
1 | ....\com\apple\computers\Dell.java |
در زمان کامپایل، کامپایلر یک فایل خروجی متفاوت برای هر کلاس، رابط و شمارش تعریف شده در آن ایجاد می کند.
نام پایه فایل خروجی نام نوع آن است و پسوند آن class. است.
مثال:
1 2 3 4 5 6 7 | package com.apple.computers; public class Dell { } class Ups { } |
اکنون فایل فوق را با استفاده از گزینه ی -d بصورت زیر کامپایل کنید:
1 | $javac -d . Dell.java |
فایل فوق بصورت زیر کامپایل می شود:
1 2 | .\com\apple\computers\Dell.class .\com\apple\computers\Ups.class |
شما می توانید تمام کلاس ها یا اینترفیس های تعریف شده در \ com \ apple \ computers را به صورت زیر وارد کنید:
1 | import com.apple.computers.*; |
مانند فایلهای java. فایل های class. دسته بندی شده باید در یک سری از دایرکتوری ها باشد که نام پکیج را نشان می دهد.
مسیر فایل های class. نباید همان مسیر فایل های .java باشد. شما می توانید منبع و کلاس های خود را به صورت جداگانه ترتیب دهید:
1 2 3 | <path-one>\sources\com\apple\computers\Dell.java <path-two>\classes\com\apple\computers\Dell.class |
با این کار، امکان دسترسی به دایرکتوری کلاسها به برنامه نویسان دیگر بدون آشکارسازی منابع شما امکان پذیر است.
شما همچنین بایستی فایل های منبع و کلاس را به این شیوه مدیریت کنید تا کامپایلر و ماشین مجازی جاوا (JVM) بتوانند تمام انواع برنامه های مورد استفاده شما را پیدا کنند.
مسیر کامل دایرکتوری classes، <path-two> \ classes، مسیر کلاس نامیده می شود و با متغیر سیستمی CLASSPATH تنظیم می شود.
کامپایلر و JVM مسیر را به فایل های class. خود با اضافه کردن نام پکیج به مسیر کلاس ایجاد می کنند.
مسیر path-two>\classes> مسیر کلاس است و نام پکیج com.apple.computers است.
سپس کامپایلر و JVM برای فایلهای class. در مسیر <path-two> \ classes \ com \ apple \ computers جستجو خواهند کرد.
مسیرهای چندگانه برای کلاس ها باید با سمی کولون (;) جدا شود.
به طور پیش فرض کامپایلر و JVM دایرکتوری فعلی و فایل JAR حاوی کلاس های پلتفرم جاوا را جستجو می کند.
برای نمایش متغیر CLASSPATH فعلی از دستورات زیر در ویندوز و یونیکس استفاده کنید:
برای حذف محتویات فعلی متغیر CLASSPATH از مسیر زیر استفاده کنید:
برای تنظیم متغیر CLASSPATH نیز از مسیرهای زیر استفاده کنید:
استفاده از Package در جاوا گزینه ی مناسبی برای دسته بندی و مرتب سازی برنامه های ایجاد شده از جمله قسمت هایی نظیر کلاس ها ، اینترفیس ها و…است. با ارائه ی مباحث آشنایی با پکیج در جاوا آموزش های این فصل را به پایان رسانده و در فصل بعد به بررسی مباحث پیشرفته در جاوا می پردازیم.