مشخصات مقاله
-
0
-
0.0
-
4243
-
0
-
0
آموزش Java-آموزش Packages در جاوا
پوشه ها (packages) در جاوا برای جلوگیری از مشکلات نامگذاری (naming conflicts)، کنترل دستیابی، ساخت searchin/location و استفاده از گروه ها، اینترفیس ها، شمارش ها، حاشیه نویسی ها و غیره استفاده می شود.
یک پوشه می تواند به عنوان یک گروه بندی از انواع مرتبط ( گروه ها، اینترفیس ها، شمارش ها و حاشیه نویسی ها)محافظت access و مدیریت فضانام ارائه دهد.
برخی پوشه های موجود در جاوا عبارتند از:
· java.lang - گروه های اصلی را به یکدیگر متصل می کند.
· - گروه هایی برای عملکردهای ورودی، خروجی در این پوشه به یکدیگر متصل هستند.
برنامه نویسان برای اتصال گروه ها / اینترفیس ها و غیره می توانند پوشه های خود را تعریف کنند. گروه بندی کلاس های مرتبط که توسط شما اجرا می شوند، تمرین خوبی است، طوریکه یک برنامه نویس می تواند به سادگی می تواند تعیین کند که کلاس ها، اینترفیس ها، شمارش ها و حاشیه نویس ها با یکدیگر مرتبط هستند.
از آنجایی که یک پوشه یک namespace جدید ایجاد می کند، هیچگونه مشکل نام گذاری با نام های دیگر پوشه ها وجود ندارد. با استفاده از پوشه ها، ارائه ی کنترل دسترسی و همچنین موقعیت یابی گروه های مرتبط آسانتر می شود.
ایجاد یک پوشه (package):
در هنگام ایجاد یک پوشه، باید برای پوشه یک نام انتخاب کنید و یک عبارت package با آن نام در بالای هر فایل منبع قرار دهید که حاوی گروه ها، اینترفیس ها، شمارش ها و انواع حاشیه نویسی ها می شود که تمایل دارید در پوشه ی خود وارد کنید.
عبارت package در فایل منبع باید اولین خط باشد. تنها یک عبارت package در هر فایل منبع می تواند وجود داشته باشد و برای تمام انواع در فایل استفاده می شود.
اگر یک عبارت package در گروه ها، اینترفیس ها، شمارش ها و حاشیه نویسی ها استفاده نشود، انواع در یک پوشه ی بدون نام قرار خواهند گرفت.
مثال:
اجازه بدهید مثالی را مورد بررسی قرار دهیم که پوشه ای به نام animals ایجاد می کند. برای جلوگیری از به وجود آمدن هر گونه مشکلی با نام های گروه ها و اینترفیس ها، استفاده از نام پوشه ها با حروف کوچک متداول می باشد.
یک اینترفیس در پوشه ی animals قرار دهید:
/* File name : Animal.java */
package animals;
interface Animal {
public void eat();
public void travel();
}
اکنون همان پوشه ی animals را اجرا کنید:
package animals;
/* File name : MammalInt.java */
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();
}
}
حالا می توانید این دو فایل را کامپایل کرده و آنها را در یک مسیر فرعی به نام animals قرار دهید و مانند زیر سعی کنید آن را اجرا کنید:
$ mkdir animals
$ cp Animal.class MammalInt.class animals
$ java animals/MammalInt
Mammal eats
Mammal travels
لغت کلیدی import:
اگر یک گروه می خواهد از گروه دیگری در همان پوشه استفاده کند، نام پوشه لازم نیست استفاده شود. گروه ها در همان پوشه یکدیگر را بدون هیچ ترکیب خاصی پیدا می کنند.
مثال:
در اینجا گروهی به نام Boss به پوشه ی payroll اضافه شده که تقریبا حاوی Employee می باشد. Boss بدون استفاده از پیشوند payroll می تواند به گروه Employee اشاره کند، که به وسیله ی گروه Boss زیر توضیح داده می شود:
package payroll;
public class Boss
{
public void payEmployee(Employee e)
{
e.mailCheck();
}
}
چه اتفاقی می افتد اگر Boss در پوشه ی payroll نباشد؟ گروه Boss باید از یکی از تکنیک های زیر برای اشاره به یک گروه در یک پوشه ی متفاوت استفاده کند.
· نام کامل گروه می تواند استفاده شود، برایمثال:
payroll.Employee
· پوشه با استفاده از لغت کلیدی import و علامت (*) می تواند وارد شود. برای مثال:
import payroll.*;
· خود گروه نیز می تواند با استفاده از لغت کلیدی import وارد شود. برای مثال:
import payroll.Employee;
نکته: یک گروه می تواند حاوی هر تعداد عبارت import باشد. عبارات مهم باید پس ازعبارت package و قبل از اعلام گروه ظاهر شوند.
ساختار دایرکتوری یک پوشه:
وقتی یک گروه در یک پوشه قرار می گیرد، دو نتیجه ی مهم به دنبال دارد:
· همانطور که در بخش قبل صحبت کردیم، نام پوشه بخشی از نام گروه می شود.
· نام پوشه باید با ساختار دایرکتوری، که byte code متناظر در آن می باشد، هماهنگ باشد.
در اینجا روشساده ی مدیریت فایل های خود را در جاوا مشاهده می کنید:
Source code را برای یک گروه، اینترفیس، annotation یا enumeration در یک فایل تکست قرار دهید که نام آن نام ساده ی نوع می باشد و گستره ی آن نیز جاوا است. برای مثال:
// File Name : Car.java
package vehicle;
public class Car {
// Class implementation.
}
اکنون فایل منبع را در مسیری قرار دهید که نام آن نام پوشه ای را منعکس می کند که متعلق به گروه میباشد:
....\vehicle\Car.java
اکنون نام مناسب گروه و نام مسیر مانند زیر می باشد:
· نام گروه -> vehicle.Car
· نام مسیر -> vehicle\Car.java (در ویندوز)
به طور کل یک شرکت از نام معکوس اینترنتی خود برای نام های پوشه ی خود استفاده می کند. مثال: نام اینترنتی یک شرکت apple.com می باشد، پس نام تمام پوشه های آن با com.apple شروع خواهد شد. هر مولفه ی مربوط به نام پوشه با یک دایرکتوری فرعی مطابقت دارد.
مثال: شرکت دارای پوشه ی com.apple.computers می باشد که حاوی یک فایل منبع Dell.java است، این شرکت دارای مجموعه ای از دایرکتوری های فرعی مانند زیر می باشد:
....\com\apple\computers\Dell.java
در زمان انجام کامپایل، کامپایلر یک فایل خروجی متفاوت برای هر گروه، اینترفیس و enumeration تعریف شده در آن، ایجاد می کند. نام اصلی فایل خروجی نام نوع و گستره ی آن .class می باشد.
برای مثال:
// File Name: Dell.java
package com.apple.computers;
public class Dell{
}
class Ups{
}
اکنون با استفاده از گزینه ی –d ، این فایل را مانند زیر کامپایل کنید:
$javac -d . Dell.java
این برنامه فایل های کامپایل شده را مانند زیر قرار می دهد:
.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class
شما می توانید همه ی گروه ها و اینترفیس های تعریف شده در \com\apple\computers\ را مانند زیر تعریف کنید:
import com.apple.computers.*;
مانند فایل های منبع java، فایل های کامپایل شده ی .class باید در مجموعه ای از دارکتوری ها باشند که نام پوشه را منعکس می کنند. به هرحال مسیر به سمت فایل های .class لازم نیست مشابه مسیر به سمت فایل های منبع java باشد. شما می توانید دایرکتوری های گروه و منبع خود را به طور مجزا تنظیم کنید، مانند زیر:
به این وسیله می توانید بدون آشکار کردن منابع خود به گروه ها مسیری به دیگر برنامه نویسان دیگر بدهید. همچنین لازم است فایل های منبع و گروه را به این روش سازماندهی کنید، طوریکه کامپایلر و Java Virtual Machine (JVM) میتوانند انواع مورد استفاده برنامه ی شما را پیدا کنند.
مسیر کامل برای دایرکتوری گروه ها،
اگر مسیر گروه را
مسیر یک گروه ممکن است حاوی چندید مسیر باشد. مسیرهای متعدد باید به وسیله ی نقطه ویرگول و یا ویرگول از یکدیگر مجزا شوند. به طور پیش فرض کامپایلر و JVM مسیر جاری را جستجو می کنند و فایل JAR حاوی گروه های Java platform می باشد، طوریکه این گروه ها به طور خودکار در مسیر گروه هستند.
تنظیم متغیر CLASSPATH:
برای نمایش متغیر جاری CLASSPATH ، ازفرمان های زیر در ویندوز و UNIX استفاده کنید:
· در ویندوز: C:\> set CLASSPATH
· در UNIX: % echo $CLASSPATH
برای حذف محتوای فعلی از متغیر CLASSPATH می توانید از موارد زیر استفاده کنید:
· در ویندوز: C:\> set CLASSPATH=
· در UNIX: % unset CLASSPATH; export CLASSPATH
برای تنظیم متغیر CLASSPATH نیز:
· در ویندوز: set CLASSPATH=C:\users\jack\java\classes
· در UNIX: % CLASSPATH=/home/jack/java/classes; export CLASSPATH