Nesne Yönelimli Programlama

Benzer belgeler
Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

İki Yöntem. Komposizyon (Composition) Kalıtım (Inheritance)

7. HAFTA. Erişim Belirleyiciler

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

Nesne Yönelimli Programlama

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6

BİL-141 Bilgisayar Programlama I (Java)

SINIFLARIN TEKRAR KULLANILMASI

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

Erişim konusunda iki taraf vardır:

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Java Dersi. Altuğ Bilgin Altıntaş

Ana sınıf içerisinde tanımlanmış bir yordam, ana sınıftan türeyen bir alt sınıfın içerisinde iptal edilebilir. ()

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

YZM 2105 Nesneye Yönelik Programlama

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

NESNE TABANLI PROGRAMLAMA

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

Kalıtım (Inheritance)

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 7

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

YZM 2105 Nesneye Yönelik Programlama

Nesne Yönelimli Programlama

Sunum İçeriği. Programlamaya Giriş

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 4. Yrd.Doç.Dr.Hacer Karacan

Nesne Yönelimli Programlama

BİL-142 Bilgisayar Programlama II

Nesne Yönelimli Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

BTEP243 Ders 3. class Yazım Kuralı:

Ders 8 Konu Özeti ve Problemler

SINIFLARIN TEKRAR KULLANILMASI

SINIFLARIN TEKRAR KULLANILMASI

Java ve Yazılım Tasarımı ; Bölüm- 4 PAKET ERİŞİMLERİ

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

İş Parçacıkları (Threads)

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Nesneye Yönelik Programlama (OOP) 7.Hafta

POLIMORFIZM. Java ve Yazılım Tasarımı ; Bölüm- 6. Örnek: PolimorfizmOrnekBir.java (yorum ekle)

Nesne Yönelimli Programlama

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

BMM3101 PROGRAMLAMA DİLLERİ

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Nesne Yönelimli Programlama ve Kalıtım

Java Programlamada Paket Yapısı Ve Import

Başlangıç Durumuna Getirme ve Temizlik. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 3

public static int Toplam int x, int y

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Java Class Yapısında Finalize Metotunun Kullanımı

Yeni G/Ç (new I/O) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 1

Operator Aşırı Yükleme (Operator OverLoading)

C++ Dersi: Nesne Tabanlı Programlama

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2105 Nesneye Yönelik Programlama

Göstericiler (Pointers)

SINIF YAPISI ve NESNE YÖNELİMLİ PROGRAMLAMA NESNE YÖNELİMLİ PROGRAMLAMA

NESNE TABANLI PROGRAMLAMA Temel Kavramlar

Pointer Kavramı. Veri Yapıları

Nesne Tabanlı Programlama

Nesneye Dayalı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

C++ ile Nesneye Dayalı Programlama

Üst Düzey Programlama

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

İstisnalar (Exceptions) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 1

3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Öğr. Gör. Serkan AKSU 1

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

YZM 2105 Nesneye Yönelik Programlama

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

MOBIL UYGULAMA GELIŞTIRME

Inheritance. Inheritance (turetim)

3. NESNE TABANLI PROGRAMLAMANIN PRENSİPLERİ

1. SINIFLAR Sınıf (Class) Mantığı

YZM 2105 Nesneye Yönelik Programlama

MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI

BİL-141 Bilgisayar Programlama I (Java)

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

Programlama Dillerinde Kullanılan Veri Tipleri

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Görsel Programlama-I (Visual Programming) 2.Hafta

Java Programlama Interface ( Arayüzler )

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Transkript:

1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya Yayıncılık, 2016 kitabı kullanılarak hazırlanmıştır. Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği

2 Kompozisyon Uygulamalarda önceden yazılmış sınıfları tekrar kullanmak için iki yöntem vardır: Kalıtım (inheritance) ile önceden yazılmış sınıflar yeni yazılan sınıfın içerisinde doğrudan kullanılabilir. Kalıtım ile yeni bir sınıf önceden yazılmış başka bir sınıftan türetilebilir. Yeni türetilen bir sınıf türetildiği sınıfın özelliklerine sahip olur. Yeni türetilen bir sınıf türetildiği sınıfın özelliklerini değiştirerek kullanabilir. Yeni türetilen sınıfın kendisine ait yeni özellikleri de tanımlanabilir. 3 Kompozisyon Aşağıdaki örnekte Elma sınıfı, Meyve sınıfını doğrudan kendi içerisinde tanımlayarak, Meyve sınıfının içerisindeki erişilebilir olan özellikleri kullanabilir. Burada, Elma sınıfının içinde Meyve sınıfından bir nesne oluşturulmuştur. 4

