Merhaba, bu yazımda detaylı bir şekilde sınıf kavramına giriş yapacağız.
Aşağıdaki yazımda sınıf kavramından, sınıfın nasıl oluşturulacağından bahsetmiştim.
Şimdi bir proje yaparak nasıl kullanıldığını göstermeye çalışacağım.
Bir önceki dersimizde bir hesap makinesi yapmıştık aşağıdaki linkten inceleyebilirsiniz.
Buradan yola çıkarak bu işlemleri bir sınıf içinde tutup oradan yapacağız.
Transaction İsmi : EDUTEST
Başlangıç Diyalogu : EDUD01D000
Oluşturacağımız Diyalog : EDUD01D002
Şimdi öncelikle EDUTESTCLAS isimli bir sınıf oluşturalım.
Sonra bu sınıfa ait TOPLA, CIKAR, CARP, BOL Metotlarını da oluşturalım.
Bunun için yapmanız gereken işlemi yukarıda paylaştığım 9. yazıda bulabilirsiniz.
Bir tane örnek göstermiş olayım.
Hepsinin de geri INTEGER bir değer döndüreceğini bildiğimiz için RETURN TYPE INTEGER olarak ayarlıyoruz.
Tamamını oluşturduğumuzda şu olacaktır.
Şimdi yapacağımız işleme odaklanalım.
Bütün işlemler o işle özelleşmiş metotta yapılacak.
Öncelikle tüm sınıf içinde kullanılabilecek global değişkenimizi _VARIABLES metodu içinde tanımlayalım.
OBJECT:
INTEGER S3;
Şimdi diğer metotlarımızı yazalım.
PARAMETERS:
INTEGER S1,
INTEGER S2;
S3=S1+S2;
RETURN S3;
PARAMETERS:
INTEGER S1,
INTEGER S2;
S3=S1-S2;
RETURN S3;
PARAMETERS:
INTEGER S1,
INTEGER S2;
S3=S1*S2;
RETURN S3;
PARAMETERS:
INTEGER S1,
INTEGER S2;
S3=S1/S2;
RETURN S3;
Şimdi burada biraz metotların yapısından bahsedelim.
Metotlar parametre alabilirler. Yani dışarıdan değişkenler bu metoda parametre olarak gönderilip işleme dahil edilebilir.
Metot başında alabileceği parametreler
PARAMETERS :
söz dizimi ile deklere edilir.
Sonrada Object tanımlar gibi dışarıdan gelmesi muhtemel Object tipine göre parametreler oluşturulur.
PARAMETERS:
INTEGER S1,
INTEGER S2;
Burada önemli olan durumlardan biri sıralamadır. Dışarıdan metodun parametresine yazılan 1. değer metot içinde tanımlanan ilk Parametre değerine atanır. 2. değer 2. Parametre değerine atanır. Bu şekilde sıra ile tüm parametre değerleri girilene kadar devam eder.
O yüzden sıralamaya dikkat etmemiz gerekir. Aksi taktirde tip uyuşmazlıkları çıkabileceği gibi istediğimiz sonuçları doğru bir şekilde alamama gibi durumlarla da karşılaşabiliriz.
Şimdi Diyalog tarafına geçelim ve ilk olarak BEFORE kodlarına Obje tanımlamalarımızı yapalım.
OBJECT:
STRING ISLEM1,
STRING MSSG,
EDUTESTCLAS EDUTESTCLASREC;
Oluşturmuş olduğumuz sınıfı kullanabilmek için Before’da bir nesne örneği oluşturulur.
Troia’da standart bir kullanım olarak sınıf isminin sonuna REC ifadesi eklenir. Zorunlu bir kullanım değildir. İstenilen isimle nesne türetilebilir ama IAS standart olarak bu kullanımı yapmaktadır.
Bizde o yüzden
EDUTESTCLAS sınıfından EDUTESTCLASREC isimli bir nesne türettik.
Artık diyalogun her yerinden bu nesne üzerinden sınıfa ulaşabilir. Metotlarını kullanabiliriz.
OK Click olayına geçelim.
ISLEM1=ISLEM;
IF ISLEM1 == '+' THEN
SONUC=EDUTESTCLASREC.TOPLA(SAYI1,SAYI2);
ELSE
IF ISLEM1 == '-' THEN
SONUC=EDUTESTCLASREC.CIKAR(SAYI1,SAYI2);
ELSE
IF ISLEM1 == '*' THEN
SONUC=EDUTESTCLASREC.CARP(SAYI1,SAYI2);
ELSE
IF ISLEM1 == '/' THEN
SONUC=EDUTESTCLASREC.BOL(SAYI1,SAYI2);
ELSE
MSSG='Geçersiz İşlem';
SONUC=MSSG;
ENDIF;
ENDIF;
ENDIF;
ENDIF;
Sınıfın Dialog İçinde Kullanımı
[SınıfBelirteci].[İlgiliMethot](Paramters);
Biz iki parametre göndereceğimizi zaten bildirmiştik.
EDUTESTCLASREC.TOPLA(SAYI1,SAYI2);
Burada önemli durumlardan biride Editboxların direk bir değişken bir obje gibi veri çekilebilecek durumda olmasıdır. Değerleri ayrıca bir değişkene atmaya gerek kalmadan direk parametre olarak metoda uygulanabilirler.
Sınıfların bir diğer durumu geriye değer döndürmesi ve döndürmemesidir. Az önceki metot tanımlamamızda görmüştük geri dönüş tipinin INTEGER olduğunu belirtmiştik.
Bu sebepten metodumuz Return ifadesiyle geriye bir INTEGER değer dönmelidir.
RETURN S3;
dediğimiz noktada tüm işlemler sonunda metot geriye S3 değerini dönüyor demektir.
Return ifadesinin kullanıldığı noktada Runner aşağıdaki kodları işlemez. Return bir bitirme sonlandırma ifadesidir.
Tek başına bir işlemi kesmek sonlandırmak içinde RETURN; şeklinde kullanılabilir.
SONUC=EDUTESTCLASREC.TOPLA(SAYI1,SAYI2);
Burada bahsedilen durumu anlatmak gerekirse.
EDUTESTCLAS sınıfının TOPLA Sınıfına git giderken SAYI1 ve SAYI2 değerlerini parametre olarak götür. Ve işlemler sonucundan gelen değeri SONUC editbox’ına yazdır.
Ekran Görüntüleri
Bir sonraki yazımda görüşmek üzere.