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

Slides:



Advertisements
Benzer bir sunumlar
Activity Ekleme İşlemi
Advertisements

Nesneye Yönelik Programlama
İSİM UZAYLARI.
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
Nesneye Dayalı Programlama
İşletim Sistemlerine Giriş – 2 Kaynakların Paylaşımı
Erişim Kontrolü.  Değişebilir / Değişemez yapılar  Çok programcının dahil olduğu projeler  Kütüphaneler  Çözüm  Konvansiyonlar  Erişim kontrol sözcükleri.
Polymorphism.  Bir işlem birden fazla tip üzerinde çalışabilir  Metot temel tip arayüzünü kullanır  İşlem çalışan metot tarafından yapılır.
Nesneye Dayalı Programlama
BTEP 203 – İnternet ProgramcIlIğI - I
İSİM UZAYLARI (Name Space)
Sarma (Encapsulation) / Kalitim (Inheritance) /Final Terimleri
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
SANAL FONKSİYONLAR VE ÇOK BİÇİMLİLİK
NESNEYE DAYALI MODELLEME VE TASARIM
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
P AKET E RIŞIMLERI SıNıFLARıN YENIDEN KULLANıMı. P AKET ( P ACKAGE ) Paketler kütüphaneleri oluşturan elemanlardır. import java.io.BufferedReader; BufferedReader.
Nesneye Yönelik Programlama
NESNEYE YÖNELİK PROGRAMLAMA
Nesneye Dayalı Programlama
JavaScript Javascript , Netscape firması tarafından C dilinden esinlenilerek yazılmıştır Yazılma amacı Html'in sahip olmadığı bazı özelliklerin web sayfalarında.
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA KONTROL : Prof. Dr. Asaf VAROL KONU : KAPSÜLLEME.
İSİM UZAYLARI (NAMESPACE)
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Net Class Framework ’ ün en üst yapısına İsim Uzayı denir. İsim uzayları ; pascal programlama dilinde 1990 ve hatta öncesinden beri varolmuş, C’de yer.
Nesneye Dayalı Programlama
ÇOK BİÇİMLİLİK POLYMORPHISM
APPLET KAVRAMI ve GRAFİK UYGULAMALARI
Önceki Dersi Hatırlama !!
Nesneye Dayalı Programlama
FIZ 275 Bilgisayar Uygulamaları Ders Notu
KALITIM Yılmaz Kılıçaslan.
SANAL FONKSİYONLAR VE ÇOKBİÇİMLİLİK Yılmaz Kılıçaslan.
Fragment.
BSM447 – MOBİL UYGULAMA GELİŞTİRME
KIRKLARELİ ÜNİVERSİTESİ
Sayfa Ayarlari Projelerimizde uzerinde yogunlasacagimiz dosyalar Java ve XML dosylari olacaktir.
Temel Veri Yapıları Veri Yapıları 1. Bölüm 1. 2 Programlarımızda tanımladığımız nesneler ya tek parçadan ya da birden fazla parçadan oluşurlar. Tek parçadan.
KALITIM(INHERITANCE) Öğr.Gör. Murat ASLANYÜREK. KALITIM KAVRAMINA GİRİŞ  Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar.  Türetilen yeni sınıflar,
10. NESNEYE YÖNELİK PROGRAMLAMA Öğr.Gör. Murat ASLANYÜREK.
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
DNS SERVER (DOMAİN NAME SYSTEM) HAZIRLAYAN:KÜBRA SİNEM ALBAY
Asp.Net Veritabanı İşlemleri
C Programlama Dili Bilgisayar Mühendisliği.
5- class & object Nesne Yönelimli Programlama - i
Nesneye Dayalı Programlama Temel Kavramlar Hüseyin ESKİ.
Kaynakların Paylaşımı
Bütün dünyayı nesneler (object) ve nesneler arası ilişki olarak gören model kullanılarak yapılan programlama. Bu programlama tekniğine göre her nesne.
Dijital kütüphane işlevleri
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Problem Çözme Süreci-2.
NİŞANTAŞI ÜNİVERSİTESİ
Nesneye Dayalı Programlama 1
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
GARBAGE COLLECTOR (  ÇÖP TOPLAYICI ).
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

NİŞANTAŞI ÜNİVERSİTESİ NESNEye yönelİk PROGRAMLAMA PAKETLER VE DERLEME BİRİMLERİ, REFERANSLAR NİŞANTAŞI ÜNİVERSİTESİ © İktisadi, İdari ve Sosyal Bilimler Fakültesi iisbf.nisantasi.edu.tr

PAKETLER VE DERLEME BİRİMLERİ PAKET (PACKAGE) Birbiriyle işlev veya kullanım açısından ilişkili sınıflar paket adı verilen bir birim altında birleştirilir. Bir sınıfın ait olduğu paketi belirtmek için ’package' keyword'ü kullanılır.

