Dialog'lar class değildir
TROIA'da nesne yönelimli programlama var, ama çoğu dilden farklı bir yaklaşımla: dialog'lar, rapor'lar ve component'ler class sayılmaz — hepsi aynı seviyede, ayrı yapılardır. Class'lar TROIA'da genelde veri değil davranış (metod kümesi) taşımak için kullanılır; veri saklamak için çoğunlukla TABLE tercih edilir.
_VARIABLES ve _CONSTRUCTOR: bir kez çalışan başlatıcılar
Her class'ın iki özel metodu vardır: _VARIABLES ve _CONSTRUCTOR. Bir instance ilk tanımlandığında bir kez çalışırlar — aynı instance birden fazla değişken tanımlama komutuyla (OBJECT: gibi) yeniden tanımlansa bile tekrar çalışmazlar:
/* _VARIABLES metodu */
MEMBER:
STRING AD,
DECIMAL BAKIYE;
/* _CONSTRUCTOR metodu */
BAKIYE = 0;
@ operatörü: üye alana erişim
Bir class instance'ının üye (member) alanına dışarıdan erişmek için nokta değil @ operatörü kullanılır:
LOCAL:
HESAP INSTANCE1;
INSTANCE1@BAKIYE = 500;
SONUC = INSTANCE1@AD;
@ yalnızca bir seviye derinlik destekler; INSTANCE1@ALTNESNE@ALAN gibi zincirleme erişim geçerli değildir.
OBJECT komutunun gizli davranışı
OBJECT: ile tanımlanan basit tipli (STRING, INTEGER, DECIMAL...) değişkenlerin kapsamı (scope), hangi metodun içinde olduğunuza göre değişir:
- Bir dialog/report metodunda → global
_CONSTRUCTOR/_VARIABLESiçinde → member- Sıradan bir class metodunda → local
Bu örtük davranış yüzünden okunabilirlik için OBJECT yerine niyeti açıkça belirten LOCAL:, MEMBER: veya GLOBAL: kullanmak önerilir — ama mevcut CANIAS kod tabanında hâlâ en çok OBJECT görülür.
Sonuç
TROIA class'larını anlamanın anahtarı üç şey: başlatıcıların yalnızca bir kez çalışması, üye erişiminde @ operatörü ve OBJECT komutunun bağlama göre değişen kapsam davranışı.
Yorumlar (0)
Yorum Yaz