Paketlər Java-da mühüm rola malik bir strukturdur.
Hər şeydən əvvəl, bir fayl içində birdən çox sinfin yazılmasına məhdudiyyət qoyulmasa da, hər sinif üçün ayrı bir fayl yaradılması məsləhət görülür. Bunun ən birinci səbəbi bir faylda yalnız bir sinfin "public" ola bilməsidir. Bu da "main" metodun olduğu sinif olmalıdır. Fayl içindəki digər siniflər heç bir "access modifier" olmadan yazılmalıdır ki, bu da onlara müraciət imkanını məhdudlaşdırır. Məsələn, Test.java adlı bir faylda bir neçə sinfin yazılması:
public class Test
{
public static void main(String[] arg)
{
...
}
}
class Test1
{
...
}
class Test2
{
...
}
Əgər Test1 və Test2 siniflərinə istənilən yerdən müraciət etmək istəyiriksə, uyğun adlarda ayrı-ayrı fayllarda(Test1.java, Test2.java) yazmaq lazımdır. Bu halda onları "public" etmək mümkündür.
Bundan sonra paket anlayışı ortaya çıxır. Bir layihəyə aid siniflərin bir qovluqda toplanması daha kompakt bir struktur yaradır. Deyək ki, komputerin müəyyən bir yerində "java" qovluğu yaradıb ona aid layihə fayllarını da ayrı-ayrı qovluqlar altında (project1, project2, project3 və s.) qruplaşdırırıq. Əvvəlcə onu qeyd edim ki, paketləmənin işə yaraması üçün həmin "java" qovluğunun tam yolu Environment Variable kimi CLASSPATH altında sistemə tanıdılmalıdır (Bu da başqa bir mövzudur).
İndi yazılacaq sinfi paketə aid etmək lazımdır. Bu, kodun lap başında qeyd olunur. Məsələn, java>project1 paketinə adi ediləcək sinif belə olacaq.
package java.project1;
public class Test
{
.....
}
Burada altqovluğa keçid nöqtə-"." işarəsilə bildirilir. Java API-sinin də özünə aid hazır paketləri və uyğun paketlərdə sinifləri var. Əgər bu paketlərdən birini daxil etmək istəsək "import" sözündən istifadə olunur və əgər varsa, "package" ifadəsindən sonra yazılır:
package java.project1;
import java.util.*;
import java.project1.*;
Ulduz işarəsi onu bildirir ki, bu paket içərisindəki bütün siniflərə müraciət oluna bilər. Lakin altpaketlərə yox. Məsələn,
java.util.concurrent
paketindəki siniflər lazım olacaqsa, onu da ayrıca qeyd etmək lazımdır.import java.util.*;
import java.util.concurrent.*;
Konkret bir sinfi də daxil etmək olar.
import java.util.Arrays;
import java.project1.Test1;
Paket strukturu istənilən qovluqda yaradılmış siniflərin bir birini görməsinə şərait yaradır.
Əgər yazılan sinif üçün heç bir paket bildirimi qeyd olunmayıbsa, o sinif "default package" altında qeyd olunur. Bu isə eyni qovluq altında olan sinifləri göstərir. Yəni heç bir paket bildirimi qeyd olunmayan siniflər ancaq eyni bir qovluq altında bir-birini görə bilər. Bunun üçünsə "import" ifadəsinin işlədilməsinə ehtiyac yoxdur.
No comments:
Post a Comment