NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

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

Download "NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR"

Transkript

1 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.

2 2 SINIF VE NESNE KAVRAMLARI Sınıf, aynı özellik ve davranışları gösteren varlıkların ortak kümesini belirleyen bir tanımdır. Nesne, ait olduğu sınıftan gelen özelliklerin değerlerinin belli olduğu, sınıfı için tanımlı olan davranışları nasıl sergilediğinin bilindiği somut varlıktır.

3 3 SINIFLAR Sınıflar, nesneye yönelik programlama yaklaşımını uygulamada gerekli olan ve C deki yapılara (structures) benzeyen, C++ a özgü veri yapılarıdır.

4 4 YAPILAR - 1 Yapı, farklı veri tiplerini bir küme altında toplayan bir veri tipidir. Eğer tarihler üzerine çok sık işlem yapan bir C programı yazıyorsanız, tarihleri gösteren yeni bir veri tipini yapı (structure) olarak tanımlayabilirsiniz: struct tarih int ay; int gun; int yil; }; //... struct tarih dogum; dogum.ay = 1; dogum.gun = 23; dogum.yil = 1985;

5 5 YAPILAR - 2 printf e parametre olarak geçirmek suretiyle bir tarih yapısını yazdıramazsınız. Ya yapının her elemanını ayrı ayrı yazdırmalısınız ya da yapıyı bir bütün olarak yazdırmak için kendi fonksiyonunuzu yazmalısınız: void tarih_goruntule(struct tarih *tr) static char *isim[] = zero, ocak, subat, mart, nisan, mayis, haziran, temmuz, agustos, eylul, ekim, kasim, aralik }; printf( %s %d %d,isim[tr->ay],tr->gun,tr->yil);}

6 6 YAPILAR - 3 Tarihler üzerinde, iki tanesini karşılaştırmak gibi, benzer işlemler yapmak için de, ya yapı elemanlarını ayrı ayrı işlemelisiniz ya da tarih yapılarını parametre olarak kabul edip söz konusu işlemleri sizin için yapan fonksiyonlar tanımlamalısınız.

7 7 YAPILAR - 4 Tarihleri yapı olarak göstermenin çeşitli dezavantajları vardır: Bir tarih yapısının geçerli bir tarihi içerdiği garanti edilemez. Bir kez tarih veri tipini programlarınızda kullandığınızda, kodlaması üzerinde değişiklik yapmak çok zorlaşır.

8 8 YAPILAR - 5 Bu problemlerden kaçınmak için daha fazla programlama eforu göstermelisiniz. Örneğin, belirtilen değerlerin geçerliliğini test eden bir fonksiyon kullanabilirsiniz ve yapının eleman sahalarına doğrudan erişmek yerine, erişim fonksiyonları tanımlayabilirsiniz.

9 9 SINIF BİLDİRİMİ - 1 C++, tanımladığınız yeni veri tiplerinin güvenliğini, bir veri tipi ve bu veri tipi üzerindeki işlemleri aynı anda tanımlamanıza imkan veren sınıflar aracılığıyla sağlar. Sınıf ismi (class name) Özellikler (attributes) Metotlar (methods) Tarih ay gün yıl goruntule

10 10 SINIF BİLDİRİMİ - 2 Bir sınıf bildirimi, yalnızca verileri değil eleman fonksiyonları da içermesi haricinde, yapı bildirimine benzer: class sınıf_ismi özel korumalı veri ve fonksiyonlar erişim_etiketi: veri ve fonksiyonlar erişim_etiketi: veri ve fonksiyonlar //... erişim_etiketi: veri ve fonksiyonlar } nesne_listesi;

11 11 SINIF BİLDİRİMİ - 3 Örnek: // Tarih sinifi #include <iostream> using namespace std; class Tarih public: Tarih( int mn, int dy, int yr ); void goruntule(); ~Tarih(); private: int ay, gun, yil; };

12 12 FONKSİYONLARIN TANIMLANMASI - 1 // Bazı gerekli fonksiyonlar inline int max( int a, int b ) if ( a > b ) return a; return b; } inline int min( int a, int b ) if ( a < b ) return a; return b; }

