Kalıtım ( Inheritance ) BBS-515 Nesneye Yönelik Programlama



Benzer belgeler
İç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

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

BMÜ-112 Algoritma ve Programlama-II Inheritance (Kalıtım) Yrd. Doç. Dr. İlhan AYDIN

BİL-141 Bilgisayar Programlama I (Java)

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

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

Java da İşleçler, Ders #3 (4 Kasım 2009)

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Java da İstemci Tarafı Uygulamalar

Nesne Yönelimli Programlama

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Dizi ( Array ) ve Dizgi ( String )

Nesne Yönelimli Programlama

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

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

Programlama Dillerinde Kullanılan Veri Tipleri

Operatörlerin Aşırı Yüklenmesi

HSancak Nesne Tabanlı Programlama I Ders Notları

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

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

MOBIL UYGULAMA GELIŞTIRME

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

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Kalıtım (Inheritance)

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Malzeme Gereksinim Planlaması (MRP)

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.

ALGORİTMA İ VE PROGRAMLAMA

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

NESNEYE YÖNELİK PROGRAMLAMA

C++ Dersi: Nesne Tabanlı Programlama

Sunum İçeriği. Programlamaya Giriş

HSancak Nesne Tabanlı Programlama I Ders Notları

public static int Toplam int x, int y

7. HAFTA. Erişim Belirleyiciler

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

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

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

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

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

NESNE TABANLI PROGRAMLAMA

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

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

Java String İşlemleri

BMM3101 PROGRAMLAMA DİLLERİ

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Decorator Tasarım Şablonu

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Erişim konusunda iki taraf vardır:

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

C++ Dersi: Nesne Tabanlı Programlama

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

BİL132 Bilgisayar Programlama II

PROGRAMLAMA TEMELLERİ DERSİ

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

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

Arasınav Örnek Soruları Bahar 2018

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

ğ ğ ğ ç ç ç ğ ç ğ ğ ç ğ ğ ç ğ ç ğ ğ ğ ç ğ İ ğ ç ğ ğ ç ç ğ İ ğ ğ İ ç ğ ç ç ç ğ ç ç ğ ğ ğ ğ İ ğ İ ğ İ ğ İ İ ğ ç ç ç ğ ç ğ

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

RSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA

DEPOLAMA DERSİ Dersin Modülleri Kazandırılan Yeterlikler

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

İÇİNDEKİLER TOPLAMA YOLUYLA SAYMA YÖNTEMİ ÇARPMA YOLUYLA SAYMA YÖNTEMİ FAKTÖRİYEL

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Üst Düzey Programlama

D İ Z İ L E R A R R A Y S

Java Dersi. Altuğ Bilgin Altıntaş

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

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

BİL-141 Bilgisayar Programlama I (Java)

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6

Nesne Yönelimli Programlama

JAVADA DİZİ İŞLEMLERİ

Geoteknik Mühendisliğinde Bilgisayar Uygulamaları (CE 554) Ders Detayları

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

Çocuk, Ergen ve Genç Yetişkinler İçin Kariyer Rehberliği Programları Dizisi

Lambda İfadeleri (Lambda Expressions)

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

// hataları işaret eden referans

Ekle Menüsü İşlevleri ÜNİTE 3. Bu üniteyi çalıştıktan sonra; Ekle Menüsü Çizimler Grafikler Bağlantılar Metin

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

Nesneye Dayalı Programlama

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

YZM 2105 Nesneye Yönelik Programlama

Transkript:

Kalıtım ( Inheritance ) BBS-515 Nesneye Yönelik Programlama Ders #4 (11 Kasım 2009)

Geçen ders: Java da işleçler ( operators ) Java da kontrol-akış ( control-flow ) ve döngü ( loop ) deyimleri Java konsol programlarında basit girdi/çıktı ( input/output ) İçerikç Bu ders: Kalıtım ( inheritance ) -2- BBS-515-DN04 / 2

Kalıtım ( Inheritance )

Kalıtım ( Inheritance ) 1 Bazı sınıflar, kendi özeliklerini taşıyan özel tiplere ayrılabilir. Örnek: Bisiklet: dağ bisikleti, yarış bisikleti Dağ bisikleti ve yarış bisikleti; bisiklet sınıfının alt-sınıflarıdır ( sub-classes ). Bisiklet sınıfı; dağ bisikleti ve yarış bisikleti sınıflarının üst-sınıfıdır ( super-class ). Her alt-sınıf kendi üst-sınıfının özelliklerini ve işlevlerini taşır (kalıtım - inheritance ). Dağ ğ bisikleti ikl ve yarış bisikleti, ikl bisiklet ikl sınıfına ait özellikleri i taşır: vites, tekerlek, pedal, vb. Dağ bisikleti ve yarış bisikleti, bisiklet sınıfına ait işlevleri gösterir: hızlanma, fren yapma, vites değiştirme, vb. -4- BBS-515-DN04 / 4

