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

Ebat: px
Şu sayfadan göstermeyi başlat:

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

Transkript

1 NESNEYE YÖNELİK PROGRAMLAMA THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.

2 2 Sunum Planı this işaretçisi Kopya yapıcı fonksiyonu Nesnelerin parametre olarak geçirilmesi ve döndürülmesi Referansların parametre olarak geçirilmesi ve döndürülmesi Statik veri elemanları ve statik fonksiyonlar Arkadaş sınıflar ve fonksiyonlar Nesne dizileri yaratma

3 this İşaretçisi - 1 Belleğin etkin kullanımı için sınıflarda tanımlı eleman fonksiyonlar ilgili sınıftan yaratılan her nesne için tekrar kopyalanmaz. Eleman fonksiyonun tek kopyasını o sınıfın tüm nesneleri paylaşır. Fonksiyonun hangi nesne için çağrıldığı this işaretçisi tarafından belirlenir. this işaretçisi statik eleman fonksiyonlar haricindeki eleman fonksiyonların erişebildiği özel bir işaretçidir. Eleman fonksiyonu çağıran nesneye işaret eder. Daha açıkçası, bir eleman fonksiyonu bir nesne için çağırdığınız zaman, derleyici önce bu nesnenin adresini this işaretçisine atar ve ardından fonksiyonu çağırır.

4 this İşaretçisi - 2 #include <iostream> using namespace std; class Test { int deger1; public: Test(int x) { deger1=x } void yazdır(); }; void Test::yazdır() { cout << Değer1= << deger1; //cout << Değer1= << this->deger1; } int main(){ Test t1(1), t2(2); t1.yazdır(); t2.yazdır(); return 0; } this this t1 nesnesi deger1 t2 nesnesi deger1 1 2

5 this İşaretçisi - 3 Bir eleman fonksiyonu yazarken herhangi bir eleman sahaya erişmek için this işaretçisini açıkça kullanmak ya da fonksiyonu çağıran nesneye referansta bulunmak için *this ifadesini kullanmak meşru yöntemlerdir. Aşağıdaki örnekteki üç deyim birbirine denktir: void Tarih::ay_goruntule() { cout << ay; cout << this->ay; cout << (*this).ay; }

6 this İşaretçisi 4 Eleman fonksiyon sınıfın eleman sahalarına her erişiminde örtük olarak this işaretçisini kullanır. Örneğin, void Tarih::ayBelirle( int mn ) { ay = mn; } //... tarih1.aybelirle( 3 ); biçimindeki C++ kod parçasının C karşılığı şöyle olacaktır: void aybelirle(tarih *const this, int mn ) { this->ay = mn; } //... aybelirle( &tarih1, 3 );

7 this İşaretçisi - 5 this işaretçisi bir eleman fonksiyonu çağıran nesne ile bu fonksiyona parametre olarak gönderilen nesnenin aynı nesneler olup olmadığını anlamak için kullanılabilir ve bu şekilde örneğin nesneyi kendisine değer olarak atama probleminden kaçınılabilir: void String::operator=(const String &digeri) { if( &digeri == this ) return; delete [] buf; uzunluk = digeri.uzunluk; buf = new char[uzunluk+1]; strcpy( buf, digeri.buf ); }

8 this İşaretçisi - 6 Hem C de hem C++ da bir atama deyimi atananı değer olarak alan bir ifade gibi düşünülebilir. Örneğin, i = 3; değeri 3 olan bir ifadedir. Bu durumun bir neticesi birden fazla atama deyiminin zincirleme olarak birbirine bağlanabilmesidir: a = b = c; Atama operatörü sağdan birleştirmeli olduğundan yukarıdaki ifade aşağıdakiyle denktir: a = (b = c);

9 this İşaretçisi - 7 Bu zincirleme atama özelliğini aşırı yüklenmiş nesne atama fonksiyonunuzun da kullanmasını istiyorsanız, fonksiyonun atama sonucunu değer olarak döndürmesini sağlamalısınız: String &String::operator=(const String &digeri) { if( &digeri == this ) return *this; delete [] buf; uzunluk = digeri.uzunluk; buf = new char[uzunluk+1]; strcpy( buf, digeri.buf ); return *this; } 9

10 this İşaretçisi - 8 Artık cout ifadelerinin de nasıl birden fazla çıktı değeri aldığını açıklayabiliriz: cout << a << b << c; Aşırı yüklenmiş sola kaydırma operatörü *this değerini cout nesnesi olarak döndürmektedir. 10

11 11 ATAMA VE İLK DEĞER ALMA - 1 Atama mevcut bir nesnenin değerinin değişmesi esnasında gerçekleşir; bir nesneye birçok yeni değer atanabilir. İlk değer alma bir nesnenin bildirimi yapılırken bir başlangıç değeri alması esnasında gerçekleşir; bir nesne yalnızca bir kez ilk değer alır.