13 13 FONKSİYONLARIN TANIMLANMASI - 2 // Yapici Fonksiyon Tarih::Tarih( int mn, int dy, int yr ) static int uzunluk[] = 0,31,28,31,30,31,30,31,31,30 31,30,31}; //366 gun iceren yillari ihmal ediyoruz. ay = max( 1, mn ); ay = min( ay, 12 ); gun = max( 1, dy ); gun = min( gun, uzunluk[ay] ); yil = max(1, yr ); }

14 14 FONKSİYONLARIN TANIMLANMASI - 3 // Tarih Bilgisi Goruntuleme Fonksiyonu void Tarih::goruntule() static char *isim[] = zero, ocak, subat, mart, nisan, mayis, haziran, temmuz, agustos, eylul, ekim, kasim, aralik }; cout << isim[ay] <<, << gun <<, << yil; }

15 15 FONKSİYONLARIN TANIMLANMASI - 4 // Yikici Fonksiyon Tarih::~Tarih() // Hicbir sey yapma }

16 16 SINIFLARIN KULLANIMI-1 // Tarih sinifinin kullanimina bir örnek int main() // Gecerli bir Tarih bildirimi Tarih dogum1(3, 12, 1985); // Gecersiz bir Tarih bildirimi Tarih dogum2(23, 259, 1966); dogum1.goruntule(); cout << \n ; dogum2.goruntule(); cout << \n ; } return 0;

17 17 SINIFLARIN KULLANIMI-2 C de tarihleri görüntülemek için her bir yapının adresini ilgili fonksiyona göndermeniz gerekecekti: // C de tarihlerin goruntulenmesi goruntule(&dogum1); goruntule(&dogum2); C++, her bir eleman fonksiyonu bir yapının eleman sahasına erişmekte kullanılan sözdizimine benzer bir sözdizim ile çağırır: dogum1.goruntule(); dogum2.goruntule();

18 18 SINIFLARIN KULLANIMI-3 C++ daki sözdizim, bir veri tipi ile bu veri tipi üzerinde işlem yapacak fonksiyonlar arasındaki sıkı ilişkiyi vurgulamaktadır. Bu durum, sizin goruntule fonksiyonunu Tarih sınıfının bir parçasıymış gibi düşünmenize yol açar. Fakat, gerçekte bu birleşme yalnızca sözdizimseldir: Her Tarih nesnesi goruntule fonksiyonunun bir kopyasına sahip değildir; her nesne yalnızca kendi veri elemanlarını içerir.

19 19 SINIFIN ELEMANLARI Görüldüğü gibi, sınıf bildirimi (int tipinde ay, gun, yil sahaları gibi) veri elemanlarına sahip olması yönüyle yapı bildirimine benzemektedir. Fakat, bazı yönlerden de C deki yapı bildiriminden ayrılmaktadır. Örneğin: public ve private anahtar sözcüklerini, (goruntule gibi) fonksiyon bildirimlerini ve (Tarih ve ~Tarih gibi) yapıcı ve yıkıcı olarak adlandırılan özel fonksiyonları içermektedir. Şimdi bu farklara ayrı ayrı bakalım.

20 20 ERİŞİM DÜZEYLERİ (public ve private)-1 public ve private etiketleri kendilerini takip eden elemanların erişilebilirlik düzeyini belirler. Belirlenen erişim düzeyi bir sonraki etikete ya da sınıf tanımının sonuna kadar devam eder. private elemanlara yalnızca eleman fonksiyonlar erişebilir. (Daha sonra, bu ayrıcalığa arkadaş sınıf veya fonksiyonların da sahip olduğunu göreceğiz.) public elemanlara eleman fonksiyonlar dışında, sınıfa ait nesnenin kapsam alanında olması koşuluyla, programın herhangi bir fonksiyonundan erişilebilir.

21 21 ERİŞİM DÜZEYLERİ (public ve private)-2 Sınıfa ait olmayan bir fonksiyon bir private elemana erişme girişiminde bulunursa derleyici hata üretir: int main() int i; Tarih dogum1( 3, 12, 1985 ); i = dogum1.ay;//error: private saha okunamaz! dogum1.gun=1; //Error: private saha degistirilemez! return 0; } Fakat, public elemanlara (örn. goruntule fonksiyonu) erişim mümkündür.

