Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

NİŞANTAŞI ÜNİVERSİTESİ

Benzer bir sunumlar


... konulu sunumlar: "NİŞANTAŞI ÜNİVERSİTESİ"— Sunum transkripti:

1 NİŞANTAŞI ÜNİVERSİTESİ
NESNEye yönelİk PROGRAMLAMA STATIC VERİLER VE YÖNTEMLER, FINALIZE YÖNTEMİ NİŞANTAŞI ÜNİVERSİTESİ © İktisadi, İdari ve Sosyal Bilimler Fakültesi iisbf.nisantasi.edu.tr

2 STATIC VERİLER VE YÖNTEMLER
Şu ana kadar yazdığımız bütün programlarda bir değişkenin ömrü tanımlandığı yerde başlayıp, kapsamdan çıktığı zaman sona erdi. Küme parantezleri koyarak yada bir yöntem içerisinde tanımladığımız değişkenler gibi bir nesnenin içindeki değişkenler de nesne yok edildiğinde yok oluyorlar. Nesne kapsamdan çıkınca da haliyle bu değişkenlere erişemiyoruz

3 STATIC VERİLER VE YÖNTEMLER
Ancak bazen bir sınıftaki nesneler ile ilgili bazı bilgilerin her zaman erişilebilir olması gerekir. Ya da kritik bir değişkenin asla kapsamdan çıkmamasını istersiniz. Örneğin bir ağ sunucusunda (örneğin bir e-mule sunucusu) bağlanabilecek kullanıcı sayısı sınırlanmalıdır. Burada da artıp azalacak merkezi bir değişkene ihtiyaç duyuyoruz. Yani bir sayaç uygulaması yapıyoruz.

4 STATIC VERİLER VE YÖNTEMLER
C/C++ geleneği bu merkezi değişken gereksinimini durağan (static) değişkenler ile çözer. Durağan bir değişkenin ömrü uygulama ile tanımlıdır. Uygulama başlatılır başlatılmaz durağan değişken de yaratılır ve uygulama sona ererken de yok edilir. Java'da bu sistemi hemen hemen aynı biçimde korumuştur. Ancak Java söz konusu olunca bütün durağan değişkenler bir sınıfa ait olmak zorundadır. Bu da normal bir ön koşul çünkü Java'da zaten bütün değişkenler bir sınıf içinde tanımlı oluyorlar.

5 STATIC VERİLER VE YÖNTEMLER
Java’da bir sınıfa ait durağan (static) bir değişken, sınıfa aittir. Bu nedenle sadece bir kopyası vardır ve o sınıfa ait bütün nesneler tarafından paylaşılır. Ayrıca bu değişkene erişmek için sınıftan bir nesneye gerek yoktur. Sınıfın adı ile de erişebiliriz. Durağan değişkenler için kullanılan teknik detaylar, C/C++ 'da bazı özel durumlar yarattığı için durağan işlevler ve yöntemlere gerek duyulmuştur. Java da C+ +'daki gibi durağan yöntemleri destekler. Durağan bir yöntem de tıpkı durağan bir değişken gibidir. Aynı kurallara tabidir.

6 STATIC VERİLER VE YÖNTEMLER
Java'da bir sınıfa ait durağan yöntemler (static method) tıpkı durağan değişkenler gibi sınıfa aittir ve nesneler tarafından paylaşılır. Dahası durağan bir yöntemi çağırmak için herhangi bir nesneye gerek duymayız. Bir durağan değişken, o sınıftan hiçbir nesne yaratılmasa bile var olacaktır. Aynı şekilde bir durağan yöntem de hiçbir nesne yaratılmasa bile sınıfın adı ile çağrılabilir.

7 ÖRNEK-4

8 ÖRNEK-4

9 ÖRNEK-5

10 ÖRNEK-5

11 FINALIZE YÖNTEMİ Java’da nesnelerin yok edilmesi için ön koşul , hiçbir kapsamda nesneye bağlı bir referans bulunmamasıdır. Referanslar bir nesneye bağlı olabilir ya da boşta bulunabilir. Bir nesneye birden fazla referans da bağlı olabilir. Ancak bir referans en fazla bir nesneye bağlı olur.

12 FINALIZE YÖNTEMİ

13 FINALIZE YÖNTEMİ

14 FINALIZE YÖNTEMİ

15 FINALIZE YÖNTEMİ

16 FINALIZE YÖNTEMİ Referanslar tıpkı temel tip değişkenleri gibi kapsam dışına çıkınca yok edilirler. Bu durumda bağlı oldukları nesneye olan bağlantı da yok olur. Ancak, bir nesneye birden fazla kapsamda değişik referanslar bağlı olabilir. Bu nedenle Java sistemi bir referans kapsamdan çıktığında bağlı olduğu nesneyi yok etmez.

17 FINALIZE YÖNTEMİ Java'da periyodik olarak çöplük toplayıcı çalışır ve o anda referansı olmayan nesneleri temizler. Ancak çöplük toplayıcının ne zaman çalışacağı bizden bağımsızdır. Java'da çöplük toplayıcının (garbage collector — gc) çalışması için Java çalışma sisteminde yetersiz bellek olması gereklidir. Yeterince boş belleği olan bir Java Sanal Makinesi'nde çöplük toplayıcı (gc) çağrılmaz.

18 FINALIZE YÖNTEMİ Çöplük toplayıcı çok düşük düzeyde bir temizlik yapar. Nesneyi siler atar. Nesnenin sistemden almış olabileceği bellek dışı kaynaklar (açık dosyalar, ağ bağlantıları, veri tabanı bağlantıları, vb. ) umurunda değildir. Bunları kapatmak programcının sorumluluğundadır.

19 FINALIZE YÖNTEMİ Aslında akıllı bir programcı her kaynağı kullanıp işi biter bitmez kapatır. Ancak bazı kaynaklar doğaları gereği uzun süreler boyunca açık kalmak zorundadır. Bu durumda kapatılması için uygun bir yer nesnenin yok edilmesinden hemen öncesi olabilir. Java'da bir nesnenin ölmeden önce son dileğini belirtebildiği bir yöntem vardır. Yöntemin adı finalize ()'dır. Çöplük toplayıcı bir nesneyi yok etmeden önce bu yöntemi çağıracaktır.

20 ÖRNEK-6

21 ÖRNEK-6

22 KayNAKlar Bora Güngören, Java ile Temel Programlama, Seçkin Yayıncılık, 2003 Kendinize Güvenerek Java, Musa Çavuş, Seçkin Yayıncılık, 2011


"NİŞANTAŞI ÜNİVERSİTESİ" indir ppt

Benzer bir sunumlar


Google Reklamları