12 12 ATAMA VE İLK DEĞER ALMA - 2 Atama ve ilk değer alma işlemleri arasındaki fark, nesnelerle işlem yaparken önemli olabilir. Atama deyimi derleyicinin sınıf için tanımlanmış operator= fonksiyonunu çalıştırmasına neden olurken: String string1( birinci karakter katari ); String string2; string2 = string1; ilk değer alma aynı fonksiyonu çalıştırmaz: String string1( birinci karakter katari ); String string2 = string1; operator= fonksiyonu yalnızca daha önce yaratılmış nesneler için çağrılabilir.

13 13 KOPYA YAPICI FONKSİYON - 1 Bir nesnenin yaratıldığı esnada bir başka nesnenin değerini almasını sağlamak için özel bir yapıcı fonksiyon olan kopya yapıcı fonksiyon çağrılır. Kopya yapıcı fonksiyon var olan bir nesnedeki verileri yeni oluşturulan nesnenin içine kopyalar. Giriş parametresi olarak aynı sınıftan bir nesneyi referans alırlar. Eğer programda bir kopya yapıcı fonksiyon tanımlı değilse, derleyici standart bir yapıcıyı sınıfa yerleştirir. Standart kopya yapıcı fonksiyon bir nesnenin elemanlarını bire bir yeni nesnenin veri alanlarına kopyalar. Bu da içinde işaretçi barındırmayan nesneler için yeterlidir.

14 14 KOPYA YAPICI FONKSİYON - 2 Kopya yapıcı bir fonksiyon bir nesnenin ilk değer olarak bir başka nesneyi aldığı durumlarda çalıştırılır. = işareti ile ya da fonksiyon çağırma sentaksı ile çağrılır: String string2 = string1; String string2(string1); Bir kopya yapıcı fonksiyon olmaması halinde yukarıdaki ifade neticesinde string2 her eleman sahasının ilk değerini string1 in elemanlarından alır. Bu da sınıfın elemanları içinde işaretçilerin bulunması durumunda arzu edilmeyen sonuçlara yol açabilir.

15 15 KOPYA YAPICI FONKSİYON - 3 String sınıfı için kopya yapıcı fonksiyonu şu şekilde yazılabilir: #include <iostream> #include <cstring> using namespace std; class String { public: String(); String( const char *s ); String( char c, int n ); String( const String &digeri ); // kopya yapıcı fonksiyon //... }; String::String( const String &digeri ) { uzunluk = digeri.uzunluk; buf = new char[uzunluk + 1]; strcpy( buf, digeri.buf ); }

16 KOPYA YAPICI FONKSİYON - 4 Kopya yapıcı fonksiyonu derleyici tarafından 3 durumda çağırılır: 1. Bir sınıf nesnesi fonksiyona parametre olarak geçirildiğinde. 2. Bir fonksiyondan bir nesne döndürüldüğünde. 3. Var olan bir nesnenin kopyası olarak yeni bir nesneye başlangıç ataması yapıldığında.

