Inheritance. Inheritance (turetim)



Benzer belgeler
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

C ++ Ders 6. Çoklubenzesim

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

C++ Dersi: Nesne Tabanlı Programlama

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Ne zaman operator overloading yapilir. Operator Overloading

const objects & const member functions const objects ve const functions Data Member Initializer List Data Member Initializer List

C++ ile Nesneye Dayalı Programlama

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

C++ Dersi: Nesne Tabanlı Programlama

BTEP243 Ders 3. class Yazım Kuralı:

C++ Dersi: Nesne Tabanlı Programlama

Operatörlere İşlev Yükleme

#ifndef COMPLEX_H #define COMPLEX_H

Pros and Cons of Pointers. Pointers. Avantajlar. Dezavantajlar

1 PROGRAMLAMAYA GİRİŞ

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

const objects & const member functions

Object-Oriented Programming Laboratuvar 11

Kalıtım (Inheritance)

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

Nesne Yönelimli Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

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

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok.

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

C++ Dersi: Nesne Tabanlı Programlama

BİL-142 Bilgisayar Programlama II

#ifndef FATURA_H #define FATURA_H

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

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

KONU 7: DOSYA İŞLEME ( File Processing )

Nesne Yönelimli Programlamaya Giriş - 2. Cem Ahmet MERCAN 16/04/2009

NESNEYE YÖNELİK PROGRAMLAMA

Object-Oriented Programming Laboratuvar 10

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Erişim konusunda iki taraf vardır:

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

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

Ders 8 Konu Özeti ve Problemler

BİLG Dr. Mustafa T. Babagil 1

NESNEYE YÖNELİK PROGRAMLAMA

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

Nesneye Dayalı Programlama

YZM 2105 Nesneye Yönelik Programlama

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Yordamsal Tabanlı Programlama

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

Nesneye Yönelik Programlama (OOP) 7.Hafta

Spring Framework Eğitimi

C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References)

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

Bölüm 9 Nesneye-Dayalı Programlama: Miras (Inheritance)

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Object-Oriented Programming Lab Shape, TwoDShape, ThreeDShape, Disk, Square, Sphere, Cube class hiyerarşisi.

KALITIM. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ

Çok Şekillilik (Polymorphism)

Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

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

#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

10/17/2007 Nesneye Yonelik Programlama 3.1

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

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

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

İç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.

NESNEYE YÖNELİK PROGRAMLAMA

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

BİL-142 Bilgisayar Programlama II

NESNE TABANLI PROGRAMLAMA

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

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.

C++ Dersi: Nesne Tabanlı Programlama

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

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

Yazılım Kodlama ve İ simlendirme Standartları v1.0

The statement. const Time noon( 12, 0, 0 );

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

MOBIL UYGULAMA GELIŞTIRME

7. HAFTA. Erişim Belirleyiciler

Fall Object-Oriented Programming Laboratory 03

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

Karma C/C + + Kodlama

BMH-303 Nesneye Yönelik Programlama

C++ Dersi: Nesne Tabanlı Programlama

Operatörlerin Aşırı Yüklenmesi

Ön program (elin yazma hizi ile): 0 - Genel hata: C kastedip C++ demek 1 - C++ kutuphanesi kullanmak!= C++ programlamak 2 - Class kutuphanesi

public static int Toplam int x, int y

Kurucu Fonksiyonlar (Constructors)

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

Transkript:

Inheritance (turetim) Bir cok problemin cozumu icin belirlenen class lar hierarsik bir yapi seklinde organize edilebilir C++ gibi bir cok Object-oriented diller class benzerliklerinin etkin bir sekilde kullanilmasi icin ozellikler sunarlar Software re-use (yeniden kullanim) Software muhendislerinin veriminin artirilmasi Inheritance Inheritance: daha genel base class lardan yeni class larin create edilmesini saglar. Yeni derived class olusturmak icin, base class in attribute leri (data member) ve davranislari (member fonksiyonlar) absorb edilir, degistirilir, veya gerekirse yenileri eklenir 12/23/2004 Nesneye Yonelik Programlama 9.1 12/23/2004 Nesneye Yonelik Programlama 9.2 12/23/2004 Nesneye Yonelik Programlama 9.3 12/23/2004 Nesneye Yonelik Programlama 9.4