22 22 ERİŞİM DÜZEYLERİ (public ve private)- 3 Birçok programcının private elemanları bir grupta ve public elemanları bir başka grupta toplamayı tercih etmesine karşın, private ve public etiketleri bir sınıfın tanımında istenilen sayıda yinelenebilir. Bütün sınıf tanımlamalarında varsayılan başlangıç modu private erişim modudur. Fakat, yine de okunurluğu artırmak için bütün bölümleri etiketlemekte yarar vardır. Tarih sınıfında da örneklendiği gibi, C++ da yaygın olan bir konvansiyon public arayüzün bütünüyle fonksiyonlardan oluşturulmasıdır; bir private veriyi bu amaç için tasarlanmış public bir eleman fonksiyon ile görüntüleyebilir ya da değiştirebilirsiniz.

23 23 ELEMAN FONKSİYONLAR- 1 Eleman fonksiyonların prototipi ait olduğu sınıfın bildirimi içinde yer alır. Sınıf dışında sınıfa ait bir fonksiyon tanımlanırken, fonksiyonun ismi, sınıfın ismi ve kapsam çözümleme operatörü birlikte kullanılır: Tarih::goruntule() Bu gösterim fonksiyonun bir sınıfa ait olduğunu ve isminin bu sınıfın kapsam alanında yer aldığını ifade etmektedir. Bu kapsam alanın dışında aynı isim, başka fonksiyonları adlandırmak için kullanılabilir.

24 24 ELEMAN FONKSİYONLAR- 2 Her bir versiyonun parametre listesi ile diğerlerinden ayrılması koşuluyla, bir eleman fonksiyonu, herhangi bir diğer fonksiyon gibi aşırı yükleyebilirsiniz. Eleman fonksiyonlar, sınıflarının diğer elemanlarına nesne ismi belirtmeksizin erişebilirler.

25 25 ELEMAN FONKSİYONLAR- 3 Bir eleman fonksiyon, nesneye işaret eden bir işaretçi aracılığıyla da çağrılabilir: Tarih doğum1( 3, 12, 1985 ) Tarih *tarihptr = &doğum1; tarihptr -> goruntule();

26 26 ELEMAN FONKSİYONLAR- 4 Bir eleman fonksiyon bir nesne referansı aracılığıyla bile çağrılabilir: Tarih doğum1( 3, 12, 1985 ) Tarih &digertarih = doğum1; digertarih.goruntule();

27 27 YAPICI FONKSİYONLAR - 1 C de kodladığımız tarih structure ının geçerli değerleri içermeyi doğrudan garanti edememek gibi bir dezavantajı olduğunu görmüştük. C++ da bu tür bir dezavantajı gidermenin bir yolu yapıcı fonksiyon yazmaktır. Yapıcı fonksiyonlar sınıfınızın herhangi bir nesnesinin bildirimi yapıldığında, otomatik olarak çağrılan özel türde ilk değer atama fonksiyonlarıdır; ilk değer almamış nesnelerin kullanımından kaynaklanabilecek hataları engellerler.

28 28 YAPICI FONKSİYONLAR - 2 Yapıcı fonksiyonun ait olduğu sınıf ile aynı isme sahip olması gerekir. Örneğin, Tarih sınıfının yapıcı fonksiyonu Tarih olarak adlandırılmıştır. #include <iostream> using namespace std; class Tarih public: Tarih( int mn, int dy, int yr ); void goruntule(); ~Tarih(); private: int ay, gun, yil; };

29 29 YAPICI FONKSİYONLAR - 3 Tarih yapıcı fonksiyonunun gerçeklemesine baktığımızda fonksiyonun yalnızca nesnenin eleman sahalarına ilk değer atamakla kalmayıp belirtilen değerlerin geçerliliğini de kontrol ettiğini görüyoruz. Bu yapıcı fonksiyonlar aracılığıyla nesnelerin anlamlı değerler içermesini sağlamanın bir diğer yoludur. int main() Tarih dogum1(3, 12, 1985); // Gecerli bir Tarih bildirimi Tarih dogum2(23, 259, 1966); // Gecersiz bir Tarih bildirimi }

