ActionScript 3.0'daki paketler, ad alanları ile uygulanır ancak bunlarla eşanlamlı değildir. Bir paket bildirdiğinizde, derleme zamanında bilinmesi garantilenen özel bir ad alanı türünü açıkça oluşturursunuz. Ad alanları açıkça oluşturulduğunda derleme zamanında mutlaka bilinmek zorunda değildir.
Aşağıdaki örnek, tek bir sınıf içeren basit bir paket oluşturmak için package direktifini kullanır:
package samples
{
public class SampleCode
{
public var sampleGreeting:String;
public function sampleFunction()
{
trace(sampleGreeting + " from sampleFunction()");
}
}
}
Bu örnekteki sınıfın adı SampleCode'dur. Sınıf, samples paketinin içinde olduğundan, derleyici otomatik olarak derleme zamanında sınıf adını samples.SampleCode tam nitelendirilmiş adıyla niteler. Derleyici de, sampleGreeting ve sampleFunction() öğeleri sırayla samples.SampleCode.sampleGreeting ve samples.SampleCode.sampleFunction() olacak şekilde özelliklerin veya yöntemlerin adlarını niteler.
Geliştiricilerin çoğu, özellikle de Java programlama arka planına sahip olanlar, bir paketin üst düzeyine yalnızca sınıfları yerleştirmeyi seçebilir. Ancak ActionScript 3.0, bir paketin üst düzeyinde yalnızca sınıfları değil, değişkenleri, işlevleri ve deyimleri de destekler. Bu özelliğin gelişmiş bir kullanımı, bir paketin üst düzeyinde bir ad alanını, paketteki tüm sınıflar için kullanılabilir olacak şekilde tanımlamaktır. Ancak bir paketin üst düzeyinde public ve internal olmak üzere iki erişim belirticisine de izin verildiğini unutmayın. Yuvalanmış sınıfları özel olarak bildirmenize olanak sağlayan Java'dan farklı olarak ActionScript 3.0, yuvalanmış veya özel sınıfları desteklemez.
Ancak ActionScript 3.0 paketleri, diğer birçok yönden Java programlama dilindeki paketlere benzer. Önceki örnekte görebildiğiniz gibi, tam nitelendirilmiş paket başvuruları, tıpkı Java'daki gibi nokta operatörü (.) kullanılarak ifade edilir. Kodunuzu diğer programcıların da kullanması için sezgisel bir hiyerarşik yapıda organize etmek üzere paketleri kullanabilirsiniz. Bu, kod paylaşımını kolaylaştırır ve böylece kendi paketinizi oluşturup başkalarıyla paylaşmanıza ve başkaları tarafından oluşturulan paketleri kodunuzda kullanmanıza olanak sağlar.
Ayrıca, paketlerin kullanılması, kullandığınız tanımlayıcı adlarının benzersiz olmasının ve diğer tanımlayıcı adlarıyla çakışmamasının sağlanmasına yardımcı olur. Aslında bazılarına göre, paketlerin birincil avantajı budur. Örneğin, kodlarını birbiriyle paylaşmak isteyen iki programcı da, SampleCode adında bir sınıf oluşturabilir. Paketler olmadan bu bir ad çakışması oluşturur ve bunun tek çözümü sınıflardan birinin yeniden adlandırılmasıdır. Ancak paketler sayesinde, paketlerdeki sınıflardan biri veya tercihen ikisi benzersiz adlarla yerleştirilerek ad çakışması kolayca önlenir.
Yuvalanmış paketler oluşturmak için paket adınıza gömülü noktalar da dahil edebilirsiniz. Bu, paketlerin hiyerarşik organizasyonunu oluşturmanıza olanak sağlar. Buna iyi bir örnek, ActionScript 3.0 tarafından sağlanan flash.xml paketidir. flash.xml paketi, flash paketinin içinde yuvalanmıştır.
flash.xml paketi, önceki ActionScript sürümlerinde kullanılan eski XML ayrıştırıcısını içerir. Bunun şimdi flash.xml paketinde kalmasının nedenlerinden biri, eski XML sınıfının adının, ActionScript 3.0'da kullanılabilir olan ECMAScript için XML (E4X) belirtimi işlevselliğini uygulayan yeni XML sınıfının adıyla çakışmasıdır.
Eski XML sınıfının bir pakete taşınması iyi bir birinci adım olsa da, eski XML sınıflarının kullanıcılarının çoğu flash.xml paketini içe aktarır ve bu da eski XML sınıfının tam nitelendirilmiş adını (flash.xml.XML) kullanmayı her zaman hatırlamazsanız aynı ad çakışmasını oluşturur. Bu durumu önlemek için şimdi aşağıdaki örnekte gösterildiği gibi, eski XML sınıfı XMLDocument olarak adlandırılmıştır:
package flash.xml
{
class XMLDocument {}
class XMLNode {}
class XMLSocket {}
}
ActionScript 3.0'ın çoğu, flash paketi altında organize edilir. Örneğin, flash.display paketi, görüntüleme listesi API'sini içerirken, flash.events paketi de yeni olay modelini içerir.
0 yorum:
Yorum Gönder