کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Java – مفهوم Package در Java

آموزش Java – مفهوم Package در جاوا

package یک گروه از کلاس هایی با کاربرد مشابه، interface ها و sub-package ها است. به عبارت دیگر به وسیله ی package می توان کلاس ها را رده بندی و سازمان دهی کرد. در جاوا پکیج به دو دسته تقسیم می شود، پکیج درون ساخته و پکیج اختصاصی که توسط برنامه نویس تعریف می شود. تعداد زیادی پکیج درون ساخته (built-in) و پیش فرض در جاوا وجود دارد که در زیر به آن ها اشاره می کنیم: java, lang, awt, javax, swing, net, io, util, sql.

در مبحث حاضر به شرح نحوه ی ایجاد و استفاده از پکیج های اختصاصی (تعریف شده توسط توسعه دهنده) خواهیم پرداخت.

مزایای استفاده از پکیج در جاوا

  1. به وسیله ی پکیج ها می توان کلاس ها و interface ها را رده بندی کرده که نگهداشت و تعمیر آن ها را در آینده آسان می سازد.
  2. پکیج در جاوا سطح دسترسی تعیین کرده و امنیت کلاس های و interface ها را تضمین می کند.
  3. به وسیله پکیج می توان به راحتی از تداخل اسمی جلوگیری کرد.
آموزش Java

مثال کاربردی از پکیج در جاوا

برای تعریف پکیج و سازمان دهی کلاس ها و interface ها کافی است از کلیدواژه ی package استفاده نمایید.

//save as Simple.java  
package mypack;  
public class Simple{  
 public static void main(String args[]){  
    System.out.println("Welcome to package");  
   }  
}  

نحوه ی کامپایل پکیج در جاوا

چنانچه از محیط برنامه نویسی خاصی (IDE) استفاده نمی کنید، در آن صورت لازم است برای کامپایل پکیج از دستور زیر استفاده نمایید:

javac -d directory javafilename  

مثال:

javac -d . Simple.java  

پارامتر -d مکانی (پوشه) که قرار است class file تولید شده در آن جایگذاری شود را مشخص می کند. می توانید اسم پوشه ی مقصد را خود انتخاب نمایید. برای مثال در خصوص سیستم عامل Linux، پوشه ی /home و در بستر ویندوز d:/abc. چنانچه مایلید پکیج مورد نظر را در همان پوشه نگه دارید، در آن صورت کافی است عملگر "." استفاده کنید.

نحوه ی اجرا و خروجی گرفتن از برنامه ی پکیج بندی شده (package program)

جهت اجرای کلاسی که داخل یک پکیج معین تعریف شده است، بایستی از اسم کامل (fully qualified name) استفاده کنید. برای مثال جهت اجرای کلاس java.simple لازم است آن را به این صورت نگارش کنید: mypack.Simple.

جهت کامپایل دستور رو به رو را تایپ کنید: javac -d . Simple.java.

جهت اجرا و خروجی گرفتن: java mypack.Simple.

خروجی:

Welcome to package

پارامتر -d مسیر قرارگیری (پوشه ی مقصد) class file را مشخص می کند. عملگر نقطه نشانگر پوشه ی جاری می باشد. بنابراین اگر می خواهید فایل ها در پوشه ی جاری قرار گیرد، بایستی از عملگر نام برده استفاده نمایید.

نحوه ی دسترسی به پکیج مورد نظر از پکیج دیگر

در کل سه روش برای دسترسی به پکیج و فراخوانی آن از بیرون وجود دارد که در زیر آن ها را شرح می دهیم:

  1. دستور import + اسم پکیج + عملگر . + *;
  2. دستور import + package.classname
  3. اسم کامل پکیج (fully qualified name)

1) دستور import + اسم پکیج + عملگر . + *; (packagename.*)

در صورت استفاده از دستور package.* به استثنای sub-package ها، تمامی کلاس ها و interface های پکیج مورد نظر دردسترس شما قرار می گیرند.

کلیدواژه ی import برای فراخوانی کلاس ها و interface از پکیج دیگر در پکیج مورد نظر (جاری) بکار می رود.

مثال کاربردی از روش اول دسترسی به پکیج (import + اسم پکیج + عملگر . + *;)

//save by A.java  
package pack;  
public class A{  
  public void msg(){System.out.println("Hello");}  
}  
//save by B.java  
package mypack;  
import pack.*;  
class B{  
  public static void main(String args[]){  
   A obj = new A();  
   obj.msg();  
  }  
}  

خروجی:

2) استفاده از دستور import + package.classname

در صورت استفاده از دستور packagename.classname، تنها کلاس اعلان شده از این پکیج قابل دسترسی خواهد بود.

مثال کاربردی از import + اسم کلاس.package

//save by A.java  
package pack;  
public class A{  
  public void msg(){System.out.println("Hello");}  
}  
//save by B.java  
package mypack;  
import pack.A;  
class B{  
  public static void main(String args[]){  
   A obj = new A();  
   obj.msg();  
  }  
}  

خروجی:

Hello

3) استفاده از روش سوم و فراخوانی پکیج با استفاده از اسم کامل (fully qualified name)

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

