Nesne Tabanlı Programlamaya Giriş - 1
Nesne Tabanlı Programlama kelimelerinin birleşimi her ne kadar yeni başlayan programcıları korkutsa da aslında sanıldığı kadar zor bir süreç değildir. Sürecin zorlu olması ilk baştaki adaptasyonun zor olmasıdır. Bu adaptasyonu kolaylaştırmak için ise nesne tabanlı programlamaya basit bir giriş yapacağım. Bu ve bundan sonraki birkaç bölümde nesne tabanlı programlama içerisindeki ifadelerin neler olduğuna ve ne iş yaptıklarına değineceğim.
Sınıflar ve Nesneler/Objeler (Class/Object)
Sınıflar(Class) basit işlemleri yapmamıza yarayan kod parçacıklarıdır. Belirlenen bir işin yapılması için bazen bir bazen birkaç farklı sınıf aynı anda kullanılır. Kullanım aşamasında ise Nesneler(Object) devreye girer. Bunu bir örnekle açıklamam daha iyi olur diye düşünüyorum;
Mesela üzerinde çalıştığınız her projede kullandığınız bir resim animasyonu var, bu animasyon 40 satır kod ile çalışıyor. Normal şekilde(timeline da kod yazarken) bu 40 satır kodu her zaman kopyalayıp yapıştırmanız gerekiyor. Bunun yerine bu 40 satır kodu biraz daha geliştirip tek bir dosya haline getirebilirisiniz ki bu durumda bir Sınıf geliştirmiş oluyorsunuz. Bu sınıf dosyasının gerçekleştirdiği animasyonu timeline içerisinde veya başka bir sınıf dosyası içerisinde kullanmanız ise o sınıfa ait bir Nesneyi (Objeyi) kullanmış oluyorsunuz.
Diyelim ki sınıf dosyasına verdiğiniz ad ResimAnimasyonu, bu animasyonu kullanmak için bu sınıfa ait bir obje yaratmanız gerekli olduğunuz düşünün. Yani;
-
var resimAni:ResimAnimasyonu = new ResimAnimasyonu();
Yukarıdaki kod ise sınıfın bir yansıması yani bir objedir. Kısacası Sınıflar objelerin soyut bir yansımasıdır. Şimdi ise teknik kısmına geçelim. Bir sınıf oluştururken uymanız gereken basit kurallar vardır. Şimdi bu kurallara sırasıyla değineceğim.
İlk olarak Actionscript dosyalarına değineceğim. Actionscript Sınıf dosyalarını Notepad gibi basit bir metin editöründe yapabilirisiniz. Yapmanız gereken tek şey uzantısı as olarak kayıt etmek. Ama mantıklı olan bunu Flash Professional, Flex Builder veya Flash Developer gibi bir programda yapmak. Flash içerisinde yapmanız gereken Welcome penceresinde Actionscript File seçeneğini seçmek veya File > New sekmesinden Actionscript File seçeneğini seçmek.Karşınıza çıkan boş bir dokümandır tabiî ki.
Uymanız gereken ilk kural sınıf adı ile dosya adının aynı olmasıdır. Yani eğer yazdığınız sınıf adı ResimAnimasyonu ise dosyanın adı ResimAnimasyonu.as olmak zorundadır. Sınıf adlandırmalarında ise genel olarak kelimelerin ilk harfleri büyük ve arada boşluk yoktur. Genel olarak tek bir Actionscript dosyasında tek bir sınıf vardır. Böyle bir zorunluluk yoktur aslında ama en yaygın yöntem budur, tabii yaygın olmasının sebebi klasikleşmişliğinden dolayı değil, işlevselliğinden dolayıdır.
Not: Aynı paket içerisinde bir den çok sınıf yerleştirebilirsiniz ama yerleştirdiğiniz sınıflardan sadece bir tanesi dışardan erişilebilir olacaktır. Erişilebilir olan sınıf package ifadesinin içerisinde olması gerekiyor. Paketler konusuna daha sonra değineceğim.
Sınıfların Tanımlamaları
Sınıfları tanımlamalarını yaparken kesinlikle class ifadesini kullanmak zorundasınız. Daha sonra ise sınıfın adı gelmektedir. Sınıf isminden sonra süslü parantezlerle ({})arasında kalan kısım sınıf içerisinde yer alacak fonksiyon ve değişkenlerin yer aldığı kısımdır. Aşağıda örnek bir sınıf yapısı yer almaktadır bu sınıf çalıştığında ise sadece trace() metodu bir çıktı verecektir;
TestSinifi.as
-
package {
-
public class TestSinifi {
-
public function TestSinifi() {
-
trace("Sınıf sorunsuz çalışıyor");
-
}
-
}
-
}
Sınıf yapısı içerisinde bulunan TestSinifi adlı fonksiyon ise yapılandırıcı metot olarak adlandırılır. Bu metot sınıf yapısı yüklendiğinde otomatik olarak çalışmaya başlar. Yani sınıf yapısı içerisinde hemen çalışmasını istediğiniz bir kod parçası veya fonksiyon varsa hemen çalışacaktır.
Burada bir noktaya daha değinmek istiyorum. Metot kavramı aslında fonksiyon kavramına eşittir. Sınıf yapısı içerisinde hazırlanan fonksiyonlara metot deniyor. Aynı sınıf yapısı içerisinde oluşturulan değişkenlere ise özellik deniyor. Aşağıda buna dair bir örnek yer almakta;
TestSinifi.as
-
package {
-
public class TestSinifi {
-
public var testOzelligi:String="Bu bir denemedir";
-
-
public function TestSinifi() {
-
trace("Sınıf sorunsuz çalışıyor");
-
}
-
-
public function testMetodu() {
-
trace("Test metodu çağırıldı");
-
}
-
}
-
}
Bu kodu TestSinifi.as olarak kayıt ettikten sonra aynı klasörü bir flash dokümanı açıp kayıt edin. Daha sonra aşağıdaki actionscript kodunu ekleyip test edin;
-
import TestSinifi;
-
var testObjesi:TestSinifi = new TestSinifi();
Daha sonra ise aşağıdaki kodu teker teker deneyin;
-
testObjesi.testMetodu();
-
trace(testObjesi.testOzelligi);
Çıktılar sırasıyla aşağıdaki gibi olacaktır;
-
Sınıf sorunsuz çalışıyor
-
Test metodu çağırıldı
-
Bu bir denemedir
Kapanış
Bir sonraki konuda paketlere ve sınıf özniteliklerine değinceğim.
Kolay Gelsin
Engin!
4 Responses to “Nesne Tabanlı Programlamaya Giriş - 1”
Leave a Reply