30 30 YAPICI FONKSİYONLAR - 4 Bir sınıf nesnesinin kapsam alanına her girişinde yapıcı fonksiyon koşturulur. Nesne bildirimi tamsayı bildirimine benzer. Önce veri tipi, ardından da nesnenin ismi belirtilir: Tarih doğum1( 3, 12, 1985 ); Fakat, nesnenin bildirimi parantez içinde bir argüman listesi de içerebilir. Bu argümanlar yapıcı fonksiyona parametre değeri olarak gönderilir ve nesnenin ilk değer atamasında kullanılır.

31 31 YAPICI FONKSİYONLAR - 5 Bir yapıcı fonksiyon bildiriminde bulunurken, void dahil, döndürülecek herhangi bir değer tipi belirtemezsiniz. Dolayısıyla, bir yapıcı fonksiyon herhangi bir return ifadesi de içermez. Yapıcı fonksiyonlarınızı aşırı yükleyerek, bir sınıf için birden fazla yapıcı fonksiyon bildiriminde bulunabilirsiniz. Gerçekte, bir sınıf tanımlarken herhangi bir yapıcı fonksiyon tanımlama zorunluluğu yoktur. Eğer hiçbir yapıcı fonksiyon tanımlamazsanız derleyici otomatik olarak hiçbir parametre almayan ve hiçbir şey yapmayan bir tane üretir.

