C++ Dersi: Nesne Tabanlı Programlama

Benzer belgeler
C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

BTEP243 Ders 3. class Yazım Kuralı:

NESNEYE YÖNELİK PROGRAMLAMA

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

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

NESNEYE YÖNELİK PROGRAMLAMA

DERSİN WEB SİTESİ:

C++ Dersi: Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

Nesneye Yönelik Programlama (OOP) 7.Hafta

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

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

YZM 2105 Nesneye Yönelik Programlama

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

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

1 PROGRAMLAMAYA GİRİŞ

Örnek1: #include <iostream> #include <string> using namespace std;

BMH-303 Nesneye Yönelik Programlama

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

Kurucu Fonksiyonlar (Constructors)

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.

Sunum İçeriği. Programlamaya Giriş

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

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading)

C++ Dersi: Nesne Tabanlı Programlama

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

Ders 8: Metotlar. barisgokce.com

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Diziler (Arrays) Çok Boyutlu Diziler

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

NESNE MODELLERİ : SINIFLAR

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

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

BİL-142 Bilgisayar Programlama II

NESNEYE YÖNELİK PROGRAMLAMA

8. İŞARETCİLER (POINTERS)

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

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

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

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

Hafta 13 Fonksiyonlar

C++ Operatörler (Operators)

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Operatörlere İşlev Yükleme

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

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

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

public static int Toplam int x, int y

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

C++ ile Nesneye Dayalı Programlama

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

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

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ü

Pointer Kavramı. Veri Yapıları

Fonksiyonlar (Altprogram)

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Bölüm 9. Altprogramlar ISBN

ELN1001 BİLGİSAYAR PROGRAMLAMA I

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Fonksiyon Türleri. Bildiğiniz gibi, C++'da iki fonksiyon türü ile karşılaşıyoruz. C++'nın kullanıma sunduğu hazır fonksiyonlar.

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Nesne Tabanlı Programlama

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

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

Lambda İfadeleri (Lambda Expressions)

Programlama Dilleri III 1

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

ALGORİTMA VE PROGRAMLAMA II

Nesne Yönelimli Programlama

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;

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

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

10/17/2007 Nesneye Yonelik Programlama 3.1

11- FONKSİYONLAR (FUNCTIONS)

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

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

#ifndef COMPLEX_H #define COMPLEX_H

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

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

Kalıtım (Inheritance)

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

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

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

BİL-142 Bilgisayar Programlama II

BİLG Dr. Mustafa T. Babagil 1

Transkript:

C++ Dersi: Nesne Tabanlı Programlama Bölüm 10: Yapıcı ve Yıkıcı Fonksiyonlar

Yapıcı Fonksiyonlar İçerik Yapıcı Fonksiyon Tanımı Üyelere İlk Atama Yapıcı Fonksiyonu Yükleme Yapıcı Fonksiyon Çağırımı Kopya Yapıcı Fonksiyon Otomatik Üye Atamaları Yıkıcı Fonksiyonlar 2

Yapıcı Fonksiyon İng. constructor Bir nesnenin tanımında bu nesne üyelerine ilk değer ataması yapmak için kullanılan özel fonksiyonlardır Bir nesne tanımlandığında otomatik olarak çalışır. Yapıcı fonksiyon yazarken dikkat edilmesi gereken hususlar: Yapıcı fonksiyonun ismi sınıf ismi ile aynı olmalıdır. Yapıcı fonksiyonların döndürme tipi yoktur. Nesne tanımı yapıldığında otomatik olarak çağırıldıkları için yapıcı fonksiyonları özel olarak çağırmaya gerek yoktur. 3

Örnek //yapıcı fonksiyon kullanılmadığı durum #include <iostream> using namespace std; class Dikdortgen int en,boy; public: void ata(int e,int b)en=e; boy=b; int alan() return en*boy; ; int main() x isimli bir dikdörtgen nesnesi Dikdortgen x; x.ata(5,10); cout<< Alan= <<x.alan()<<endl; return 0; x in enine 5, boyuna 10 atanır en 5 boy 10 ata() alan() x 4

Örnek //yapıcı fonksiyon kullanan çözüm #include <iostream> using namespace std; class Dikdortgen int en,boy; public: Dikdortgen(int e,int b) en=e; boy=b; int alan() return en*boy; ; int main() Dikdortgen x(5,10); cout<<"alan= "<<x.alan()<<endl; return 0; yapıcı fonksiyon tanımı x adlı bir dikdörtgen tanımlanır ve yapıcı çağırılır ÇIKTI Alan=50 5