Base Class & Derived Class Base Class: Daha once var olan ve yeni class larin kullanabilecegi, degistirebilecegi, ve/veya gelistirebilecegi data member lara ve member fonksiyonlara sahip class Derived Class: Base class dan turetilen yeni class. Base class in elementleri ni degistirmeksizin kullanabilir veya degistirip kullanabilir. Base class da olmayan yeni data member lar ve member fonksiyonlar eklenebilir Ayni class ayni anda hem base class ve hemde derived class olabilir 12/23/2004 Nesneye Yonelik Programlama 9.5 Inheritance hakkinda bazi gozlemler Derived class genel olarakbase class dan daha kucuk nesnelerin set ini temsil eder Derived class in object leri base class a gore genelde daha fazla attribute lara ve member fonksiyonlara sahip Bazi durumlarda multiple inheritance (coklu turetim) single inheritance (tekli turetim) a tercih edilebilir Base class iki veya daha fazla class tan data member lar ve member fonksiyonlar temin eder 12/23/2004 Nesneye Yonelik Programlama 9.6 Inheritance Sekilleri Uc tip inheritance public (en yaygin olani) protected private Syntax: class <derived_class> : public <base_class> { Ornek class UndergraduateStudent : public Student { ; 12/23/2004 Nesneye Yonelik Programlama 9.7 public inheritance in ozellikleri Base class in public ve protected member lari derived class in public ve protected member lari olarak inherit edilir Base class in private memberlarina derived class tan erisilemez friend fonksiyonlari inherit edilemez Derived class in object leri ayni zamanda base class in object leridir (tersi dogru degil) 12/23/2004 Nesneye Yonelik Programlama 9.8

Base Class in protected member lari public member lar inherited class fonksiyonlari tarafindan erisilebilirler Hem base class in hem de derived class tan tureyen class larin friend fonksiyonlari tarafindan erisilebilirler Program icerisindeki diger fonksiyonlar tarafindan erisilemezler 12/23/2004 Nesneye Yonelik Programlama 9.9 Ornek: Point ve Circle class lari // File point.h #ifndef POINT_H #define POINT_H class Point { friend ostream &operator<<(ostream &, const Point &); public: Point( int =0, int = 0); void setpoint (int, int); int getx( ) const {return x; int gety( ) const {return y; protected: int x,y; ; #endif 12/23/2004 Nesneye Yonelik Programlama 9.10 // File point.cpp #include <iostream.h> #include point.h Point::Point( int a, int b) { setpoint(a,b); void Point::setPoint( int a, int b) { x = a; y = b; ostream &operator<< (ostream &output, const Point &p) { output << [ << p.x <<, <<p.y << ] ; return output; // enable cascaded calls Point a,b.c cout << a <<b <<c; 12/23/2004 Nesneye Yonelik Programlama 9.11 // File circle.h #ifndef CIRCLE_H #define CIRCLE_H #include <iostream.h> #include <iomaip.h> #include point.h class Circle : public Point { friend ostream &operator<< (ostream &, const Circle &); puclic: Circle( double r=0.0, int x=0; int y = 0); void setradius (double); double getradius( ) const; double area( ) const; protected: double radius: ; #endif 12/23/2004 Nesneye Yonelik Programlama 9.12

// File circle.cpp #include circle.h Circle::Circle (double r, int a, int b) : Point (a,b) // call for base class constructor { setradius ( r ); void Circle::setRadius(double r) { radius = (r >= 0? r : 0 ); double Circle::getRadius( ) const { return radius; double Circle::area( ) const { return 3.14159 * radius * radius; 12/23/2004 Nesneye Yonelik Programlama 9.13 // hala circle.cpp file indeyiz ostream &operator<< (ostream &output, const Circle &c) { output << Center = << static_cast <Point> ( c ) << ; Radius = << setiosflags (ios::fixed ios::showpoint ) << setprecision(2) << c.radius; return output; // enables cascaded calls // circle.cpp file in sonu 12/23/2004 Nesneye Yonelik Programlama 9.14 // File driver.cpp # include <iostream.h> #include <iomanip.h> #include point.h #include circle.h using namespace std; int main( ) { Point *pointptr = 0, p(30,50); Circle *circleptr = 0; c (2.7, 120, 89); cout << Point p: << p << \ncircle c: << c << \n ; pointptr = &c; cout << \ncircle c (via *pointptr): << *pointptr << \n ; 12/23/2004 Nesneye Yonelik Programlama 9.15 pointptr = &c; circleptr = static_cast < Circle * > (pointptr); cout << \ncircle c (via *circleptr):\n << *circleptr << \n Area of c (via CirclePtr): << circleptr->area( ) << \n ; // DANGEROUS: Treat a Point as a circle pointptr = &p; circleptr = static_cast< Circle *>(pointptr); cout << \npoint p (via *circleptr):\n << *circleptr << \narea of object circleptr points to: << circleptr->area( ) << endl; return 0: 12/23/2004 Nesneye Yonelik Programlama 9.16

Derived Class Pointer lerin Base Class Pointer lere cevrimi Derived class pointer daima base class pointer e atanabilir. Gerekli type cevrimi explicit casting e ihtiyac duyulmaksizin compiler tarafindan yerine getirilir. Base class member fonksiyonlari base class pointeri ne dereference edilmek suretiyle cagrilir Boyle bir derived class object ine point eden base class pointer kullanildiginda, base class ta olmayan derived class data member ve member fonksiyonlari goz onunde tutulmaz 12/23/2004 Nesneye Yonelik Programlama 9.17 12/23/2004 Nesneye Yonelik Programlama 9.18 Base Class Pointer lerin Derived Class Pointer lara Donusumu Base class pointer in derived class pointer e donusturulmesi potansiyel olarak tehlike teskil eder Pointer kullanilarakderived class member lara erisilmeye calisilabilir Bu programin crash olmasina veya object de garip degerlerin gorulmesine sebep olabilir C++ static_cast operator kullanilarak bu cevrimin yapilmasina olanak verir 12/23/2004 Nesneye Yonelik Programlama 9.19 Member Fonksiyonlarin Kullanimi Derived class fonksiyonlari public ve protected olarak tanimlanan base class in member larini kullanabilir Ancak, derived class fonksiyonlari private base class data member lari veya member fonksiyonlari kullanamaz. Eger kullanilsa idi data encapsulation prensibine ters duserdi 12/23/2004 Nesneye Yonelik Programlama 9.20

Base-Class Member lara Overriding Derived class lar serbestce base class in public ve protected member larini inherit edebilirler. Eger bu member lardan bazilarina ihtiyac yoksa Derived class ayni decleration i kullanmak suretiyle base class member ine overriding yapabilir. Eger bu yapilirsa, base class member :: operator u ile erisilebilir. Eger scope operator u kullanilmamissa, yeni member erisilecek anlamina gelir Eger derived class member fonksiyonu base class member fonksiyonu ile ayni isme sahip fakat farkli parameter list e sahipse, base member fonksiyon overload edilmis olur, override edilmis degil 12/23/2004 Nesneye Yonelik Programlama 9.21 12/23/2004 Nesneye Yonelik Programlama 9.22 12/23/2004 Nesneye Yonelik Programlama 9.23 12/23/2004 Nesneye Yonelik Programlama 9.24

12/23/2004 Nesneye Yonelik Programlama 9.25 12/23/2004 Nesneye Yonelik Programlama 9.26 12/23/2004 Nesneye Yonelik Programlama 9.27 12/23/2004 Nesneye Yonelik Programlama 9.28

public, protected, & private Inheritance Public inheritance is-a relationship (iliski) olusturur (derived class object i base class in object i dir) C++ ayrica diger iki cesit inheritance e destek verir: protected ve private. Her ikisi de is-a iliskisi belirlemez protected inheritance de base class in public member lari derived class in protected member lari olur private inheritance de, base class in public ve protected member lari derived class in private Base class in public m. Protected Private Inheritance cesitleri public inheritance Derived class. public Protected Private protected inheritance protected Protected Private private inheritance private private private member lari olur. 12/23/2004 Nesneye Yonelik Programlama 9.30 12/23/2004 Nesneye Yonelik Programlama 9.29 Direct & Indirect Base Class Direct base class: derived class in bulundugu sviyenin bir ust seviyesindeki base class. Dirrect class derived class in decleration da : sembolunu izlemek suretiyle belirlenir Indirect base class: base class in bulundugu seviyeden iki veya daha fazla seviye ustte olan base class. Indirect base class derived class in decleration inda gorulmez. Constructor ve Destructor Diger member fonksiyonlarin tersine, base class in constructor ve destructor u derived class tarafindan inherit edilmezler Base class constructor ve destructor derived class inn constructor ve destructor u tarafindan cagrilabilirler Object create edilirken base class constructor u kullanilarak base class kisimlari olusturulur 12/23/2004 Nesneye Yonelik Programlama 9.31 12/23/2004 Nesneye Yonelik Programlama 9.32

Object Assignment Kurallari <base_class_object> = <derived_class_object> Derived class object base class object e atanabilir ve tip cevrimi otomatik olarak gerceklenir Cevrimden sonra derived class member lar artik erisilemez <derived_class_object> = <base_class_object> Default olarak izin verilmez (tehlikeli olabilir) Overloaded assignment operator ve/veya conversion constructor tarafindan gerceklenebilir 12/23/2004 Nesneye Yonelik Programlama 9.33 Inheritance Software gelistirmede sirasinda base class in sadece object code una ve base class in class decleration in oldugu header file ihtiyac duyulur Derived class da code degisimi base class da code degisimini gerektirmez Private base class code unu degistirmek derived class code unu degistirmeyi gerektirmez, fakat derived class code un yeniden re-compile edilmesi gerekebilir. 12/23/2004 Nesneye Yonelik Programlama 9.34 Inheritance Unified Modeling Language (UML) is-a relationship (inheritance) Derived class in object I ayni zamanda base class in object I, fakat degistirilmis class memberlari ve/veya yeni class member lari ile Ornek: UndergraduateStudent is-a Student has-a relationship (composition) Class in object i baska bir class in bir veya daha fazla object ini icerir Ornek: Calendar object Day ve Date object i icermesi UML icerikleri Class diagrams Interaction diagrams Package diagrams State diagrams Activity diagrams Deployment diagrams Class diagrams Class a ait bilgilerin grafiksel gorunumu Name Attributes methods 12/23/2004 Nesneye Yonelik Programlama 9.35 12/23/2004 Nesneye Yonelik Programlama 9.36

12/23/2004 Nesneye Yonelik Programlama 9.37 12/23/2004 Nesneye Yonelik Programlama 9.38 12/23/2004 Nesneye Yonelik Programlama 9.39 12/23/2004 Nesneye Yonelik Programlama 9.40

12/23/2004 Nesneye Yonelik Programlama 9.41 12/23/2004 Nesneye Yonelik Programlama 9.42 12/23/2004 Nesneye Yonelik Programlama 9.43 12/23/2004 Nesneye Yonelik Programlama 9.44

12/23/2004 Nesneye Yonelik Programlama 9.45 12/23/2004 Nesneye Yonelik Programlama 9.46 Multiple (coklu) inheritance Bazi problemler icin bir class i iki veya daha fazla base class dan turetmek gerekebilir C++ multiple inheritance e izin verir Pratikte multiple inheritance kullanimi zor olabilir cunku ambiquity e sebep olur (Hangi base class in member inin cagrilmasi hususunda) 12/23/2004 Nesneye Yonelik Programlama 9.47 12/23/2004 Nesneye Yonelik Programlama 9.48

12/23/2004 Nesneye Yonelik Programlama 9.49 12/23/2004 Nesneye Yonelik Programlama 9.50 12/23/2004 Nesneye Yonelik Programlama 9.51 12/23/2004 Nesneye Yonelik Programlama 9.52

12/23/2004 Nesneye Yonelik Programlama 9.53 12/23/2004 Nesneye Yonelik Programlama 9.54