Nesne Tabanlı Programlamaya Giriş -2(Paketler)
Nesne Tabanlı Programlama konusuna kaldığım yerden devam ediyorum. Bu makalede paketlerin(package) ne işe yaradığına ve kullanım şekillerine açıklayacağım.
Paketler (Package)
İsimden de rahatlıkla anlaşılacağı gibi burada ki package deyimi sınıf yapısı ile yazılan kodların nasıl ve ne şekilde kategorize edileceğini belirler. Daha doğrusu bunun nasıl olacağına yazılımcı olarak siz karar verirsiniz ama bu yapıyı oluşturmak için bu ifadeye ihtiyaç duyarız. Buradaki temel mantığın ne olduğuna gelirsek, yani neden paketlere ihtiyaç duyarız veya paketlerin kullanımını neden önemlidir?
İlk olarak bu yapıyı kullanmak zorundayız. Bir sınıf yapısı oluşturmak için ihtiyacımız olan ilk tanımlama package ifadesidir. Mesela aşağıda en minimal hali ile bir sınıf yapısı bulunmakta;
-
package {
-
public class OrnekSınıfYapısı{
-
}
-
}
Yukarıdaki gibi bir sınıf yapısı hazırlayıp kayıt ettiğinizde bu sınıf yapısına erişmek için sınıf yapısını yapılan uygulama ile aynı klasöre koymanız gereklidir. Diyelim ki yaptığınız uygulama için hazırladığınız ve daha sonra kullanmak istediğiniz bir takım özellikler 25 tane farklı ActionScript dosyasından oluşuyor. Bu 25 dosyayı her seferinde ayırıp tekrar kopyalamak biraz zaman alacaktır, ayrıca işlem karmaşıktır da. Yani hangi dosya alınacak, eksik dosya mı var gibisinden bir sürü sorun. Bu sorunu çözmek için ise paket yapılarını kullanmamız yetecektir.
Paketletin kullanımına gelirsek, paketler yukarıdaki örnekte verildiği gibi bir sınıf yapısının başlandığında yer alır. Tabi bu sadece tanımla ifadesidir. Bu ifadeyi paketin adı takip eder. Buradaki ad aslında bir klasör yapısını temsil eder.
-
package com.enginyoyen.effect{
-
public class PatlamaEfekti{
-
}
-
}
Mesela yukarıdaki örnekte com.enginyoyen.effect ifadesi iç içe geçmiş klasörleri temsil eder. com klasörü altında enginyoyen klasörü bunun altında ise effect klasörü yer alır. effect klasörü içinde ise PatlamaEfekti.as dosyası bulunur. Yani yapının URL adreslemesi şu şekildedir;
..\com\enginyoyen\effect\ PatlamaEfekti.as
Örnekte de açıkça görüldüğü gibi sınıf yapısı içerisinde paket adının yer aldığı bölümde, her bir nokta işareti bir klasör adını temsil eder. Diğer bir deyişle her bir noktadan sonraki klasör adı noktadan önceki klasörün içerisinde yer alan klasör adıdır.
Burada paket adlarının diğer bir artısı ise farklı sınıf yapılarına aynı isim verildiğinde çıkacak olan karmaşayı önlemesidir. Diyelim ki siz PatlamaEfekti.as adlı bir sınıf yapısı oluşturdunuz, başka bir yazılımcı aynı isimle bir farklı bir sınıf yapısı oluşturduğunu farz edelim. Yani her iki sınıfın yaptığı animasyonlar birbirinden farklı ama aynı isimleri taşıyorlar. Böyle bir durumda paket isimleri diğer devreye girer. Paketlere verilen isimler ile her iki sınıf yapısını da sorunsuz kullanabilirsiniz. Burada karşınıza çıkacak ilk sorun aslında PatlamaEfekti referanslı bir obje oluşturduğunuzda bu objenin hangi sınıfa ait olduğudur. Ama bu sorunun çözümüne ilerleyen bölümlerde değineceğim. Bu bölümde sadece paket isimlerinin kullanımına değineceğim.
Buradaki paket isimlendirmesini elinizden geldiğince tekil bir şekilde yapmanız gerekmektedir. Bu sayede farklı yazılımcılar aynı isimde sınıf yapıları oluştursalar buradaki karışıklık önlenmiş olur. Genel yapı domain isimlerinin kullanılmasıdır. Mesela http://www.enginyoyen.com adı bana ait. Ben kendi sınıf yapılarımı oluştururken sınıf yapılarını domain adı altında oluşturuyorum. Mesela aşağıda sıklıkla kullandığım ve kendi oluşturduğum sınıf yapılarında kullanılan paket isimleri yer almakta.
com.enginyoyen.effect
com.enginyoyen.text
com.enginyoyen.events
Buradaki temel mantık domain isimlerin belirli bir kişi veya kuruma ait olmasıdır bu sayede aradaki karışıklık kalkmış olacaktır. Paket isimlendirmelerini yaparken burada yapılan işleri iyi bir şekilde kategorize etmeniz ilerde işinizi çok büyük bir şekilde kolaylaştıracaktır.
Kapanış
Yazılımcı olarak her zaman farklı yapılar kullanıp farklı işlemler yapabilirsiniz, burada akıllıca davranıp tekrar kullanacağınız yapıların tamamı bağımsız ve ileriye dönük sınıf yapıları oluşturarak daha sonra tekrar kullanmayı hedeflemek olmalıdır.
Bir sonraki yazıda sınıf özniteliklerinin ne olduğuna ve ne işe yaradıklarına değineceğim.
Kolay Gelsin
Engin!
4 Responses to “Nesne Tabanlı Programlamaya Giriş -2(Paketler)”
Leave a Reply


güzel makale engin bey
Engin Hocam,
Açıkçası kitapta bazı yerleri anlamakta güçlük çektim.
Ama bu güzel açıklama. İkinci makaleyi de okuyayım.
Selamlar.
Makale kitabı aydınlatmış.
hocam iyi akşamlar benim flashımdamı sorun var böyle bir hata alıyorum
1046: Type was not found or was not a compile-time constant: EventOrnek.
1180: Call to a possibly undefined method EventOrnek.
5001 hatası içinde geçerlidir.
sorunumu hallettim.
aynı hatayı alan arkadaşlar için
flashcs4 için Edit-Preferences-As 3 Setting dedikden sonra source path kısmına class’ımızın bulunduğu uzantıyı oraya belirtiyoruz.
fakat class’ımızda package belirtiğimiz yolu siliyoruz sacede package kalıyor.
sonuc class’ımız fla’mızda çalışıyor.
5001 hatası içinde geçerlidir.