17 17 NESNELERİN PARAMETRE OLARAK GEÇİRİLMESİ Aşağıdaki fonksiyon bir nesneyi parametre olarak almaktadır: void tuket(string parm) { // parm nesnesinin kullanımı } void main() { String string1( birinci karakter katari ); tuket(string1); } tuket fonksiyonu değer olarak geçirilmiş bir String nesnesi almıştır. Yani, fonksiyon nesnenin kendisine ait bir kopyasına sahip olmuştur. Aslında, derleyici örtük olarak fonksiyonun parametresine nesneyi ilk değer olarak atamak üzere, kopya yapıcı fonksiyonu çağırmıştır; yaptığı aşağıdakiyle aynıdır: String parm(string1);

18 18 NESNE DÖNDÜREN FONKSİYONLAR Aşağıdaki fonksiyon değer olarak bir nesne döndürmektedir: String f() { String retdeger( bir return değeri ); return retdeger; } void main() { String string2; string2 = f(); } f fonksiyonu değer olarak bir String nesnesi döndürmektedir. Derleyici, fonksiyonu çağıranın kapsam alanındaki geçici bir gizli nesneye fonksiyonun return ifadesinde belirtilmiş nesneyi kullanarak ilk değer atamak üzere kopya yapıcı fonksiyonu çağırır. Yani, derleyici aşağıdakilere denk işlemler gerçekleştirir: String gecici(retdeger); string2 = gecici;

19 19 NESNE REFERANSLARININ PARAMETRE OLARAK GEÇİRİLMESİ Bir nesnenin değer olarak bir fonksiyona her gönderilişi, bir miktar overhead içerir. Sabit bir nesneye referans geçirerek aynı etki, yapıcı fonksiyon çağırmaktan kaynaklı maliyetten de kurtularak elde edilebilir: void tuket(const String &parm) { // parm nesnesinin kullanımı } void main() { String string1( birinci karakter katari ); tuket(string1); } Parametre bu şekilde geçirildiğinde, yeni bir nesne yaratılmadığı için, kopya yapıcı fonksiyon çağrılmaz. Derleyici aşağıdaki işlemin aynısını gerçekleştirir: const String &parm = string1; Sonuç olarak, fonksiyon kendisini çağıranla aynı nesneyi kullanmış olur.

20 20 NESNE REFERANSLARININ DEĞER OLARAK DÖNDÜRÜLMESİ Nesnenin referansını değer olarak döndürmek de, nesnenin kendisini döndürmekten daha etkin bir yöntem olabilir. operator= örneğini hatırlayın: String &String::operator=(const String &digeri) { //... return *this; } void main() { String string1( birinci karakter katari ); String string2, string3; string3 = string2 = string1; } Geçici bir nesne yaratılmadığı için fonksiyon değer döndürürken kopya yapıcı fonksiyon çağrılmaz, yalnızca geçici bir referans yaratılır. string2 = string1 ifadesinin değerini string3 nesnesine atarken derleyici aşağıdaki işlemleri yapar: String &geciciref = string2; string3 = geciciref;

21 21 STATİK VERİ ELEMANLARI - 1 Bir veri elemanının static olarak tanımlanması mümkündür. Bir sınıftan üretilen tüm nesnelerin ortak bir veriyi paylaşmasının gerektiği durumlar olabilir. Bellekte sadece tek kopyasının yaratılması istenen veriler static olarak tanımlanmalıdırlar Static olarak tanımlanan veri elemanının sadece bir kopyası vardır ve kendi sınıfının tüm nesneleri o değişkeni paylaşır. Statik üyeler nesne tanımlanmadan önce bellekte yaratılırlar.

22 22 STATİK VERİ ELEMANLARI - 2 #include <iostream> using namespace std; class Test { int deger1; static int deger2; }; t1 nesnesi deger1 deger2 t2 nesnesi deger1 int main(){ int Test::deger2 = 7; Test t1; Test t2, t3; return 0; } deger1 t3 nesnesi

23 23 STATİK VERİ ELEMANLARI - 3 Bir bankadaki tasarruf hesapları için bir TasarrufHesabi sınıfı tanımlayalım. Sınıfa ait her nesne belirli bir müşterinin hesap ve isim bilgisini taşıyacak olsun. Ayrıca, sınıf her gün kazanılan faizleri hesaba ekleyecek bir eleman fonksiyona sahip olsun.

24 24 STATİK VERİ ELEMANLARI - 4 Böyle bir sınıf için günlük faiz oranını nasıl gösterebiliriz? Sürekli değiştiği için sabit değil, değişken olmalıdır. Sınıfın sıradan bir eleman sahası olması halinde, her nesne kendi kopyasına sahip olacaktır; bu da yalnızca bellek israfına yol açmakla kalmayacak aynı zamanda faiz oranı değiştiğinde her nesneyi güncellemeyi gerektirecektir. Faiz oranını global bir değişken yapmak isteyebilirsiniz; fakat bu her fonksiyonun değişkeninizin değerini değiştirebileceği anlamına gelecektir. İhtiyacımız olan belirli bir sınıf için global bir değişkendir.

25 25 STATİK VERİ ELEMANLARI - 5 C++, belirli bir sınıf için global değişken tanımlama imkanını statik eleman sahalar aracılığıyla sağlar. Sıradan bir eleman saha gibi işleme sokulmasına rağmen, bildirimi static yapılmış eleman sahaların, sınıfa ait kaç nesne yaratılırsa yaratılsın, tek bir kopyası oluşturulur. class TasarrufHesabi { public: TasarrufHesabi(); void faizekle() { toplam += faizorani * toplam; } //... private: char isim[30]; float toplam; static float faizorani; //... };

26 26 STATİK VERİ ELEMANLARI - 6 Statik bir eleman sahayı, bildirimini public yapmak program içerisinde erişilebilir kılabilirsiniz: // Eğer faizorani public ise void main() { TasarrufHesabi hesap1; hesap1.faizorani = ; } suretiyle, Yukarıdaki programda kullanılan sözdizim meşru fakat aldatıcıdır; çünkü, bütün TasarrufHesabi nesnelerinin faiz oranının değiştiriliyor olmasına rağmen, yalnızca hesap1 nesnesinin faiz oranının değiştirildiği izlenimini doğurmaktadır. Daha iyi bir gösterim yolu aşağıdaki olacaktır: TasarrufHesabi::faizOrani = ; Bu sözdizim değişimin bütün sınıfa uygulanacağı gerçeğini yansıtmaktadır ve hiçbir TasarrufHesabi nesnesi yaratılmamış olsa bile kullanılabilir.

27 27 STATİK VERİ ELEMANLARI - 7 Statik bir eleman sahanın ilk değerini sınıfının yapıcı fonksiyonu içinden alması mümkün değildir; çünkü ilk değer bir kez atanır fakat yapıcı fonksiyon birçok kez çağrılabilir. Statik bir eleman saha, tıpkı global bir değişken gibi, dosya kapsam alanında ilk değerini almalıdır. Erişim belirteci statik eleman sahalar için ilk değer alma esnasında etkin değildir; dolayısıyla private eleman sahalar ilk değerlerini public eleman sahalar gibi alırlar: float TasarrufHesabi::faizOrani = ; TasarrufHesabi::TasarrufHesabi() { //... } //...

28 28 STATİK ELEMAN FONKSİYONLAR - 1 Eğer yalnızca statik eleman sahalara erişim yapan bir fonksiyonunuz varsa, fonksiyonun bildirimini static yapabilirsiniz: class TasarrufHesabi { public: TasarrufHesabi(); void faizekle() { toplam += faizorani * toplam; } static void faizbelirle( float yenideger ) { faizorani = yenideger; } //... private: char isim[30]; float toplam; static float faizorani; //... };

29 29 STATİK ELEMAN FONKSİYONLAR - 2 Statik eleman fonksiyonlar statik eleman sahalara erişim için kullanılan sözdizim ile çağrılabilirler: // Statik eleman fonksiyon çağrımı void main() { TasarrufHesabi hesap1; hesap1.faizbelirle(0.0005); TasarrufHesabi::faizBelirle(0.0005); } Statik eleman fonksiyonlar belirli bir nesne üzerinde işlem yapmadıkları için this işaretçisine sahip değillerdir.

30 30 STATİK ELEMANLAR Statik eleman sahalar bütün nesnelerin ihtiyacı olan ortak kaynakları yönetmek ya da nesnelere ilişkin durum bilgisi tutmak için kullanılabilir. Örneğin, herhangi bir anda bir sınıfın kaç nesnesinin bulunduğu bilgisini statik bir eleman saha üzerinde tutabiliriz: class Ucak { public: Ucak() { sayac++; } static int miktarsoyle() { return sayac; } ~Ucak(){ sayac--; } private: static int sayac; }; int Ucak::sayac = 0;

31 31 ARKADAŞ SINIFLAR - 1 Bazen iki yada daha fazla sınıfın o kadar işbirliği içerisinde çalışması gerekir ki birbirlerinin erişim fonksiyonlarını kullanmak yeterince verimli olmayabilir ve dolayısıyla birbirlerinin özel korumalı (private) eleman sahalarına doğrudan erişmeleri gerekebilir. Bu tür bir imkan friend anahtar sözcüğünü kullanarak elde edilir: class Sinif1 { friend class Sinif2; // Arkadaş sınıf private: int cokgizli; }; class Sinif2 { public: void degistir(sinif1 nesne1) }; void Sinif2::degistir(Sinif1 nesne1) { nesne1.cokgizli++; }

32 32 ARKADAŞ SINIFLAR - 2 Örnek1 (Lafore 2002): #include <iostream> using namespace std; class beta; class alpha { private: int data1; public: alpha() : data1(99) { } //constructor friend class beta; //beta is a friend class };

33 33 ARKADAŞ SINIFLAR - 3 // all member functions can access private // alpha data class beta { public: //access private alpha data void func1(alpha a) { cout << \ndata1= << a.data1; } void func2(alpha a) { cout << \ndata1= << a.data1; } };

34 34 ARKADAŞ SINIFLAR - 4 int main() { alpha a; beta b; b.func1(a); b.func2(a); cout << endl; return 0; }

35 35 ARKADAŞ SINIFLAR - 5 friend bildirimi public ve private anahtar sözcüklerinden etkilenmez; sınıf bildiriminin herhangi bir yerinde bulunabilir. Tanımlanan sınıf kendi özel korumalı eleman sahalarına erişebilecek arkadaş sınıflar belirleyebilir; fakat, kendisini bir başka sınıfın arkadaşı ilan edemez. friend arkadaş sözcüğü tek yönlü erişim imkanı sağlar.

36 36 ARKADAŞ SINIFLAR - 6 Arkadaş mekanizmasını kullanmanız halinde yalıtılmış sınıflarla değil, bir arada düşünülmesi gereken iki yada daha fazla sınıfla uğraşıyorsunuz demektir. Bu nedenle, bu mekanizma elden geldiğince seyrek kullanılmalıdır.

37 37 ARKADAŞ FONKSİYONLAR - 1 Bütün bir sınıfın yerine, tek bir fonksiyon da arkadaş (friend) olarak bildirilebilir. class myclass { int a, b; public: friend int sum(myclass x); // Arkadaş fonksiyon } Arkadaş fonksiyonları sınıfa ait değildir, ama bu fonksiyonların o sınıfa ait private elemanlara erişim hakkı vardır.

38 38 ARKADAŞ FONKSİYONLAR - 1 Örnek1 (Osborne 1998): #include <iostream> using namespace std; class myclass { int a, b; public: friend int sum(myclass x); // Arkadaş fonksiyon void set_ab(int i, int j); }; void myclass::set_ab(int i, int j) { a = i; b = j; }

39 39 ARKADAŞ FONKSİYONLAR - 2 // sum() is not a member function of any class. int sum(myclass x) { /* Because sum() is a friend of myclass, it can directly access a and b. */ return x.a + x.b; } int main() { myclass n; n.set_ab(3, 4); cout << sum(n); return 0; }

40 40 ARKADAŞ FONKSİYONLAR - 3 Örnek2 (Osborne 1998): #include <iostream> using namespace std; const int IDLE = 0; const int INUSE = 1; class C2; // forward declaration class C1 { int status; // IDLE if off, INUSE if on screen //... public: void set_status(int state); friend int idle(c1 a, C2 b); };

41 41 ARKADAŞ FONKSİYONLAR - 4 class C2 { int status; // IDLE if off, INUSE if on screen //... public: void set_status(int state); friend int idle(c1 a, C2 b); }; void C1::set_status(int state) { status = state; } void C2::set_status(int state) { status = state; }

42 42 ARKADAŞ FONKSİYONLAR - 5 int idle(c1 a, C2 b) { if(a.status b.status) return 0; else return 1; } int main() { C1 x; C2 y; x.set_status(idle); y.set_status(idle); if(idle(x, y)) cout << "Screen can be used.\n"; else cout << "In use.\n"; x.set_status(inuse); if(idle(x, y)) cout << "Screen can be used.\n"; else cout << "In use.\n"; return 0; }

43 43 NESNE DİZİLERİ - 1 Herhangi bir veri tipinde dizi tanımlar gibi nesne dizileri tanımlayabilirsiniz: Tarih dogumgunleri[10]; Bir nesne dizisi bildirimi yaptığınızda, yapıcı fonksiyon dizideki her eleman için çağrılır. Eğer ilk değer belirtmeden dizilerinizin bildirimini yapmak istiyorsanız varsayılan yapıcı fonksiyona sahip olmanız gerekir. Yukarıdaki örnekte, dizinin her elemanı Ocak 1, 1 değerini ilk değer olarak alır.

44 44 NESNE DİZİLERİ - 2 Ayrıca, argüman alan yapıcı fonksiyonunuzu açıkça çağırarak da dizideki her elemana ilk değer atayabilirsiniz. Eğer dizinin bütünü için yeterince ilk değer belirtmezseniz, geriye kalan elemanlar için varsayılan yapıcı fonksiyon çağrılır: Tarih dogumgunleri[10] = { Tarih(2,10,1950), Tarih(9,16,1960), Tarih(7,31,1953), Tarih(1,3,1970), Tarih(12,2,1963) };

45 45 NESNE DİZİLERİ - 3 Eğer sınıf tek bir argüman alan yapıcı fonksiyona sahipse, ilk değer olarak yalnızca bu argümanı belirtebilirisiniz. Ayrıca, farklı ilk değer atama tarzlarını karışık da kullanabilirsiniz: String mesaj[10]={ Mesajin ilk satiri\n, ikinci satiri\n, String( ucuncu satiri\n ), String( -,25), String()};

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA İŞARETÇİ ELEMANLI SINIFLAR REFERANSLAR OPERATÖRLERİN AŞIRI YÜKLENMESİ ATAMA OPERATÖRÜ Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü İşaretçi Elemanlı Sınıflar

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama 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

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 11: Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA SANAL FONKSİYONLAR VE ÇOK BİÇİMLİLİK Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü GİRİŞ C++, hem derleyici-zamanlı hem de çalışmazamanlı çok biçimliliği destekler.

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

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

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Özlem AYDIN NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü C DİLİNİN BİR ÜST-KÜMESİ OLARAK C++ Genel olarak, C de mevcut olan her şey C++ da da vardır. C dilinde

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.

Detaylı

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

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları Statik Veri Üye ve Metotlar Genel olarak bir sınıfa ait nesnelerin verileri bellekte farklı bölgelerde yer alır. Ancak bazı durumlarda, belirli bir üyenin ortak bir alanda tek bir kopyasının bulunması

Detaylı

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

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 9: Sınıf İçerik Sınıf Tanımı Nesne Tanımı İkili Kapsam Çözme Operatörü UML ile Sınıfların Gösterimi 2 Sınıf kavramı, nesne-tabanlı programlamanın temelini oluşturur.

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

BTEP243 Ders 3. class Yazım Kuralı:

BTEP243 Ders 3. class Yazım Kuralı: BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 5: Fonksiyonlar İçerik Standart Kütüphane Fonksiyonları Kullanıcı Tarafından Tanımlanan Fonksiyonlar Fonksiyon Tanımı Fonksiyon Prototipi void Fonksiyonları Parametreli

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 6: Diziler İçerik Diziler Dizi Elemanlarına İlk Atama Diziler ve Fonksiyonlar İki Boyutlu Diziler İki Boyutlu Dizi Tanımı İki Boyutlu Dizi Elemanlarına Erişim

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

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

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 7: Yapılar Diziler İçerik Yapıların Tanımı Yapılara İlk Değer Atama Yapı Elemanlarına Erişim İç içe Yapılar Yapılar ve Fonksiyonlar 2 Yapılar (structures) içinde

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 14: Çoklu İşlev İçerik Çoklu İşlevin Gerçekleştirilmesi Saf Sanal Fonksiyonlar ve Soyut Sınıflar Sanal Yıkıcı Fonksiyonlar Statik ve Dinamik Bağlama 2 Çoklu İşlev

Detaylı

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

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü String ve Karakter Dizileri #include Temel giriş çıkış akımları nesnelerinin tanımlandığı kütüphanedir. cin,cout,cerr,clog, wcin,wcout,wcerr,wclog nesneleri içerir. using namespace std; //std

Detaylı

NESNE MODELLERİ : SINIFLAR

NESNE MODELLERİ : SINIFLAR NESNE MODELLERİ : SINIFLAR Bu bölümünden itibaren C++ programlama dilinin nesneye dayalı programlamaya yönelik özellikleri tanıtılacaktır. Bu özellikler yazılımların kalitesini yükseltmek amacıyla geliştirilmişlerdir.

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 13: Miras İçerik Miras Kavramı Miras Yönteminin Uygulanması Erişim Etiketleri: public, private, protected Miras ve Yapıcı Fonksiyonlar Üst Sınıf Tanımlamasında

Detaylı

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers) 5. İşaretç iler (pointers) C dilinin öyle bir özelliği vardır ki, programlama dilleri arasında kendisini diğerlerinden ayıran bir fark olarak sunulur: işaretçiler. Aslında, bazı diğer dillerde de direkt

Detaylı

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

Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading) Operatörlere Yeni İşlevler Yüklenmesi (Operator Overloading) C++ da hazır olarak var olan operatörlere (+, -, *, /,!,

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Doç. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.

Detaylı

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

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

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b. Diziler Dizi Nedir Ortak özelliğe sahip birden fazla bilginin oluşturduğu bütün bilgi kümelerine veya hafızada art arda sıralanmış aynı türden verilerin oluşturduğu yapıya dizi denir. Kısaca; Bellekte

Detaylı

Nesneye Yönelik Programlama (OOP) 7.Hafta

Nesneye Yönelik Programlama (OOP) 7.Hafta Nesneye Yönelik Programlama (OOP) 7.Hafta Örnek : Yapılar vs Sınıflar Yapılar ve sınıflar büyük oranda benzerlik gösterirler. Yapıların sakladığı veriler her zaman public yani erişime açıktır. Sınıflarda

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

11- FONKSİYONLAR (FUNCTIONS)

11- FONKSİYONLAR (FUNCTIONS) 1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar

Detaylı

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

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı C++ Dersi: Nesne Tabanlı Programlama 2. Baskı ³ Bölüm 12: Operatör Yükleme İçerik 12.1 Operatör Yükleme Fonksiyon Tanımı 12.2 Üye Olmayan Fonksiyonlar 12.3 Operatör Yüklemede Arkadas Fonksiyon Kullanımı

Detaylı

Kurucu Fonksiyonlar (Constructors)

Kurucu Fonksiyonlar (Constructors) Kurucu Fonksiyonlar (Constructors) Kurucu fonksiyonlar üyesi oldukları sınıftan bir nesne yaratılırken kendiliğinden canlanırlar. Bu tür fonksiyonlar bir nesnenin kurulması aşamasında yapılması gereken

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu

Detaylı

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

C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References) C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References) Kaan Aslan 25 Ağustos 2008 C++ a eklenmesine karar verilen yeni bir özellik de sağ taraf değerine bağlanan referanslardır. C++0x standart

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA KALITIM Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.

Detaylı

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

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar Nesneler ve Türler Sınıflar ve Yapılar Arasındaki Farklılıklar Sınıf Üyeleri Değer ve Referans Türde Olan Aktarımlar Yapıcılar ve Statik Yapıcılar Read-Only Statik Sınıflar Object Sınıfı Sınıflar Sınıflar

Detaylı

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

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 Binnur Kurt kurt@ce.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi Sınıf Yapısı Kalıtım Çok Şekillilik Nesneye Dayalı Programlama 2 1 İşaretçiler, veri değil, verinin yerleşik bulunduğu

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

Pointers (İşaretçiler)

Pointers (İşaretçiler) Pointers (İşaretçiler) Pointers (İşaretçiler) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ile ilişkilidir. Donanımsal açıdan

Detaylı

10/17/2007 Nesneye Yonelik Programlama 3.1

10/17/2007 Nesneye Yonelik Programlama 3.1 Procedure-Based Programming in C++ Çoğu gerçek dünya problemleri binlerce kod satırı gerektirir ( MS Windows NT 5.0 25 million dan fazla kod satırından oluşmaktadır). Yazılımın tasarımı, kodlanması ve

Detaylı

C++ ile Nesneye Dayalı Programlama

C++ ile Nesneye Dayalı Programlama Nesne İşaretçileri Binnur Kurt kurt@cs.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi C++ ile Nesneye Dayalı Programlama 1 Sınıf Yapısı Kalıtım Nesneİşaretçileri Çok Şekillilik

Detaylı

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

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar Fonksiyon Tanımı Karmaşıkveuzunprogramları,

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon

Detaylı

#ifndef FATURA_H #define FATURA_H

#ifndef FATURA_H #define FATURA_H 06.10.2018 2018-2019 Güz Object-Oriented Programming Lab 06 Ön Çalışma - Uygulamanın 1. ve 2. sorularında istenen fatura ve mevduat class ları için constructor metodunun (.cpp syasındaki) tanımını ve static

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

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

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

Lambda İfadeleri (Lambda Expressions)

Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki

Detaylı

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

Örnek1: #include <iostream> #include <string> using namespace std; BTEP243 Ders 5 Nesne İşaretçileri İşaretçiler, bildiğiniz gibi bir değişkenin bellekte tutuldukları yerin adresini tutarlar. Nesne işareçtileri konusundaki işaretçiler, nesnelerin bellek üzerinde bulundukları

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

8. İŞARETCİLER (POINTERS)

8. İŞARETCİLER (POINTERS) 8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren

Detaylı

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

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

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

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();

Detaylı

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

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 Görsel Programlama Kalıtım, Temel/Alt Sınıf, Temel/Alt Sınıf Tip Dönüşümleri, Temel Sınıf Yapıcıları, super Anahtar Kelimesi, Sınıf Üyesi Görünürlüğü, Statik Üyeler ve Final Üyeler Sınıflar Programcı tarafından

Detaylı

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf İçindekiler 1. Giriş... 1 1.2. c++ Programı Yapısı... 2 1.3.Using Direktifi... 5 Bölüm 2. Veri türleri, değişken kavramı, sabit ve değişken bildirimleri ve c++ da kullanımı 7 2.1. Temel veri türleri...

Detaylı

Operatörlere İşlev Yükleme

Operatörlere İşlev Yükleme Binnur Kurt kurt@ce.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi Operatörler C tip-duyarlı ve -odaklı bir dildir. Her operatör belirli tiplerde operand alır. C de temel tiplerden

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 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

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

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

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

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

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 4 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan İyilik insanları birbirine bağlayan altın zincirdir. ~Goethe Hafıza Yapısı 2 Bir değişken tanımlandığında arka

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 17: string Sınıfı İçerik string Yapıcı Fonksiyonları string ile Girdi/Çıktı string Operatörleri ı string Nesnesine Sayı Değeri Ekleme 2 string Birden fazla karakter

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

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

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir

Detaylı

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

TEMPLATES. Binnur Kurt kurt@cs.itu.edu.tr. Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1 PARAMETRİKÇOKŞEKİLLİLİK: TEMPLATES Binnur Kurt kurt@cs.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi C++ ile Nesneye Dayalı Programlama 1 Sınıf Yapısı Kalıtım Çok Şekillilik Templates

Detaylı

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

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma C de Detaylı Üs Alma Programı Bu uygulama yazısında C de pow() fonksiyonunu kullanmadan üs hesabı yapan programı yazmaya çalıştım. Başta tanımladığım float tipinde 2 fonksiyon sayesinde + lı ve li üs değerleriyle

Detaylı

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

Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme Operatör metotları bir nesnenin ifadeler içinde operatörlerle kullanıldığı zaman davranışını belirler. Temel veri türleri için operatörler

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı

Detaylı

Programlama Dilleri III 1

Programlama Dilleri III 1 Temel Veri Türleri Programlama Dilleri III 1 İlk C# Programı class ilk_program1 static void Main() System.Console.WriteLine("Merhaba C#"); C# dilinde yazılmış kaynak kod dosyalarının uzantıları.cs dır.

Detaylı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya

Detaylı

Hafta 13 Fonksiyonlar

Hafta 13 Fonksiyonlar BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

Kalıtım (Inheritance)

Kalıtım (Inheritance) Kalıtım (Inheritance) Kocaeli Üniversitesi Kalıtım (Inheritance) Kodların çok kez kullanımı (Software reusability) Mevcut Sınıflardan Yeni Sınıflar Oluşturma Mevcut sınıfın değişken ve fonksiyonları kullanılabilir.

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 3 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Sınıflar ve Fonksiyonlar Tekrar kullanılabilir kodlar 1 Nesne Tabanlı Tasarım

Detaylı

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

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

Bölüm 10 Statik ve Anlık Öğeler

Bölüm 10 Statik ve Anlık Öğeler Bölüm 10 Statik ve Anlık Öğeler Statik ve Anlık Öğeler Statik öğeler, bir sınıfta static sıfatıyla nitelendirilen değişkenler ve metotlardır. Bunlara sınıf değişkenleri de denilir. static nitelemesi almayan

Detaylı

BMH-303 Nesneye Yönelik Programlama

BMH-303 Nesneye Yönelik Programlama BMH-303 Nesneye Yönelik Programlama Kurucu metotlar (constructors) ve statik deyimi Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği Kurucu Metotlar (Constructors) Kurucu metot çeşitleri Varsayılan

Detaylı

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

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir. Sınıflar (Classes) Çözülmesi istenene problemi çeşitli parçalara ayırıp her bir parça arasındaki ilişkiyi gerçeğine uygun bir şekilde belirleme tekniğine nesne yönelimi denir. Bu parçalar arasındaki ilişkiyi

Detaylı

Nesneye Dayalı Programlama Laboratuvarı

Nesneye Dayalı Programlama Laboratuvarı 2013 2014 Nesneye Dayalı Programlama Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. Salih GÖRGÜNOĞLU Laboratuvar Sorumluları: M. Zahid YILDIRIM İÇİNDEKİLER Deney 1: Visual Studio ve C++'a Giriş Uygulamaları...

Detaylı

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

enum bolumler{elektronik, insaat, bilgisayar, makine, gida}; BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı

Detaylı

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

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 Bölüm 10 Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 10. Bölüm konuları Çağırma / geri dönme semantiği Yığıt-dinamik yerel değişkeni olan altprogramların gerçeklenmesi İçiçe altprogramlar Statik

Detaylı

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

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı

Detaylı

DERSİN WEB SİTESİ:

DERSİN WEB SİTESİ: BİLGİSAYAR PROGRAMLAMA II C++ Programlamaya Giriş http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié THEORY AND PROBLEMS of PROGRAMMING WITH C++ Second Edition JOHN R. HUBBARD, Ph.D. Professor

Detaylı

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

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin); case 2 : C = 0.5088-0.0011*(B-135); break; case 3 : C = 0.4978-0.0010*(B-145); break; case 4 : C = 0.4878-0.0009*(B-155); break; default : printf("yanlış seçenek\n");} cout

Detaylı

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ü

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ü 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ü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon

Detaylı

Veri Yapıları Lab Notları 1

Veri Yapıları Lab Notları 1 C++ Programlama Dili Veri Yapıları Lab Notları 1 C++ dili, hızlı ve düşük seviye özelliklere erişmek isteyen uygulamaların yazılması için popüler bir dildir. C programlama diline birçok ekstra özellik

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Akış Konrol Mekanizmaları 1 Koşul İfadeleri Programlar içersinde bazı durumlarda programın akışının değişmesi ya da farklı işlemlerin yapılması gerekebilir. Bazen de seçimlerin yapılması ya da belirli

Detaylı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap

Detaylı

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

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.

Detaylı

Dizi ( Array ) ve Dizgi ( String )

Dizi ( Array ) ve Dizgi ( String ) Java da Dizi ( Array ) ve Dizgi ( String ) Tanımlama BBS-515 Nesneye Yönelik Programlama Ders #6 (25 Kasım 2009) İçerikç Geçen ders: Kalıtım ( inheritance ) -- tekrar ziyaret Java da super kullanımı Java

Detaylı

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

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır stringh floath Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır 32 Sorgulama İfadesi - if Deyimi (5 Hafta) Bu deyim sorgulamanın tek basamakta yapılacağı yerlerde

Detaylı

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

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders08/ 1 Yapısal Veri Tipleri C dili genişletilebilen bir dildir. Var olan veri tipleri kullanılarak yeni veri tipleri tanımlanıp kullanılabilir. Programlama

Detaylı

BÖLÜM 11: YAPISAL VERİ TİPLERİ

BÖLÜM 11: YAPISAL VERİ TİPLERİ BÖLÜM 11: YAPISAL VERİ TİPLERİ I. STRUCTURE-YAPI (struct) TİPİ DEĞİŞKENLER Birbiriyle bağlantılı ve bir küme teşkil eden değerler bir tek değişkenin çatısı altında bu değişkenin alt alanları olarak tanımlanabilirler.

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2) BLM-112 PROGRAMLAMA DİLLERİ II Ders-3 İşaretçiler (Pointer) (Kısım-2) Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Dinamik Bellek Yönetimi Bir program çalıştırıldığında

Detaylı

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.

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. Fonksiyonlar Fonksiyon Nedir? Bir amaca hizmet eden program parçacıklarıdır. Fonksiyon çalıştırıldığında, bir işlemi yerine getirmesi yada bir değer döndürmesi istenecektir. Çağrılmış olan bir fonksiyon

Detaylı