از این روش معمولا هنگامی استفاده می شود که دو پکیج حامل کلاسی هم نام باشند. برای مثال دو پکیج java.util و java.sql دارای کلاس هم اسم Date هستند.

مثال کاربردی از فراخوانی پکیج با استفاده از اسم کامل (fully qualified name)

//save by A.java  
package pack;  
public class A{  
  public void msg(){System.out.println("Hello");}  
}  
//save by B.java  
package mypack;  
class B{  
  public static void main(String args[]){  
   pack.A obj = new pack.A();//using fully qualified name  
   obj.msg();  
  }  
}  

خروجی:

Hello
نکته:

زمانی که پکیجی را با استفاده از دستور import فراخوانی می کنید، subpackage ها فراخوانی نمی شوند.

اگر شما یک پکیج را با استفاده از دستور import فراخوانی کنید، تمامی کلاس ها و interface های آن پکیج به استثنای کلاس ها و interface های subpackage ها در دسترس فایل جاری قرار می گیرند. بنابراین، لازم است که subpackage را نیز جداگانه فراخوانی کنید.

توجه:

توجه داشته باشید که توالی اجرای برنامه به صورت زیر می باشد:

آموزش Java

Subpackage در جاوا

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

به عنوان مثال، شرکت Sun Microsystem یک پکیج به نام java دارد که کلاس های متعددی نظیر System، String، Reader، Writer ، Socket و غیره ... را شامل می شود. هر یک از این کلاس ها نشانگر گروه خاصی به همراه قابلیت های مشترک می باشد. برای مثال کلاس های Reader و Writer برای پردازش و مدیریت عملیات ورودی/خروجی (Input/Output) بکار می رود، Socket و کلاس های ServerSocket برای برنامه نویسی تحت شبکه بکار می روند. با توجه به توضیحات فوق، شرکت Sun پکیج java را به subpackage هایی نظیر lang، net، io و غیره ... گروه بندی کرده، کلاس های مربوط به عملیات ورودی/خروجی را در پکیج io و کلاس های مربوط به Server و ServerSocket را در پکیج های net جایگذاری کرده است.

استاندارد تعریف پکیج در زبان جاوا به شرح زیر می باشد:

  • domain.company.package

برای مثال می توان به com.javapoint.bean یا org.sssit.dao اشاره کرد.

مثالی کاربردی از subpackage

package com.javatpoint.core;  
class Simple{  
  public static void main(String args[]){  
   System.out.println("Hello subpackage");  
  }  
}  
  • به منظور کامپایل : javac -d . Simple.java
  • به منظور اجرا : java com.javatpoint.core.Simple

خروجی:

Hello subpackage

نحوه ی ارسال class file به پوشه یا درایو دیگر

جهت ارسال و جایگذاری class file از فایل اصلی A.java در پوشه ی class از درایو c به صورت زیر اقدام می کنیم:

آموزش Java
//save as Simple.java  
package mypack;  
public class Simple{  
 public static void main(String args[]){  
    System.out.println("Welcome to package");  
   }  
}

به منظور کامپایل کد: e:\sources> javac -d c:\classes Simple.java

به منظور اجرای کد: جهت اجرای کد از پوشه ی e:\source، شما بایستی مقدار متغیر classpath را برابر اسم پوشه ای که class file در آن جای گرفته، قرار دهید.

e:\sources> set classpath=c:\classes;.;
e:\sources> java mypack.Simple

استفاده از پارامتر –classpath جاوا جهت اجرای برنامه مورد نظر

پارامتر -classpath را می توان همراه دستور javac و ابزار java بکار برد.

به منظور اجرای برنامه از پوشه ی e:\source، می توانید از پارامتر -classpath جاوا استفاده کنید که محل قرارگیری class file را نشان می دهد. مثال:

e:\sources> java -classpath c:\classes mypack.Simple

خروجی:

Welcome to package

روش های بارگذاری class file ها یا فایل های jar

دو روش برای بارگذاری class file ها در حافظه وجود دارد: 1. Temporary 2. permanent

  1. روش موقتی:
    • با مقداردهی متغیر classpath در پنجره ی فرمان (cmd)
    • با ارسال پارامتر -classpath
  2. روش دائم:
    • مقداردهی متغیر classpath در بخش مربوط به environment variables
    • با ایجاد فایل jar که تمامی class file ها را دربرداشته و جایگذاری فایل jar در پوشه ی jre/lib/ext.
نکته:

در هر فایل اصلی (source file) جاوا تنها یک کلاس با سطح دسترسی public می تواند وجود داشته باشد و اسم فایل بایستی بر روی اسم کلاس public تنظیم شود.

//save as C.java otherwise Compilte Time Error    
class A{}  
class B{}  
public class C{}  

نحوه ی جایگذاری دو کلاس public در یک پکیج

اگر می خواهید دو کلاس public را داخل یک پکیج قرار دهید، در آن صورت بایستی دو source file که هر یک دربردارنده ی یک کلاس public (که با نام کلاس public ذخیره شده) هستند، داشته باشید. سپس یک اسم واحد به عنوان نام پکیج که میزبان هر دو کلاس است، انتخاب نمایید. مثال:

//save as A.java  
package javatpoint;  
public class A{}  
//save as B.java  
package javatpoint;  
public class B{}  
1396/07/07 10447 3280
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...