Kalıtım ( Inheritance ) 2 Bir alt-sınıf, üst-sınıfından taşıdığı özelliklere ve işlevlere ek olarak; kendine ait özellikleri ve işlevleri içerebilir (tanımlayabilir). Örnek: Dağ bisikleti, tırmanmayı kolaylaştıran ek viteslere sahip olabilir. Bir alt-sınıf aynı zamanda, üst-sınıfından taşıdığı işlevleri değiştirebilir (üzerine yazma method overriding ). Örnek: Dağ bisikleti, bisiklet sınıfının vites değiştir işlevini, ek vitesleri kullanmayı sağlayacak şekilde değiştirebilir. Kalıtım sadece tek seviyeli olmak zorunda değildir, birden çok seviyede tanımlanabilir. Bir alt-sınıf her zaman, üstündeki tüm sınıfların özelliklerini ve işlevlerini taşır. Kalıtım ağacında ( inheritance tree ) aşağılara doğru inildikçe sınıfın öznelliği ğ artar. -5- BBS-515-DN04 / 5

Kalıtım ( Inheritance ) 3 Sınıflar arasındaki kalıtım, uygulamada aşağıdaki avantajları sağlar: Alt-sınıflar, üst-sınıflarının özelliklerini ve işlevlerini taşıdıklarından; programlama sırasında üst-sınıfların kodu defalarca tekrar kullanılabilir ( reuse ). Programlama sırasında genel davranışları gösteren sınıflar soyut sınıf ( abstract class ) olarak kodlanabilir. Soyutlama ( abstraction ) Soyut sınıflardan nesne oluşturulmaz. Soyut sınıflar, ilgili alt-sınıfları tanımlamak ve onlara ilişkin detayları doldurmak amacıyla kullanılırlar (tekrar kullanıma esas olarak). -6- BBS-515-DN04 / 6

Sınıflar Arasında Kalıtım İlişkisi (UML de Generalization ) Genel sınıf ile onun özel durumlarına karşılık gelen sınıflar arasındaki ilişki Ebeveyn-çocuk ilişkisi ( inheritance ) (UML) Okun yönü genel sınıfı gösterir Özel sınıflar genel sınıftan kalıtsal olarak özellikleri ve operasyonları alırlar. Ebeveyn (genel sınıf) Şekil merkez taşı() büyüt() göster() Özel sınıflar yeni özellikler ve operasyonlar tanımlayabilir veya kalıtsal yoldan aldıkları operasyonları yeniden tanımlayabilirler ( overriding ). Dikdörtgen köşe Çember yarıçap Çokgen noktalar göster() Çocuklar (özel sınıflar) -7- BBS-515-DN04 / 7