merhaba ActionScript 3.0′ı aldım okuyorum. OOP konusunu anlamakta zorlandım. Nasıl kullanıldığının yanında nerede kullanıldığına dair somut örnekler olsa daha iyi olurdu diye düşünüyorum. Buradaki yazınız daha açıklayıcı olmuş ancak detay sayfasında türkçe karakterler düzgün görüntülenemiyor.
Genç yaşınıza rağmen imza attığınız projeler çok etkileyici tebrikler
elinize sağlıkKKK
Sevgili Engin kardesim affina siginarak yukaridaki cikti satirlari su sekilde olmasi gerekmez miydi?. Hayir diyorsan neden acaba?
daha Flashta denemedim cünkü Bilgisayarimda yüklü degil sadece varolan temel java bilgimin yardimiyla bu sorumu ya da olasi düzeltmemi sunmak istedim.Bence sadece 2 cikti gelir disariya cünkü sinifa var isimli bir nesne nesne ataniyor ve o nesne metodlarla iliskilendiriliyorlar: yani kisaca söyle,
1. import TestSinifi;
2. var testObjesi:TestSinifi = new TestSinifi();
3. testObjesi.testMetodu();
4. trace(testObjesi.testOzelligi);
Cikti ise bence söyle olmaliydi;
Test metodu çağırıldı.
Bu bir denemedir.
Saygilar hataliysam lütfen hatamida söylerseniz sevinirim. Programi yorumlarsam sunu anladigimi söylerim satir satir.
import ile olusturulan
1. satir: TestSinifi Library den import ile cagrilir
2.satir ise cagrilan TestSinifi sinifina adi TestObjesi olan bir Nesne atanir. Bundna sonra TestSinifini artik testObjesi adini verdigimiz Nesne temsil etmektedir.
3. satir ise: TestObjesi sen artik TestSinifini temsil ettigin icin bana TestSinifinin icindeki adi testMedotu olan fonksiyonu calistir: Ciktisi böylece “Test metodu çağırıldı” olacaktir.
4. satirda ise testSinifi ni temsil eden sen testObjesi git bana ait oldugun Siniftaki testOzelligi isimli metodu cagir am bunu cagirirken trace ile cagirmaktadir cünkü Sinifta bulunan String ana Sinifta henüz trace edilmedigi icin trace(testObjesi.testOzelligi); seklinde cagrilir ve ciktisi da ; Bu bir denemedir olur.
Bir sorum olacak Ana Sinif TestSinifi icerisine ayni isimli olan TestSinifi denilen metod konuluyor yani Sinif ayni adla Metoda yönlendirliyor ama acaba TestSinif methodunun yazilim kücük harfli (t) olan testSinifi olmasi gerekmez mi?
tesekkürler cok faydali olmasi dilegiyle tüm katilan ve emek verenlere tesekkürler
@Rasit Bülbül
Merhaba,
sıralam verildiği gibi doğru, çünkü obje ilk oluşturulduğunda sınıf yapısı içerisindeki yapılandırıcı metodu çağırıyor. Yapılandırıdı metot ilk olarak çağırıldığı için de alınan çıktı bu metoda ait oluyor.
Diğer soruna gelirsek, Actionscript küçük büyük harf duyarlı bir dildir. Yani sınıf yapısının adı nasıl ise yapılandırıcı metodun adına aynı olmalıdır.
kolay gelsin