32 32 YIKICI FONKSİYONLAR - 1 Yıkıcı fonksiyonlar, yapıcı fonksiyonların zıt işlevselliğine sahiptirler. Bir sınıf nesnesi kapsam alanının dışına çıkınca otomatik olarak yıkıcı fonksiyon çağrılır. Yıkıcı fonksiyonun görevi bir nesne yok edilmeden önce gerekli bütün `temizlik işlerini yapmaktır. Yıkıcılar nesne yok edilirken çağrılırlar. Sistem hafızayı geri alırken sonlandırma temizliğini yapar, böylece hafıza alanı yeni nesnelerin tutulması için tekrar kullanılabilir.

33 33 YIKICI FONKSİYONLAR - 2 Yıkıcı fonksiyonların başlarına almak zorunda oldukları tilda (~) sembolü vardır. Yıkıcı fonksiyonun ismi sınıf ismi ile aynıdır. ~Tarih(); Yıkıcı fonksiyonları da açıkça tanımlama zorunluluğu yoktur. Yıkıcı fonksiyonlar aşırı yüklenemez; yalnızca bir tane olmak zorundadırlar. Yıkıcı bir fonksiyon parametre alamaz ve değer döndüremez.

34 34 NESNELERİN YARATILMASI VE YOK EDİLMESİ - 1 Örnek: // DEMO.CPP #include <iostream> #include <cstring> using namespace std; class Demo public: Demo( const char *nm ) ~Demo(); private: char isim[20]; };

35 35 NESNELERİN YARATILMASI VE YOK EDİLMESİ - 2 Demo::Demo( const char *nm ) strncpy( isim, nm, 20 ); cout <<isim<< icin yapici fonksiyon cagrimi\n ; } Demo::~Demo() cout <<isim<< icin yikici fonksiyon cagrimi\n ; } void fonk() Demo yerelfonknesnesi( yerelfonknesnesi ); static Demo staticnesne( statiknesne ); cout << fonk icinde << endl; }

36 36 NESNELERİN YARATILMASI VE YOK EDİLMESİ - 3 Demo globalnesne( globalnesne ); int main() Demo yerelmainnesnesi( yerelmainnesnesi ); cout << fonk cagrimindan once, main icinde\n ; fonk(); cout << fonk cagrimindan sonra, main icinde\n ; } return 0;

37 37 NESNELERİN YARATILMASI VE YOK EDİLMESİ - 4 Yerel nesneler için, yapıcı fonksiyon nesnenin bildirimi yapıldığında, yıkıcı fonksiyon ise program bildiriminin yapıldığı bloktan çıkarken çağrılır. Global nesneler için, yapıcı fonksiyon program başlarken, yıkıcı fonksiyon ise program sona ererken çağrılır. Statik nesneler için, yapıcı fonksiyon nesnenin bildiriminin yapıldığı fonksiyona ilk girişte, yıkıcı fonksiyon ise program sona ererken çağrılır.

38 38 NESNELERİN YARATILMASI VE YOK EDİLMESİ - 5 Program çıktısı: globalnesne icin yapici fonksiyon cagrimi yerelmainnesnesi icin yapici fonksiyon cagrimi fonk cagrimindan once, main icinde yerelfonknesnesi icin yapici fonksiyon cagrimi statiknesne icin yapici fonksiyon cagrimi fonk icinde yerelfonknesnesi icin yikici fonksiyon cagrimi fonk cagrimindan sonra, main icinde yerelmainnesnesi icin yikici fonksiyon cagrimi statiknesne icin yikici fonksiyon cagrimi globalnesne icin yikici fonksiyon cagrimi

39 39 ELEMAN SAHALARA ERİŞİM - 1 Şu anki haliyle, Tarih sınıfı gun, ay ve yil bileşenlerine erişim izni vermemektedir; örneğin, bir Tarih nesnesinin ay değerini okuyup değiştiremezsiniz. Bu sorunu gidermek için Tarih sınıfı aşağıdaki gibi değiştirilebilir: class Tarih public: Tarih( int mn, int dy, int yr ); int aysoyle(); int gunsoyle(); int yilsoyle(); int aybelirle( int mn ); int gunbelirle ( int dy ); int yilbelirle( int yr ); void goruntule(); ~Tarih(); private: int ay, gun, yil; };

40 40 ELEMAN SAHALARA ERİŞİM - 2 Erişim fonksiyonları şöyle tanımlanabilir: inline int Tarih::aySoyle() return ay; } inline int Tarih::gunSoyle() return gun; } inline int Tarih::yilSoyle() return yil; }

41 41 ELEMAN SAHALARA ERİŞİM - 3 void Tarih::ayBelirle( int mn ) ay = max( 1, mn ); ay = min( ay, 12 ); } void Tarih::gunBelirle( int dy ) static int uzunluk[] = 0,31,28,31,30,31,30, 31,31,30,31,30,31 }; gun = max( 1, dy ); gun = min( gun, uzunluk[ay] ); } void Tarih::yilBelirle( int yr ) yil = max( 1, yr ); }

42 42 ELEMAN SAHALARA ERİŞİM - 4 Aşağıdaki örnekte main fonksiyonu yeni tanımladığımız erişim fonksiyonlarını kullanmaktadır: int main() int i; Tarih sontarih( 3, 10, 2005 ); i = sontarih.aysoyle(); sontarih.aybelirle( 4 ); sontarih.aybelirle(sontarih.aysoyle()+1); return 0; }

43 43 ELEMAN inline FONKSİYONLAR Soyle fonksiyonları çok kısa olmaları nedeniyle ve çağrımlarının overhead içermemesi nedeniyle inline olarak bildirildiler. Eleman fonksiyonların gövdesini sınıf bildirimi içine yerleştirmeniz halinde inline anahtar sözcüğünü kullanmadan inline bildirimlerini sağlamış olursunuz: class Tarih public: Tarih( int mn, int dy, int yr ); int aysoyle() return ay; } int gunsoyle() return gun; } int yilsoyle() return yil; } //... };

44 44 YAPICI FONKSİYONLARIN AŞIRI YÜKLENMESİ - 1 Yeni eleman fonksiyonlarımızla, bir Tarih nesnesinin nasıl yaratılacağını yeniden belirleyebiliriz: class Tarih public: Tarih(); Tarih( int mn, int dy, int yr ); //... }; Tarih::Tarih() ay = gun = yil = 1;} Tarih::Tarih( int mn, int dy, int yr ) aybelirle( mn ); gunbelirle( dy ); yilbelirle( yr ); }

45 45 YAPICI FONKSİYONLARIN AŞIRI YÜKLENMESİ - 2 void main() Tarih dogum1; Tarih dogum2( 12, 25, 1990 ); } dogum1.aybelirle( 3 ); dogum1.gunbelirle( 12 ); dogum1.yilbelirle( 1985 );

46 46 const NESNELER VE ELEMAN FONKSİYONLAR - 1 Değişkenleri olduğu gibi nesneleri de const olarak bildirebilirsiniz: const Tarih dogum1( 7, 4, 1776 ); Bu tür bildirimler nesnenin sabit olduğu ve dolayısıyla hiçbir eleman sahasının değiştirilemeyeceği anlamına gelir. Bir değişkeni const olarak bildirdiğinizde, derleyici bu değişkenin değerini değiştirebilecek işlemleri tespit edip uygun hata mesajlarını üretebilir. Ancak, derleyici bir eleman fonksiyonun nesnenin eleman sahalarını değiştirip değiştiremeyeceğini belirleyemez. Bu nedenle, hiçbir (sıradan) eleman fonksiyon sabit bir nesne için çağrılamaz.

47 47 const NESNELER VE ELEMAN FONKSİYONLAR - 2 Eğer bir eleman fonksiyon nesnenin hiçbir eleman sahasını değiştirmiyorsa const olarak bildirilebilir ve bu şekilde sabit nesneler için çağrılabilir. const anahtar sözcüğü sabit fonksiyonların hem bildiriminde hem de tanımlanmasında, parametre listesinden sonra, yer alır. Sabit eleman fonksiyonlar ne nesnelerinin eleman sahalarını değiştirebilir, ne de sabit olmayan eleman fonksiyonları çağırabilirler. Eleman fonksiyonlarınızı mümkün olduğunca sabit olarak bildirmelisiniz. Bu, sınıfınızı kullananların sabit nesneler bildirmelerine izin verecektir.

48 48 const NESNELER VE ELEMAN FONKSİYONLAR - 3 class Tarih public: Tarih( int mn, int dy, int yr ); int aysoyle() const; int gunsoyle() const; int yilsoyle() const; int aybelirle( int mn ); int gunbelirle ( int dy ); int yilbelirle( int yr ); void goruntule() const; ~Tarih(); private: int ay, gun, yil; }; inline int Tarih::aySoyle() const return ay; } //... int i; const Tarih dogum1( 7, 4, 1776 ); i = dogum1.yilsoyle(); // Legal dogum1.yilbelirle( 1492 ); // Error

49 49 ELEMAN NESNELER - 1 Bir sınıf, nesneleri eleman olarak içerebilir. Bu şekilde diğer sınıfları bileşen olarak kullanma suretiyle yeni bir sınıf tanımlama işlemine composition denir: class KisiBilgisi public: // Public eleman fonksiyonlar... private: char isim[30]; char adres[60]; Tarih dogumtarihi; }; dogumtarih nesnesi KisiBilgisi sınıfından bir nesne yaratılıncaya kadar yaratılmaz.

50 50 ELEMAN NESNELER - 2 Bir eleman nesne için yapıcı fonksiyon çağrımı, eleman nesneye ilk değer atamalarının yapılmasını gerektirir. Bunun icin yapılması gereken aşağıda örneklenmiştir: class KisiBilgisi public: KisiBilgisi(char *nm, char *adr,int mn, int dy, int yr); //... private: //... };

51 51 ELEMAN NESNELER - 3 KisiBilgisi::KisiBilgisi(char *nm, char *adr, int mn, int dy, int yr) :dogumtarihi( mn, dy, yr ) strncpy( name, nm, 30 ); strncpy( adres, adr, 60 ); } İlk önce Tarih sınıfının yapıcı fonksiyonu çağrılır; böylelikle dogumtarihi nesnesi ilk değerlerini KisiBilgisi sınıfının yapıcı fonksiyonu çalıştırılmadan alır.

52 52 Örnek #include <iostream> using namespace std; #define SIZE 100 // Stack sınıfı: class stack int stck[size]; int tos; public: stack(); // constructor ~stack(); // destructor void push(int i); int pop(); };

53 53 Örnek devam // Yapici Fonksiyon stack::stack() tos = 0; cout << "Stack Initialized\n"; } // Yikici Fonksiyon stack::~stack() cout << "Stack Destroyed\n"; }

54 54 Örnek devam void stack::push(int i) if(tos==size) cout << "Stack is full.\n"; return; } stck[tos] = i; tos++; }

55 55 Örnek devam int stack::pop() if(tos==0) cout << "Stack underflow.\n"; return 0; } tos--; return stck[tos]; }

56 56. Örnek devam int main() stack a, b; // iki stack nesnesi yaratildi a.push(1); b.push(2); a.push(3); b.push(4); cout << a.pop() << " "; cout << a.pop() << " "; cout << b.pop() << " "; cout << b.pop() << "\n"; return 0; }

57 57 Örnek devam Program Çıktısı: Stack Initialized Stack Initialized Stack Destroyed Stack Destroyed

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ı

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ı

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ı

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ı

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ı

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ı

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 THIS İŞARETÇİSİ, KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR,NESNE DİZİLERİ 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

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ı

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ı

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ı

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ı

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ı

Ö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ı

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ı

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ı

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ı

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ı

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ı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I ÇOK BOYUTLU DİZİLER, YAPILAR [MULTIDIMENSIONAL ARRAYS, STRUCTURES] ÇOK BOYUTLU DİZİLER Çok boyutlu diziler tanımlayabiliriz. İki boyutta, çok boyutlu diziler bellek

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ı

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ı

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++ 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ı

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ı

Ö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ı

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ı

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ı

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ı

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ı

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ı

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ı

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-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ı

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ı

Nesneye Dayalı Programlama

Nesneye Dayalı Programlama SAKARYA ÜNİVERSİTESİ Nesneye Dayalı Programlama Hafta 4 Prof. Dr. Ümit KOCABIÇAK Öğr. Gör. Özgür ÇİFTÇİ Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim"

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ı

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ı

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ı

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

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

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ı

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ı

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ı

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ı

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

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

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ı

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ı

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ı

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı

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ı

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ı

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ı

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ı

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ı

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ı

C Programlama Dilinde Değişkenler

C Programlama Dilinde Değişkenler C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına

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ı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 9 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Dizileri Fonksiyonlara Dizileri Fonksiyonlara Bir dizi argümanını fonksiyon içinde bir değer olarak kullanabilmek

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C

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ı

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ı

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli

Detaylı

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır: C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.

Detaylı

Fall Object-Oriented Programming Laboratory 02 - Structures

Fall Object-Oriented Programming Laboratory 02 - Structures 2017-2018 Fall Object-Oriented Programming Laboratory 02 - Structures 10.10.2017 1. Diziler. Bir tamsayi dizisinin elemanlarını ekrana yazdırmak için void printarr(int arr[], int elem_count) prototipli

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ı

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ı

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ı

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ı

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

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kalıtım Kavramı Java da Çok Biçimlilik Kavramı Fonksiyonların Çok Biçimliliği Yapıcı Fonksiyonun Çok Biçimliliği Java da Kalıtım Kavramı 4 Kalıtım;

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ı

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ı

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

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, C++ İÇİN UFAK HATIRLATMALAR Değişken adları bir harf ile başlamalıdır. (a-z, A-Z). Değişken adı numara içerebilir.

Detaylı

Ders 8: Metotlar. barisgokce.com

Ders 8: Metotlar. barisgokce.com Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı

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ı

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ı

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ı

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ı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C ve Fonksiyonlar Fonksiyon Tanımı 8. BÖLÜM 3 Fonksiyonlar

Detaylı

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Çalıştırılabilir C ifadeleri ya bir işlem gerçekleştirir ( girilen verilerin toplanması

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar Ö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

Detaylı

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

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi

Detaylı

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.

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. Bölüm 20 20 Arayüzler Arayüz bir sınıf değildir. Arayüz yazmak sınf yazmaya çok benzer ancak ikisi birbirinden farklı konseptlerdir. Sınıf bir nesnenin özelliklerini ve davranışlarını belirtirken; bir

Detaylı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER DİZİLER Dizi Nedir? Aynı türden nesnelerin oluşturduğu, bellekte bitişik bir biçimde bulunan veri yapısına dizi denir.mesela alfabe diye bir dizi tanımlarız, harfleri a,b,c,d... diye sıralarız.dizinin

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

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ı

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

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ı

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ı

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ı

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ı

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ı

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ı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

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 Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

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

Detaylı

C++ Operatörler (Operators)

C++ Operatörler (Operators) C++ Operatörler (Operators) Konular Operatörler o Aritmetiksel (Matematiksel) Operatörler o Karşılaştırma Operatörleri o Mantıksal Operatörler o Atama Operatörleri o Bit Düzeyinde Operatörler o Özel Amaçlı

Detaylı

Dr. Fatih AY Tel:

Dr. Fatih AY Tel: Bilgisayar Programlama Ders 5 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyonlar Fonksiyonlar Büyük programlar geliştirmenin en iyi yolu, onu orijinal programdan daha kolay

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ı

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ı