PAKETLER VE DERLEME BİRİMLERİ Bir sınıfın diğer bir sınıfla aynı pakette olması, ona bazı avantajlar sağlar. Aslında bütün sınıflar bir pakete ait olmak zorundadır. Hiç bir isim verilmediğinde o sınıf isimsiz default package'de kabul edilir. Paketi belirtilmemiş bütün sınıflar aynı paketin sınıfları sayılır. Bazı durumlarda sadece örnek olsun diye yapılıp hatalı (derlenemez durumda) bırakılan sınıf, yine paketsiz olan başka bir sınıfın derlenmesini engelleyebilir.

PAKETLER VE DERLEME BİRİMLERİ IMPORT Bir sınıfın kendisiyle aynı pakette olmayan sınıfı kullanabilmesi için, sınıf tanımından önce import etmesi gerekir. Bu sadece kullanılacak sınıfların tam olarak hangi pakette olduğunu söylemek anlamına gelir. Bunun için ’import' keyword'ü kullanılır.

PAKETLER VE DERLEME BİRİMLERİ Burada sadece kullanılacağı belirtilmektedir. Yoksa, import edilen sınıfın import eden sınıfın üzerine ’include' edilmesi (eklenmesi) sözkonusu değildir. 'java.lang' paketindeki sınıfları kullanmak için import ifadesine gerek yoktur. Bu paket olmadan hiç bir Java programı yapılamayacağı için, default olarak import edilmiş sayılır.

PAKETLER VE DERLEME BİRİMLERİ ’*’ OPERATÖRÜYLE IMPORT Bir paketteki bütün sınıfları import etmek için ’*' operatörü kullanılabilir.

PAKETLER VE DERLEME BİRİMLERİ Bu işlem, alt alta çok sayıda import ifadesi yazmaktan daha kolaydır. '*' operatörü kullanılıdığında bir çok sınıfın gereksiz yere import edildiği gibi bir izlenim doğmakla birlikte, import işlemi aslında bir belirtmeden öteye gerçek bir ’içine alma’ işlemi anlamına gelmediği için önemli bir performans kaybına yol açmaz. Sadece bazı programcılar okunurluğu arttırmak için böyle bir yola gitmektedirler.

PAKETLER VE DERLEME BİRİMLERİ TAM NİTELENDİRİLMİŞ İSİM (FULLY-QUALIFIED NAME ) Aslında her sınıf paket ismiyle birlikte adlandırılır. Örneğin, ’mypackage’ isimli bir pakette 'MyClass' isimli bir sınıfın tam nitelendirilmiş ismi ’mypackge.MyClass’ dır. Import ifadesi, sadece programcıyı her sınıf ismini böyle uzun yazmaktan kurtarmaktadır.

PAKETLER VE DERLEME BİRİMLERİ 'java.awt' package'inde olan Button adlı sınıfın bir örneğini ’import java.awt.*’ diyerek kullanırsak şeklinde yaratabiliriz. Hiç ’import’ kullanmayarak aynı ifadeyi şeklinde de yazabiliriz. Bu şekilde paket ismiyle birlikte verilen sınıf isimlerine fully qualified name denir.

PAKETLER VE DERLEME BİRİMLERİ ALT PAKETLER Bazı durumlarda çok fazla sınıf içermemesi için bir paket alt birimlere bölünebilir. Örneğin, görsel bileşenler içeren ’java.awt’ paketinin resimlerle ilişkili olan 'java.awt.image' şeklinde bir alt paketi bulunmaktadır. Aslında alt paketin teknik anlamda üst paketin ’içinde’ olması söz konusu değildir. Alt paket isimlendirmesi iki 'ayrı’ paketi sadece anlamca ilişkilendirmektedir.

PAKETLER VE DERLEME BİRİMLERİ Bir sınıfta üst paketi import etmek, otomatikman alt paketlerin de import edileceği anlamına gelmez. Örneğin, ’java.awt.*’ ifadesi ’java.awt.event.*’ ifadesini içermez. Bu alt paketten herhangi bir sınıf kullanılacaksa ayrıca import edilmesi gerekir.

PAKETLER VE DERLEME BİRİMLERİ Standart Paketler Java'nın kendi API’si (Application Programming Interface - Uygulama Programlama Arayüzü) bir çok sınıftan oluştuğu için bir çok package altında gruplandırılmıştır. Bunların çoğu ’java.’ ve ’javax.’ la başlar. ’javax’ öneki daha çok, sonradan extension (ekleme) package'ler için kullanılır. Önceden ’extension’ olan paketler daha sonra standart API‘ye dahil olabilmektedir.

PAKETLER VE DERLEME BİRİMLERİ Java'nın standart paketleri benzer ve ilişkili sınıflardan oluşur. Her pakette bulunan sınıfların ezberlenmesine gerek yoktur. Sadece her pakette ne tür sınıfların bulunduğunun öğrenilmesi yeterlidir. Örneğin, arayüzle ilgili sınıflar ’java.awt’dedir. Görsel bir bileşen olarak Button bu pakettedir. Yine görsel bir bileşen olan text alanının (TextArea'nın) da bu pakette olması gayet doğaldır.