Açıklama Yapıcı fonksiyon tanımı: Dikdortgen(int e,int b)en=e; boy=b; Yapıcı fonksiyon çağrımı: Dikdortgen x(5,10); Yapıcı fonksiyonun ismi (Dikdortgen) sınıf ismi ile aynıdır. Yapıcı fonksiyonun döndürme tipi tanımlanmamıştır. ata() fonksiyonunda olduğu gibi e ve b parametrelerini en ve boy üyelerine atamakla görevlidir. Yapıcı fonksiyonları public olarak tanımlamayı unutmamamız gerekir, aksi takdirde otomatik olarak çağırılmaları mümkün olamaz. 6

Örnek class Nokta ; int x,y; public: int main() Nokta(int a=0,int b=0)x=a;y=b; int xdegeri()return x; Nokta bir(12,6); Nokta iki(25); Nokta uc; cout<<"bir'in x koordinati: "<<bir.xdegeri()<<endl; cout<<"iki'nin x koordinati: "<<iki.xdegeri()<<endl; cout<<"uc'un x koordinati: "<<uc.xdegeri()<<endl; return 0; yapıcı fonksiyon tanımı bir nesnesi yaratılır ve yapıcı çağırılır iki nesnesi yaratılır ve yapıcı çağırılır uc nesnesi yaratılır ve yapıcı çağırılır ÇIKTI bir in x koordinati: 12 iki nin x koordinati: 25 uc un x koordinati: 0 7

Açıklama Nokta bir(12,6); Nokta iki(25); Nokta uc; bir nesnesi için yapıcı fonksiyona 2 parametre, iki nesnesi için 1 parametre yollanır, uc nesnesi için ise hiç bir parametre gönderilmez. Bu durumda iki ve uc nesneleri için varsayılan değerler kullanılır ve bu nesneler aşağıdaki şekilde oluşur. x 12 x 25 x 0 y 6 Nokta() xdegeri() bir y 0 Nokta() xdegeri() iki y 0 Nokta() xdegeri() uc 8

Varsayılan Yapıcı Fonksiyon İng. Default constructor Hiç parametresi olmayan yapıcı fonksiyonlardır Ogrenci(); varsayılan yapıcı fonksiyon Ogrenci::Ogrenci()... Varsayılan yapıcı fonksiyon tanımı 9

Üyelere İlk Atama İng. Member initialization Yapıcı fonksiyonlarında atama operatörünü (=) kullanmadan nesne üyelerine ilk değerlerini atamaya üyelere ilk atama adı verilir. Bir sınıfın sabit, referans ve nesne üyelerine sadece ilk atama ile değer verilebilir 10

Örnek class Basit int i; float f; public: Basit(int,float); ; Basit::Basit(int a,float b) i=a; f=b; int main() Basit nsn(1,2.5); return 0; = operatörü ile atama Basit::Basit(int a,float b):i(a),f(b) İlk atama yöntemi 11

Yapıcı Fonksiyonunu Yükleme Yapıcı fonksiyonlar, farklı parametrelerle birden fazla tanımlanabilir Eleman(); Eleman(int i,string s):no(i),isim(s); Eleman e1; 1. yapıcı fonksiyon 1. yapıcı çağrılır Eleman e2(123,"ali"); 2. yapıcı fonksiyon 2. yapıcı çağrılır 12

Yapıcı Fonksiyonunu Yükleme... Eğer bir sınıfta hiçbir yapıcı fonksiyon tanımlanmamışsa, derleyici otomatik olarak içi boş bir varsayılan yapıcı fonksiyon tanımlar. Ama eğer sınıfta başka bir yapıcı fonksiyon tanımı yapıldıysa, varsayılan fonksiyon otomatik olarak yaratılmaz. 13

Örnek class Eleman ; int no; string isim; class Eleman int no; string isim; public: Eleman(int _no,string _isim) :no(_no),isim(_isim); ; Eleman e; Eleman e; class Eleman int no; string isim; public: Eleman() Eleman(int _no,string _isim) :no(_no),isim(_isim); ; Eleman e; 14

Yapıcı Fonksiyon Çağırımı Yapıcı fonksiyonlar nesne tanımı yapıldığı sırada otomatik olarak çağırılır Ayrıca yapıcı fonksiyon istenildiğinde de çağrılabilir 15

Örnek class Basit int i; float f; public: Basit(); Basit::Basit(int a,float b) :i(a),f(b) ; Basit::Basit() i=0; f=0.0; Basit nsn; nsn=basit(7,4.3); nsn=basit(); i 0 f 0 nsn i 7 f 4.3 nsn i 0 f 0 nsn 16