3 Kompozisyon AileArabasi içinde Motor sınıfı ile nesne oluşturuldu. AileArabası sınıfının hareketet() ve dur() metotlarında, önce Motor sınıfına ait yordamlar çağrılmıştır. Motor sınıfında private olan motor_gucu alanına erişilemez. 5 Kompozisyon Voltran isimli robot 6 farklı sınıf ile oluşturulmuştur. 6

4 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği Kalıtım Kalıtım, nesneye yönelik programlamanın en önemli kavramlarındandır. Kalıtım bir sınıftan diğer bir sınıfın türetilmesidir. Yeni türetilen sınıf, türetildiği sınıfın global alanlarına ve yordamlarına (statik veya değil) otomatik olarak sahip olur (private olanlar hariç). Yeni türetilen sınıf, türetildiği sınıfın private global alanlarına ve yordamlarına (statik veya değil) erişim hakkına sahip olamaz. Yeni türetilen sınıf türetildiği sınıf ile ayrı paketlerde ise, sadece public ve protected global alanlar (statik veya değil) ve yordamlara (statik veya değil) erişim hakkına sahip olur. 8

5 Kalıtım Aşağıdaki örnekte, her Kaplan bir Kedi dir. Her kaplan kedi nin özelliklerini taşıyacaktır. Her kaplan kedi nin özelliklerinin üzerine kendisine ait özellikleri eklemiştir. Her sınıfın içerisine main yordamı yazılarak tek başlarına çalışabilir hale getirilebilir. 9 Kalıtım Kaplan sınıfı yakalaav() ve ayaksayisi özelliklerini Kedi sınıfından miras almıştır. Kedi sınıfının ayaksayisi alanı protected erişime sahiptir. Aynı pakette olan sınıflar ve ayrı pakette olup bu sınıftan türetilmiş sınıflar erişebilir. Kaplan sınıfı ile Kedi sınıfı aynı pakette olmasa da, Kedi sınıfına ait global int tipindeki ayaksayisi na erişebilir. 10

6 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği Gizli Kalıtım Oluşturulan her yeni sınıf otomatik ve gizli olarak Object sınıfından türetilir. Object sınıfı Java programlama dili içerisinde kullanılan tüm sınıfların en üstünde bulunur. Örnekte, tostring() ve equals() yordamları olmamasına rağmen bu yordamları Object class ından alır. Yeni bir sınıf tanımlandığında, Java gizli ve otomatik olarak extends Object yapar. 12

7 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği Kalıtım ve İlk Değer Alma Sırası Kalıtım (inheritance), bir sınıftan başka bir sınıf kopyalamak değildir. Kalıtım, türeyen bir sınıfın türetildiği sınıfa ait erişilebilir olan özellikleri alması, ayrıca kendisine ait özellikleri tanımlayabilmesi anlamına gelir. Bir sınıfa ait nesne oluşurken, ilk önce bu sınıfa ait yapılandırıcı (constructor) çağrılır. Bir nesne oluşmadan önce, türetildiği sınıfın nesnesi oluşturulmaya çalışılır. Bu oluşturulma işlemi türetilen sınıflarla zincirleme devam eder en sonunda Object sınıfına ulaşılır. Önce Object sınıfından nesne oluşturulur ve en son türetilene doğru devam eder. 14

8 Kalıtım ve İlk Değer Alma Sırası UcanYarasa nesnesinden önce, Yarasa sınıfının, ondan önce Hayvan sınıfının yapılandırıcısı çalıştırılacaktır. 15 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği

9 Parametre Alan Yapılandırıcılar ve Kalıtım Ana sınıfa ait yapılandırıcı çağırma işlemi, varsayılan yapılandırıcılar için otomatik olarak yürütülür. Ancak, parametre alan yapılandırıcılar için doğrudan çağırmak gereklidir. Ana sınıfın parametre alan yapılandırıcısını açık olarak super anahtar kelimesi ile çağırmak gereklidir. this anahtar kelimesinin kullanılışında olduğu gibi, super anahtar kelimesi de içinde bulunduğu yapılandırıcının ilk satırında yer almalıdır. 17 Parametre Alan Yapılandırıcılar ve Kalıtım 18

10 Parametre Alan Yapılandırıcılar ve Kalıtım super ile ilk satırda olmayan hatalı çağırma. 19 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği

11 Kompozisyon ve Kalıtım Yeni oluşturulan sınıfın içerisinde, önceden yazılmış sınıfların özelliklerinden faydalanmak için kompozisyon ve kalıtım kullanılabilir., önceden yazılmış sınıfların özelliklerini kullanmak için basit bir yöntemdir. Kalıtım, önceden yazılmış bir sınıfın, belli bir problem için yeni versiyonunu yazma işleminde kullanılabilir. Kalıtımda türetilen sınıf ile türeyen sınıf arasında bir ilişki olmalıdır (Kedi ve Kaplan, Bisiklet ve Motosiklet). 21 Kompozisyon ve Kalıtım 22

12 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği Overriding Ana sınıf içerisinde tanımlanmış bir yordam, ana sınıftan türetilen bir alt sınıfın içerisinde iptal edilebilir (overriding). Türeyen bir sınıf türetildiği sınıfa ait global alanları (statik veya değil) ve yordamları (statik veya değil) kullanabilir. Ana sınıfa ait private erişim belirleyicisine sahip olan alanlara ve yordamlara, türeyen alt sınıf tarafından erişilemez. Türetilen alt sınıf, türetildiği ana sınıf ile aynı paket içerisinde değilse, ana sınıfa ait friendly olan alanlara ve yordamlara erişemez. Sadece protected erişim belirleyicisine sahip olan alanlara ve yordamlara erişebilir. 24

13 Overriding Overriding yapılmamış sınıf yordamlarının kullanımı. 25 Overriding sayfasayisiogren() ve fiyatogren() yordamları hem ana sınıfta hem de türetilen sınıfta yazılmıştır. Bu yordamlardan türetilen sınıftakiler geçerlidir. 26

14 Overriding İptal eden yordamın, iptal edilen yordamın erişim belirleyicisi ile aynı veya daha yüksek erişilebilir bir erişim belirleyicisine sahip olması gereklidir. En yüksekten en düşüğe doğru erişim belirleyicileri: public: Her yerden erişilmeyi sağlayan erişim belirleyicisidir. protected: Bu sınıftan türetilmiş alt sınıflar tarafından erişilmeyi sağlayan erişim belirleyicisidir. friendly: Sadece aynı paket içerisinden erişilmeyi sağlayan erişim belirleyicisidir. private: Sadece kendi sınıfı içerisinden erişilmeyi sağlayan, başka her yerden erişimi olmayan erişim belirleyicisidir. Ana sınıfa ait public a() yordamı varsa, türetilen alt sınıfın public a() yordamını overriding yapması gerekir. Ana sınıftaki protected için public veya protected overriding yapılmalıdır. 27 Overriding protected private overriding yanlıştır. friendly protected overriding doğrudur. 28

15 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği Overload Ana sınıftaki bir yordama, türetilen bir alt sınıfın içerisinde adaş yordam yazılabilir (overload). Adaş yordamlarda parametre türleri/sayıları farklı olmalıdır. 30

16 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği Upcasting Türetilen bir sınıf nesnesi türetildiği sınıf nesnesi yerine kullanılabilir (upcasting). 32

17 Konular Kalıtım Gizli Kalıtım Kalıtım ve İlk Değer Alma Sırası Parametre Alan Yapılandırıcılar ve Kalıtım ve Kalıtım Overriding Overload Upcasting Final Özelliği Final Özelliği Java programlama dilinde final anahtar kelimesi değiştirilemez olmayı gösterir. Global alanlara, yordamlara ve sınıflara final özelliğini uygulanabilir. Global alanlar için final özelliği sabit değer özelliğini sağlar. Global sabit alanlar (statik veya statik değil) final özelliğine sahip olabilir. Final global alanlara sadece bir kez değer atanabilir. Global olan final alanlar ikiye ayrılabilir: Derleme anında değerleri atanan final global alanlar. Çalışma anında değerleri aranan final global alanlar. 34

18 Final Özelliği X_SABIT_DEGER ve Y_SABIT_DEGER alanları derleme anında, A_SABIT_DEGER alanının değeri çalışma anında atanır. Nesne final yapılırsa adresi sabitlenir ve başka bir nesneye bağlanamaz. fo.k = new Kutu(); hatalıdır. 35 Final Özelliği (final alanlar) Boş final alanlara ve nesnelere ilk değerleri yapılandırıcıların içerisinde verilmelidir. 36

19 Final Özelliği (final yordamlar) Final yordamlar overriding yapılamazlar. 37 Final Özelliği (final yordamlar) private final yordamlar overriding yapılmazlar. 38

20 Final Özelliği (final sınıflar) final sınıflardan yeni sınıf türetilemez. 39