[[anasayfa|]] / [[basit_dili_kuralları|]] ====== Obje ve Bileşen ====== Bir Obje nedir? Gerçek dünyadaki objelerin mantığını yanıstan, kodlamayı kolaylaştıran bir konsepttir. Bir Obje dışarıya dönük bir takım özellikler ve metotlar sunar. Objeyi kullanırken, sadece sunduğu bu birimler üzerinden objeyle bilgi alışverişi sağlanır. Obje ise kendi içinde herşeyini kendisi yönetir. Obje ve Bileşen aynıdır. Aralarında teknik olarak hiçbir fark yoktur. Farkları sadece kodu doğru okumak içindir. Bileşen ile ekranda gözüken Pencere, Buton, Menü, Liste gibi görsel objeler tasarlanır. Obje ile arkaplanda çalışan ve ekrana görsel bir biçimde yansımayan objeler tasarlanır. Objenin bazı özellikleri ve işlemleri sadece objenin kendisi için içerden sağlanırken, bazı özellikleri ve işlemleri dışarıyla veri akışını sağlamak için düzenlenir. Objenin dışardan erişilebilir özellikleri (Değişkenler, Dizilimler, ProsedürBağları ve İşaretler) "Açık" anahtar kelimesiyle birlikte tanımlanır. İçe kapalı olan bu tür verileri ise "Kapalı" anahtar kelimesiyle birlikte tanımlanır. Objenin dışardan erişilebilir prosedürleri "Metot" olarak tanımlanır. Sadece kendi içinde kullanılabilir prosedürleri yine "Prosedür" olarak tanımlanır. Prosedürler ise üç gruba ayrılırlar: * Normal prosedürler * Hazırlama prosedür(leri) * Kaldırma prosedürü Normal prosedürler Obje içinde her türlü işlemi yapar. Mesela metotlar tarafından kullanılabilir. Örneğin bir görsel bileşen tasarlanıyorsa, ortak bir çizim prosedürü tanımlanabilir. Her eylem ardından bu prosedürü çalıştırarak bileşen yeniden çizilebilir. Hazırlama prosedürü en az bir adet olmak zorundadır. Bu prosedür yükleme yapabilir. Yani kendisinden birkaç çeşit olabilir. Hazırlama prosedürü bileşeni veya objeyi ilk kez kullanacağımız zaman çalıştırılır ve objenin içindeki tüm hazırlıkları yapar. Mesela özelliklerin standart değerlerini belirler, gerekirse arabellekten alan rezerve eder vesaire. Her objenin mutlaka bir kaldırma prosedürü vardır. Bu prosedür yükleme desteklemez. Bir obje artık lazım değilse, onu arabellekten kaldırmak için "Yoket" komutu kullanılır. Fakat Basit o objeyi yoketmeden önce kaldırma prosedürünü otomatik olarak çalıştırır ve obje kendi içinde bir temizlik yapar. Mesela arabellekten rezerve ettiği alanları tekrar kaldırması gibi. Bir örnek: Obje İsim ? Bu tanımlamalar sadece obje içinde geçerlidir ? Kapalı Değişken Rakam a; b; c Kapalı Dizilimsel Metin klistem ? Bu tanımlamar hem obje içinde, hemde dışında geçerlidir ? Açık Değişken Rakam d; e; f Açık Dizilimsel Metin alistem ? Bu prosedür sadece obje içinde geçerlidir ? Prosedür içerdeBirşeyYap () ? ... ? ProsedürSon ? Bu metot hem obje içinde, hemde dışında geçerlidir ? Metot DışardanÇalıştırılabilir () ? ... ? MetotSon ? Hazırlama prosedürü ? Prosedür İsim () ? ... ? ProsedürSon ? Kaldırma prosedürü ? Prosedür _İsim () ? ... ? ProsedürSon ObjeSon Aynı örnek Bileşen içinde geçerlidir: Bileşen İsim ? Bu tanımlamalar sadece obje içinde geçerlidir ? Kapalı Değişken Rakam a; b; c Kapalı Dizilimsel Metin klistem ? Bu tanımlamar hem obje içinde, hemde dışında geçerlidir ? Açık Değişken Rakam d; e; f Açık Dizilimsel Metin alistem ? Bu prosedür sadece obje içinde geçerlidir ? Prosedür içerdeBirşeyYap () ? ... ? ProsedürSon ? Bu metot hem obje içinde, hemde dışında geçerlidir ? Metot DışardanÇalıştırılabilir () ? ... ? MetotSon ? Hazırlama prosedürü ? Prosedür İsim () ? ... ? ProsedürSon ? Kaldırma prosedürü ? Prosedür _İsim () ? ... ? ProsedürSon BileşenSon Bir Obje veya Bileşen başka bir Obje veya Bileşenden kaynak alabilir. Kaynak aldığı Objenin açık tanımlamaları ve metotları otomatik olarak kendisine eklenir: Obje AnaObjem ? Bu tanımlamalar sadece obje içinde geçerlidir ? Kapalı Değişken Rakam a; b; c Kapalı Dizilimsel Metin klistem ? Bu tanımlamar hem obje içinde, hemde dışında geçerlidir ? Açık Değişken Rakam d; e; f Açık Dizilimsel Metin alistem ? Bu prosedür sadece obje içinde geçerlidir ? Prosedür içerdeBirşeyYap () ? ... ? ProsedürSon ? Bu metot hem obje içinde, hemde dışında geçerlidir ? Metot DışardanÇalıştırılabilir () AnaObjem.a = 5 AnaObjem.b = 18 AnaObjem.c = AnaObjem.a * AnaObjem.b MetotSon ? Hazırlama prosedürü ? Prosedür AnaObjem () ? ... ? ProsedürSon ? Kaldırma prosedürü ? Prosedür _AnaObjem () ? ... ? ProsedürSon ObjeSon Obje YeniObjem Kaynağı AnaObjem ? Bu tanımlamalar sadece obje içinde geçerlidir ? Kapalı Değişken Rakam rak1; rak2 ? Bu tanımlamar hem obje içinde, hemde dışında geçerlidir ? Açık Değişken Rakam liste1; liste2 ? Bu prosedür sadece obje içinde geçerlidir ? Prosedür birİşlem () Rakamdır Sonuç YeniObjem.rak1 + YeniObjem.rak2 ProsedürSon ? Bu metot hem obje içinde, hemde dışında geçerlidir ? Metot HesapEt () Rakamdır Sonuç YeniObjem.birİşlem() MetotSon ? Hazırlama prosedürü ? Prosedür YeniObjem ( Rakam a; b ) YeniObjem.rak1 = a YeniObjem.rak2 = b ProsedürSon ? Kaldırma prosedürü ? Prosedür YeniObjem () ? ... ? ProsedürSon ObjeSon Objeyi kullanmak için hazırlık prosedürü çalıştırılmalıdır: Prosedür Başlat () ? Obje türünden bir bir değişken tanımlanıyor ? Belirle YeniObjem test ? Hazırlama prosedürü çalıştırılıyor ? test() ? Öğeleri kullanılıyor ? Birlikte test ? Objenin kendi metotu ? Denetim .hesapEt() ? Kaynağından elde ettiği metotu ? Denetim .DışardanÇalıştırılabilir() BirlikteSon ProsedürSon Obje ve Bileşen kapsama alanına girilebilen elemanlar şöyledir: * Açık/Kapalı Değişken, Dizilim, Belirle, ProsedürBağı, İşaret * Metot * Prosedür