Kopya Yapıcı Fonksiyon İng. Copy constructor Aynı sınıf tipinde başka bir nesneyi parametre olarak alan yapıcı fonksiyonlardır Parametre olarak gelen nesneyi, içinde bulunduğu nesneye kopyalar. 17

Örnek class A int no; public: A(); A(A &par); ; A::A() no=0; cout<<"varsayilan Yapici"<<endl; A::A(A &par) no=par.no; Kopya yapıcı prototipi Kopya yapıcı tanımı cout<<"kopya Yapici"<<endl; int main() A a1; A a2(a1); A a3=a2; return 0; ÇIKTI Varsayilan Yapici Kopya Yapici Kopya Yapici Varsayılan yapıcı çağrılır Kopya yapıcı çağrılır 18

Otomatik Üye Atamaları Aynı tipte bir nesne başka bir nesneye atanırsa, bu nesnenin tüm üyeleri ikinci nesnenin üyelerine otomatik olarak atanır. Tanımlama sırasında bir nesne bir başka nesneye atanırsa Bir fonksiyona parametre olarak bir nesne yollanırsa Bir fonksiyondan bir nesne döndürülürse 19

Otomatik Üye Atamaları... Tanımlama sırasında bir nesne bir başka nesneye atanırsa #include <iostream> using namespace std; class Bir ; int x; float y; public: int main() Bir(int _x,float _y):x(_x),y(_y) Bir n1(1,2.5); Bir n2=n1; return 0; n1 nesnesinin tüm üyeleri n2 nesnesine otomatik olarak kopyalanır x y 1 2.5 n1 x y 1 2.5 n2 20

Otomatik Üye Atamaları... Bir fonksiyona parametre olarak bir nesne yollanırsa class Bir ; int x; float y; public: Bir(int _x,float _y):x(_x),y(_y) void fon(bir a) int main() nsn nesnesi a nesnesine yollanır Bir nsn(1,2.5); fon(nsn); return 0; x y x y 1 2.5 a 1 2.5 nsn 21

Otomatik Üye Atamaları... Bir fonksiyondan bir nesne döndürülürse class Bir int x; float y; public: Bir(int _x,float _y):x(_x),y(_y) Bir() ; Bir fon() return Bir(1,2.5); x y 1 2.5 int main() Bir nsn; nsn = fon(); return 0; fon( ) un döndürdüğü nesne nsn e atanır x 1 y 2.5 nsn 22

Örnek 7 Aşağıdaki işlemde görüldüğü gibi iki rasyonel sayıyı çarpan bir program yazalım. 1 3 x 2 5 1x2 3x5 2 15 1 3 Pay Payda 23

#include <iostream> using namespace std; class Rasyonel ; int pay,payda; public: Rasyonel(int x,int y):pay(x),payda(y) int payal()return pay; int paydaal()return payda; Rasyonel carp(rasyonel&); Rasyonel Rasyonel::carp(Rasyonel& r) int a=r.payal(); int b=r.paydaal(); return Rasyonel(pay*a,payda*b); int main() Rasyonel s(1,3),t(2,5); Rasyonel son=s.carp(t); cout<<s.payal()<< / <<s.paydaal(); cout<< * <<t.payal() << / <<t.paydaal(); cout<< = <<son.payal()<< / <<son.paydaal()<<endl; return 0; ÇIKTI 1/3 * 2/5 = 2/15 pay 2 pay 2 payda 15 payda 15 son 24

Yıkıcı Fonksiyonlar İng. Destructor Yıkıcı fonksiyonlar ise bir nesne programda yok edilmeden hemen önce otomatik olarak çağırılan üye fonksiyonlardır. Nesnenin yaratıldığı blok bittiğinde o nesne yok edilir ve yok olmadan hemen önce yıkıcı fonksiyon otomatik olarak çağrılır. Yıkıcı fonksiyonu yazarken şu noktalara dikkat etmemiz gerekir: Yıkıcı fonksiyon ismi ~ işareti ile başlar ve sınıfla aynı ismi taşır Yıkıcı fonksiyonlara yükleme yapılmaz Parametreleri ve döndürme tipleri yoktur Otomatik olarak çağırılırlar 25

#include <iostream> using namespace std; class Eleman int no; public: Eleman (int=0); Eleman::Eleman (int x); ~Eleman(); ; Eleman::~Eleman() cout<<"yikici fonksiyon"<<endl; cout<<"no: "<<no<<endl; ; Eleman::Eleman (int x) no=x; cout<<"yapici fonksiyon"<<endl; int main() Eleman kisi1(123),kisi2; return 0; ÇIKTI Yapici fonksiyon Yapici fonksiyon Yikici fonksiyon No: 0 Yikici fonksiyon No: 123 26