Dile genel bakış

ActionScript 3.0 dilinin temelini nesneler oluşturur, bunlar temel bina bloklarıdır. Bildirdiğiniz her değişken, yazdığınız her işlev ve oluşturduğunuz her sınıf örneği bir nesnedir. ActionScript 3.0 programını, görevleri gerçekleştiren, olayları yanıtlayan ve birbiriyle iletişim kuran bir nesne grubu olarak düşünebilirsiniz.

Java veya C++ uygulamasında nesne tabanlı programlamayı (OOP) bilen programcılar, nesneleri, iki tür üye içeren modüller olarak düşünebilir: üye değişkenlerde veya özelliklerde saklanan veriler ve yöntemler üzerinden erişilebilir davranış. ActionScript 3.0, nesneleri benzer ancak biraz daha farklı bir şekilde tanımlar. ActionScript 3.0'da nesneler yalnızca özellikler koleksiyonudur. Bu özellikler, yalnızca verileri değil aynı zamanda işlevleri veya diğer nesneleri de içeren konteynerlerdir. Bir işlev bir nesneye bu şekilde eklenirse, buna yöntem denir.

ActionScript 3.0 tanımı, Java veya C++ arka planına sahip programcılar için biraz garip görünse de, uygulamada, ActionScript 3.0 sınıflarıyla nesne türlerinin tanımlanması, Java ya da C++ uygulamalarında sınıfların tanımlanmasına çok benzer. ActionScript nesne modeli ile diğer gelişmiş konular ele alınırken, iki nesne tanımı arasındaki fark önemlidir ancak diğer durumların çoğunda, özellikler terimi, yöntemlerin tersine, sınıf üyesi değişkenleri anlamına gelir. Adobe Flash Platform için Adobe Action Script 3.0 Referansı, örneğin, properties terimini değişken veya alıcı-ayarlayıcı özelliğini belirtmek için kullanır. Bir sınıfın parçası olan işlevleri ifade etmek için yöntemler terimini kullanır.

ActionScript'teki sınıflar ile Java veya C++ uygulamalarındaki sınıflar arasındaki bir fark, ActionScript'te sınıfların yalnızca soyut varlıklar olmamasıdır. ActionScript sınıfları, sınıfın özelliklerini ve yöntemlerini saklayan sınıf nesneleri ile temsil edilir. Bu da, bir sınıfın veya paketin üst düzeyine deyimler ya da çalıştırılabilir kod dahil etmek gibi Java ve C++ programcılarına yabancı görünebilecek tekniklere olanak sağlar.

ActionScript sınıfları ile Java veya C++ sınıfları arasındaki diğer bir fark, her ActionScript sınıfında prototip nesnesi adında bir öğenin olmasıdır. Önceki ActionScript sürümlerinde, prototip zincirleri içinde bağlanan prototip nesneleri, topluca tüm sınıf mirası hiyerarşisinin temeli görevini görürdü. ActionScript 3.0'da ise prototip nesneleri miras sisteminde yalnızca küçük bir rol oynar. Ancak bir özelliği ve o özelliğin değerini bir sınıfın tüm örnekleri arasında paylaşmak istiyorsanız, prototip nesnesi, statik özellik ve yöntemler için alternatif olarak yine kullanışlı olabilir.

Geçmişte, ileri düzey ActionScript programcıları, özel yerleşik dil öğeleriyle prototip zincirini doğrudan işleyebilirdi. Şimdi dil, sınıf tabanlı programlama arabiriminin daha olgun bir uygulamasını sağladığından, __proto__ ve __resolve gibi bu özel dil öğelerinin çoğu, artık dilin bir parçası değildir. Üstelik, performansta önemli ölçüde artış sağlayan dahili miras mekanizmalarının en iyileştirilmesi, miras mekanizmasına doğrudan erişimi önler.