Java da Kalıtım: Örnek - 1 class Sekil { Şekil merkez class Dikdortgen extends Sekil { taşı() büyüt() göster() class Cember extends Sekil { class Cokgen extends Sekil { Dikdörtgen köşe Çember yarıçap Çokgen noktalar göster() -8- BBS-515-DN04 / 8

Java da Kalıtım: Örnek 2.1 class A { int i, j; void ijgoster () { System.out.println ( i ve j: + i + + j ); class B extends A { int k; void kgoster () { System.out.println ( k: +k); void topla () { System.out.println ( i+j+k: + (i+j+k)); -9- BBS-515-DN04 / 9

Java da Kalıtım: Örnek 2.2 class SimpleInheritanceDemo { public static void main (String args[]) { A ustnesne = new A(); B altnesne = new B(); ustnesne.i = 10; ustnesne.j = 20; Çıktı: System.out.println( ustnesne içeriği: ); ustnesne.ijgoster(); System.out.println(); // bos satir yaz ustnesne içeriği: i ve j: 10 20 altnesne içeriği: i ve j: 7 8 k: 9 altnesne.i = 7; altnesne.j = 8; altnesne.k = 9; System.out.println( altnesne içeriği: ); altnesne.ijgoster(); altnesne.kgoster(); System.out.println(); // bos satir yaz System.out.println( altnesne de i, j, ve k toplami: ); altnesne.topla(); altnesne de i, j ve k toplami: i+j+k: 24-10- BBS-515-DN04 / 10

Sınıf Çalışması ş Farklı tipteki öğrencileri (lisans öğrencisi, y.lisans öğrencisi, vb.) göstermek için, bir Öğrenci sınıfını ve ilişkili alt sınıfları Java da tanımlayın. Özelliklerini gösterin. Yöntemlerini gösterin. -11- BBS-515-DN04 / 11

Üzerine Yazma ( Method Overriding ) Bir alt sınıfta, üst sınıfa ait bir yöntemi; aynı isim, imza ve dönüş tipi ile tanımlarsak, üst sınıftaki yöntemin üzerine yazmış oluruz. Alt sınıftan nesne oluşturulduğunda yöntem çağrılırsa, üst sınıfa ait yöntem yerine, alt sınıfta tanımlanmış yöntem koşturulur. class cassoge Ogrenci { class LisansOgrencisi extends Ogrenci { protected String ad; public LisansOgrencisi (String pad) { public Ogrenci (String pad) { super(pad); ad = pad; public String bilgial() { return Ogrenci: + ad; public String bilgial() { return Lisans ogrencisi: + ad; -12- BBS-515-DN04 / 12

Neden Üzerine Yazma? - 1 Genel sınıfta, kendinden türetilen tüm sınıflarda ortak olan işlevselliği tanımlamayı sağlar. Bir üst sınıftan alt sınıflara uzanan hiyerarşiyi tanımlamanın amacı, daha az detaydan daha çok detaya doğru işlevselliği oluşturmaktır. Bu hiyerarşide üst sınıfın görevi, alt-sınıfların doğrudan kullanabilecekleri (veya üzerine yazabilecekleri) genel özellikleri ve yöntemleri tanımlamaktır. -13- BBS-515-DN04 / 13

Neden Üzerine Yazma? - 2 Calisan Sekreter maasal() Profesor Nesneye yönelik programlama yaparken koşulsal komutların mümkün olduğunca az, yöntem üzerine yazmanın ( overriding ) çok kullanılması önerilir. maasal() maasal() Üst sınıf aynı zamanda, alt sınıfları için tutarlı bir arayüz oluşturur (ortak tip) Bu sınıfları kullanan programlar, alt sınıflardan oluşturulan nesnelerin yöntemlerini, üst sınıfın yöntemlerini kullanır gibi kullanabilirler. Hangi seviyedeki sınıfın yönteminin kullanılacağına koşturma zamanında karar verilebilir ( polymorphism ). Bu özellik, if veya switch kullanımına gerek bırakmaz. Yeni bir çalışan alt sınıfı eklendiğinde mevcut kodun değiştirilmesi gerekmez. -14- BBS-515-DN04 / 14

Kalıtım ( Inheritance ) İçin ç Öneriler Kalıtım ağacında ( inheritance tree ) diplerde yer almak, miras alınan operasyon sayısını ve karmaşıklığı arttırır. Orta büyüklükte 100 sınıflı bir proje için 7 ± 2 seviyeli miras ağacı yeterli olacaktır. Çok derin veya çok sığ yapılar kötü tasarım göstergesidir. Çok sayıda IF-THEN-ELSE ve SWITCH kullanımı, operasyonun ait olduğu sınıfın kötü tasarlandığını ve inheritance yoluyla aynı işin daha iyi yapılabileceğini ğ gösterir. Miras ağacının ğ yukarısındaki sınıflar daha aşağıdaki ş ğ sınıflara bağımlı olmamalıdır. -15- BBS-515-DN04 / 15

Sağda gördüğünüz araç türleri ağacını örnek alarak, tek seviyeli kalıtım sağlayan 3 araç seçin. Bir üst sınıf, iki alt sınıf Sınıfların özellik ve yöntemlerini de gösteren kalıtım ağacını oluşturun (UML gösterimi ile). Sınıfları Java da kodlayın. Üst ve alt sınıflar arasında yöntemin üzerine yazmayı ( method overriding ) örnekleyin. Özelliklerin değerlerini yazdıran yöntemler tanımlayabilirsiniz. Uzay Aracı Hava Aracı Araç İnsan gücüyle çalışan Kara Aracı 2 tekerlekli Ödev - 2 Su Aracı Motor gücüyle çalışan 4 tekerlekli Yolcu Aracı Kargo Aracı Otomobil Sınıfları oluşturan ayrı bir demo sınıfı yazarak sınıflardan nesneler oluşturun ve yöntemlerini çağırarak özellikleri GM Ford Diğer konsolda görüntüleyin. Teslim: 24.Kasım.2009 24:00 e kadar atarhan@hacettepe.edu.tr adresine e-posta ile -16- BBS-515-DN04 / 16