PAKETLER VE DERLEME BİRİMLERİ İsimlendirme Geleneği (Naming Convention ) Paket isimlerinin rastgele verilmesi, bir sistemde farklı kurumlara ait paketleri bulunması durumunda ’name collision' (isim çarpışması) adı verilen bir sorun yaratabilmektedir. Aynı paket ismini başka bir kurum da kullandıysa ne olacak? Örneğin siz paketin adını ’myapplets’ koydunuz. Sistemde aynı isimde başka bir kuruma ait bir paket daha var tesadüfen. Java önce hanginizinkini bulursa onu yükler. Sizinki önce bulunuyorsa onların paketi doğru çalışmaz, onlarınki önceyse sizinki.

PAKETLER VE DERLEME BİRİMLERİ Bu sorunlarla karılaşmamak için paket isimlerinde standart bir yöntem uygulanır. Bir kurum, sahip olduğu İnternet domain ismini tersten yazarak paket isimlerinin önüne ekler. Örneğin ’godoro.com’a sahip olan kurum veya kişiler, chat appletlerini 'com.godoro.chat' diye bir pakete koyabilirler. ChatApplet isimli biri sınıf için fully qualified class name 'com.godoro.chat.ChatApplet' şeklinde olur. Java’yı ortaya çıkaran 'Sun' firması da kendi paketlerini ’com.sun.’ şeklinde başlatmaktadır. Özel kuruluşlar com., ticari olmayan kurumlar da org. ile başlarlar.

PAKETLER VE DERLEME BİRİMLERİ Aynı paketteki sınıflar Aynı paketteki sınıflar birbirlerinin private olmayan property ve methodlarına, onlar public olmasala bile ulaşırlar. Ayrıca, aynı paketteki sınıfların birbirlerini ’import’ etmeleri gerekmez.

PAKETLER VE DERLEME BİRİMLERİ Derleme Birimi Sınıflar '.java' uzantılı dosyalarda bulunabilirler. Bu dosya aslında bir compilation unit (derleme birimi)dir. Bir dosyada birden fazla sınıf alt alta tanımlanabilir. Ancak en fazla bir tanesi 'public' olabilir. Ve dosyanın (derleme biriminin) adı bu public sınıfın adıyla aynı olmalıdır. Bu sınıf derleme biriminin asıl sınıfıdır ve adı değiştirildiğinde dosyanın da adı değiştirilmelidir. Tek dosyada bulunan sınıflar derlendiğinde her biri için ayrı .class üretilir. Yani derlendikten sonra sınıflar birbirinden ayrılırlar. Bir derleme biriminde sadece bir tane sınıf bulundurmak, zorunlu olmasa da bir gelenek halini almıştır.

REFERANSLAR Java’da nesneler yaratılırken her zaman için new işlecini kullanırız, çünkü nesneler her durumda dinamik bellek yerleşimi ile yaratılırlar. Java’da bütün nesnelere birer referans aracılığıyla erişiriz.

REFERANSLAR Kutu K1 = new Kutu(); Burada K1 aslında bir Kutu nesnesi değildir. Biz konuşurken kolay geldiği için öyle söylemekteyiz. Aslında K1 bir Kutu referansıdır (reference). Bir referans, somut bir nesneye bağlanabilen ve bağlandığı nesneye kendi adı ile erişim sağlayan bir değişkendir.

REFERANSLAR Java’da bir nesneye birden fazla referans ile erişip ona farklı adlar takabiliriz, ancak bir referans sadece bir nesneye bağlanır. Nesnelere referans ile erişilmesinin zorunlu olmasının asıl sebebi Java’nın daha ileride göreceğimiz nesne tabanlı programlama tekniklerinden birisi olan çok biçimlilik (polymorphism) ile ilgilidir.

REFERANSLAR

REFERANSLAR Bir kapsam içinde, bir nesneye bağlı bir referansınız yoksa, o kapsamdayken o nesneye erişemezsiniz. Hiçbir kapsamda erişilemeyen nesnelere çöplük (garbage) adını veriyoruz. Java çalışma ortamında, arada bir bu nesneler yok edilirler. Bu işleme çöplük toplama (garbage collector) adı verilir.

REFERANSLAR Bu işlemin ne zaman yapılacağını kontrol etme şansımız yoktur. Java sanal makinesinin elindeki bellek miktarına bağlı olarak, bellek sıkıntısına düştüğü zaman yaptığı bir şeydir. Küçük bir uygulamanın çalışması sırasında asla çöplük toplama gerçekleşmeyebilir.

REFERANSLAR Aşırı dinamik yapısı olan ve sürekli olarak yeni nesnelerin yaratılıp başka nesnelerin de referanslarından koptuğu büyük uygulamalarda ise çok sık olarak çöplük toplayıcısı çağrılabilir.

ÖRNEK-4

ÖRNEK-4

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 Yrd. Doç. Dr. Hilmi Küçük, Nesneye Yönelik Programlama, JAVA, Ders Notları