C++ Hata Düzeneği Güvenliği

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

Download "C++ Hata Düzeneği Güvenliği"

Transkript

1 C++ Hata Düzeneği Güvenliği (exception safety) Ali Çehreli Nesne yaşam süreçleri Hatalar (exceptions) RAII yöntemi Akıllı göstergeler (smart pointers) Hata güvenliği (exception safety) 1

2 Kaynaklar Herb Sutter'ın Guru of the Week bilmeceleri ( Herb Sutter'ın GotW'lerin genişletilmiş hali olan kitabı Exceptional C++ (Türkçesi: "Sıradışı C++") boost.org akıllı göstergeleri Andrei Alexandrescu'nun Loki kütüphanesinin davranışı ayarlanabilen (policy based) akıllı göstergeleri 2

3 Nesne türleri ve yaşam süreçleri Otomatik nesne: Yaşam süreci derleyici tarafından yönetilir; yerel nesneler, parametreler, sınıf ve yapı üyeleri, geçici nesneler Dinamik nesne: Yaşam süreci programcı tarafından belirlenir; new ile başlar, delete ile biter Statik nesne: Yaşam süreci derleyici tarafından yönetilir; bunlar konumuzun dışında 3

4 Otomatik ve dinamik nesneler void foo() A a0; D * d = new D; // dinamik A a1; // < a1 burada sonlanır // < a0 burada sonlanır 4

5 Nesne kurulum adımları 1) Sanal (virtual) üst sınıfların kurulmaları 2) Diğer üst sınıfların kurulmaları 3) Üyelerin tanımlandıkları sırada ilklenmeleri 4) Kurucu işlevin (constructor) işletilmesi 5

6 Nesne sonlanma adımları 1) Sonlandırıcı işlevin (destructor) işletilmesi 2) Üyelerin ve üst sınıfların kuruldukları sıranın tersinde sonlandırılmaları Temel türlerin sonlandırıcıları "boştur". Örneğin int'ler özel bir son değer almazlar, göstergeler (işaretçi (pointer)) gösterdikleri nesneleri sonlandırmazlar, vs. 6

7 Kurulum başarısız olduğunda... 1) O ana kadar kurulmuş olan nesneler ters sırada sonlandırılırlar 2) Eğer nesne için new ile bellekten yer ayrılmışsa, o yer geri verilir Kurulmakta olan nesnenin sonlandırıcı işlevi çağrılmaz 7

8 Nesne kabul edilebilmek için tam olarak kurulmuş olmak gerekir class BirSinif : /* ust siniflar */ /*... */ BirSinif(/*... */) : /* ust siniflarin ve uyelerin ilklenmeleri */ /* kurulumun diger adimlari */ ; // < ancak simdi "nesne"

9 Hata düzeneğinin işleyişi Bir iş yapmaya çalışılırken ( try edilirken ) hata atılabilir ( throw edilebilir ), ve hata yakalanabilir ( catch edilebilir ).

10 Bir try/catch örneği void bir_islev() try bir_is_yap(); isletilmesi_garanti_degil(); catch (const BirHata & hata) /* hata durumu islemleri */ void isletilmesi_garanti_degil() if (bir_kosul) throw BirHata(); bunun_isletilmesi_de_garanti_degil(); 10

11 Program yığıtının temizlenmesi (stack unwinding) Hata yakalanana kadar çıkılan bütün kapsamlardaki bütün nesneler otomatik olarak sonlandırılırlar.

12 Ancak tek hata atılı olabilir Program yığıtının atılmış olan bir hata nedeniyle temizlenmesi sırasında yeni bir hata atılırsa program abort ile hemen sonlanır. İlke: Sonlandırıcı işlevlerden hata sızmasına izin vermeyin. 12

13 C'de güvenli kaynak yönetimi int bir_islev(kaynak ** sonuc) int hata = 0; cikis: Kaynak * k0 = NULL; Kaynak * k1 = NULL; hata = kaynak_ayir(&k0); if (hata) goto cikis; hata = kaynak_ayir(&k1); if (hata) goto cikis; /* r0 ve r1 burada kullaniliyor olsun */ if (hata) goto cikis; /* sahipligi cagirana gecir */ *sonuc = k0; k0 = NULL; kaynak_geri_ver(&k1); kaynak_geri_ver(&k0); return hata; 13

14 C'de güvenli kaynak yönetimi int bir_islev(kaynak ** sonuc) int hata = 0; cikis: Kaynak * k0 = NULL; Kaynak * k1 = NULL; hata = kaynak_ayir(&k0); if (hata) goto cikis; hata = kaynak_ayir(&k1); if (hata) goto cikis; /* k0 ve k1 burada kullaniliyor olsun */ if (hata) goto cikis; /* sahipligi cagirana gecir */ *sonuc = k0; k0 = NULL; kaynak_geri_ver(&k1); kaynak_geri_ver(&k0); return hata; 14

15 C'de güvenli kaynak yönetimi int bir_islev(kaynak ** sonuc) int hata = 0; cikis: Kaynak * k0 = NULL; Kaynak * k1 = NULL; hata = kaynak_ayir(&k0); if (hata) goto cikis; hata = kaynak_ayir(&k1); if (hata) goto cikis; /* k0 ve k1 burada kullaniliyor olsun */ if (hata) goto cikis; /* sahipligi cagirana gecir */ *sonuc = k0; k0 = NULL; kaynak_geri_ver(&k1); kaynak_geri_ver(&k0); return hata; 15

16 C++'da güvenli kaynak yönetimi Kaynak bir_islev() Kaynak k0(/*... */); Kaynak k1(/*... */); /* k0 ve k1 burada kullaniliyor olsun */ /* sahipligi cagirana gecir */ return k0; 16

17 Hata ne zaman atılmalı? a) her hatada mı? b) önemli hatalarda mı? c) iş doğru olarak yapılamadığında mı?

18 Hata ne zaman yakalanmalı? Çok nadiren ve ancak o hata karşısında yapacak bir şey varsa

19 Kaynağın açıkça geri verilmesi... void foo() Kaynak * k = ayir(); /*... */ geri_ver(k); // < acikca 19

20 ... C++'da işe yaramaz void foo() Kaynak * k = ayir(); /*... */ // < hata atilabilir geri_ver(k); // < isletilmeyebilir 20

21 RAII yöntemi (Resource Acquisition Is Initialization) geri verme işlemi sonlanmadır geri verme işlemi sonlandırıcıya ait olmalıdır İlke: Kaynak kod içinde değil, o kaynaktan sorumlu olan sınıfın sonlandırıcı işlevinde geri verilmelidir 21

22 RAII örneği void foo_umutlu() Kaynak * k = ayir(); /*... */ // < hata atilabilir geri_ver(k); // < isletilmeyebilir void foo_raii() KaynakSorumlusu k(ayir()); /*... */ // < hata atilabilir; sorun yok 22

23 Akıllı göstergeler Sorumlusu oldukları nesneleri delete ile sonlandıran RAII nesneleridir Sıradan göstergeler kadar rahat kullanılırlar Daha akıllı da olabilirler 23

24 Bir akıllı gösterge gerçekleştirmesi class AkilliGosterge BirTur * ptr; AkilliGosterge g(new BirTur()); public: explicit AkilliGosterge(BirTur * p = 0) : ptr(p) ~AkilliGosterge() delete ptr; ; 24

25 Bir akıllı gösterge gerçekleştirmesi class AkilliGosterge BirTur * ptr; AkilliGosterge g(new BirTur()); foo(g.get()); public: explicit AkilliGosterge(BirTur * p = 0) : ptr(p) ~AkilliGosterge() delete ptr; BirTur * get() const return ptr; ; 25

26 Bir akıllı gösterge gerçekleştirmesi class AkilliGosterge BirTur * ptr; AkilliGosterge g(new BirTur()); foo(g.get()); public: explicit AkilliGosterge(BirTur * p = 0) : ptr(p) BirTur & r = *g; r.i = 7; ~AkilliGosterge() delete ptr; BirTur * get() const return ptr; BirTur & operator* () const return *ptr; ; 26

27 Bir akıllı gösterge gerçekleştirmesi class AkilliGosterge BirTur * ptr; public: AkilliGosterge g(new BirTur()); foo(g.get()); BirTur & r = *g; r.i = 7; explicit AkilliGosterge(BirTur * p = 0) : ptr(p) g >i = 42; ~AkilliGosterge() delete ptr; BirTur * get() const return ptr; BirTur & operator* () const return *ptr; BirTur * operator >() const return ptr; ; 27

28 Bir akıllı gösterge gerçekleştirmesi class AkilliGosterge BirTur * ptr; public: AkilliGosterge g(new BirTur()); foo(g.get()); BirTur & r = *g; r.i = 7; explicit AkilliGosterge(BirTur * p = 0) : ptr(p) ~AkilliGosterge() delete ptr; g >i = 42; if (!g) /*... */ BirTur * get() const return ptr; BirTur & operator* () const return *ptr; BirTur * operator >() const return ptr; bool operator! () const return ptr == 0; ; 28

29 class AkilliGosterge BirTur * ptr; public: Bir akıllı gösterge gerçekleştirmesi AkilliGosterge g(new BirTur()); foo(g.get()); BirTur & r = *g; r.i = 7; explicit AkilliGosterge(BirTur * p = 0) : ptr(p) ~AkilliGosterge() delete ptr; g >i = 42; if (!g) /*... */ AkilliGosterge g1(g); // HATA g2 = g; // HATA BirTur * get() const return ptr; BirTur & operator* () const return *ptr; BirTur * operator >() const return ptr; bool operator! () const return ptr == 0; private: ; AkilliGosterge(AkilliGosterge const &); AkilliGosterge & operator= (AkilliGosterge const &); 29

30 boost::scoped_ptr #include <boost/scoped_ptr.hpp> typedef boost::scoped_ptr<hayvan> HayvanPtr; void foo() HayvanPtr hayvan(new Kedi); hayvan >oyna(); /*... */ // Kedi burada sonlanir 30

31 boost::shared_ptr (paylaşımlı sahiplik) 31

32 boost::weak_ptr (gözlemci) 32

33 Nesne gider, boost::weak_ptr kalır 33

34 boost::intrusive_ptr (daha hızlı paylaşımlı sahiplik) Türün daha hızlı bir sayma düzeneği bulunmalı Harcanan bellek yalnızca bir T* kadardır İki tane yardımcı işlev tanımlanarak kullanılır: void intrusive_ptr_add_ref(t *); void intrusive_ptr_release(t *); 34

35 boost::scoped_array boost::scoped_ptr gibidir ama delete[]'i çağırır Onun yerine std::vector<birakilligosterge> de düşünülebilir 35

36 boost::shared_array boost::shared_ptr gibidir ama delete[]'i çağırır Onun yerine std::vector<birakilligosterge> de düşünülebilir 36

37 std::auto_ptr (aslında std::transfer_ptr da denebilirmiş) Nesne belirli bir anda en fazla tek auto_ptr tarafından sahiplenilir auto_ptr kopyalandığında veya atandığında sahiplik el değiştirir: hedef yeni sahip haline gelir, kaynak "NULL olur" standart topluluklarla (örneğin vector) kullanılamaz 37

38 C++ Technical Report 1, Boost'taki akıllı göstergelerin bazılarını standart kütüphaneye ekledi std::tr1::shared_ptr std::tr1::weak_ptr başka? 38

39 boost::ptr_vector Barındırdığı göstergelerin eriştirdiği nesnelere de sahiptir vector içindeki göstergeler için teker teker delete'i çağırır 39

40 Hata güvenliğinde iki önemli tarih 1994: Tom Cargill'in "Exception Handling: A False Sense of Security" makalesinde C++ camiasını uyarması: "Atılabilecek hatalar karşısında tam güvenli olarak işleyen bir Stack şablonu yazılamaz" 1997: İlk doğru çözümün Herb Sutter'ın comp.lang.c++.moderated haber grubunda başlattığı Guru of the Week'lerin 8 numaralı konusunda çıkması 40

41 Tom Cargill'in iddiası: T'nin kopyalayıcısının hata atma olasılığı varsa, Stack::pop() tam güvenli olarak yazılamaz template <class T> class Stack int adet_; T * elemanlar_; public: /*... */ /* Elemani en tepeye ekler */ void push(const T &); /* En tepedekini dondurur */ T pop() /*... */ ; T tepedeki = elemanlar_[adet_ 1]; adet_; return tepedeki; 41

42 template <class T> class Stack int adet_; T * elemanlar_; public: /*... */ void push(const T &); Güvenli bir Stack arayüzü /* Tepedekine erisim saglar */ T & top() return stack_[adet_ 1]; ; void pop() adet_; İlke: Arayüzleri hatalara karşı güvenli olacak şekilde tasarlayın 42

43 Üç işlevler kuralı Eğer sonlandırıcı (destructor) kopyalayıcı (copy constructor) atama işleci (operator=) üçlüsünden birisini tanımlamanız gerekmişse, hemen hemen her durumda diğerlerini de en azından tanımsız olarak bildirmeniz gerekir. 43

44 Görünürde güvenlik Bu sınıf güvenli midir? class UmutluSorumlu : private boost::noncopyable Bir * bir_; Iki * iki_; public: UmutluSorumlu() : bir_(new Bir()), iki_(new Iki()) /* kurulumun geri kalani */ ; ~UmutluSorumlu() delete iki_; delete bir_; 44

45 Görünürde güvenlik Güvenli değil! class UmutluSorumlu : private boost::noncopyable Bir * bir_; Iki * iki_; public: UmutluSorumlu() : bir_(new Bir()), iki_(new Iki()) < 1: new hata atabilir, < 2: Iki() hata atabilir /* kurulumun geri kalani */ < 3: baska hata atilabilir ; ~UmutluSorumlu() delete iki_; delete bir_; İlke: Tek sahibin tek nesnesi olsun 45

46 Şimdi her sahibin tek nesnesi var Bu sefer güvenli mi? class SupheliSorumlu BirSorumlusu bir_; IkiSorumlusu iki_; // Bu nesnelerin kopyalama ve atama islemlerinin // guvenli olduklarini varsayalim // (ornegin std::string) public: SupheliSorumlu() : bir_(new Bir()), iki_(new Iki()) /* kurulumun geri kalani */ // Sonlandirici isleve artik gerek yok... ; 46

47 Eğer üyelerin atama işlemleri "normal" ise, bu sınıf güvenli değildir. class SupheliSorumlu std::string bir_; std::string iki_; public: SupheliSorumlu() : bir_( bir ), iki_( iki ) /* kurulumun geri kalani */ // Sonlandirici isleve artik gerek yok... // Bu sinif, yarim atanmis durumda kalabilir: iki_'nin atanma islemi // sirasinda hata atilirsa; bir_ degismistir, iki_ eski degerinde kalir ; 47

48 Tek işlev kuralı Eğer sınıfın birden fazla üyesi varsa, atama işleci (operator=) hemen hemen her durumda en azından tanımsız olarak bildirilmelidir. 48

49 operator= işlecinin bozuk tanımı class Sinif /*... */ Sinif & operator= (const Sinif & sagdaki) if (this!= &sagdaki) // 1) bu nesneyi sonlandir // 2) sagdakinden kopyala < hata atabilir! ; return *this; 49

50 operator= işlecinin modern tanımı class GuvenliSorumlu BirPtr bir_; IkiPtr iki_; string uc_; /*... */ GuvenliSorumlu & operator= (const GuvenliSorumlu & sagdaki) GuvenliSorumlu gecici(sagdaki); // 1) Once kopyalamayi dene this >swap(temp); // 2) Sonra degistir return *this; // < Eski durum bu noktada sonlanir ; // Degis tokus eder; Hata atmaz! void swap(guvenlisorumlu & sagdaki) bir_.swap(sagdaki.bir_); iki_.swap(sagdaki.iki_); uc_.swap(sagdaki.uc_); 50

51 Hata güvenliği garantileri Temel garanti: Kaynak sızıntısı yok ve nesneler kullanılabilir (tutarlı ama kestirilemez) durumdalar Tam garanti: Programın durumunda hiçbir değişiklik yok Hata sızdırmama garantisi: Ne kendisi atar, ne çağırdığı işlevler atar (örneğin std::swap) 51

52 Özet: Hata güvenliği ilkeleri Sonlandırıcı işlevlerden hata sızdırmayın Kaynakları kod içinde açıkça geri vermeyin (RAII) Tek sahibin tek nesnesi olsun Hata atabilecek işleri önceye alın; değişikleri ondan sonra yapın Hata güvenliği sonraya bırakılamaz Bir çok işi birden yapmayın (top() ve pop() gibi) 52

53 Hatırlatma: Akıllı göstergeler boost::scoped_ptr: basit kaynak sorumlusu; kopyalanamaz boost::shared_ptr: paylaşımlı sahiplik (reference counted) boost::weak_ptr: sahipliğe karışmaz; shared_ptr gözlemcisidir std::auto_ptr: sahipliği devreder vs... 53

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ı

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ı

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ı

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ı

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ı

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

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ı

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ı

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ı

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

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I GENEL DERS BİLGİLERİ Öğretim Elemanı : İzzet TAMER Ofis : MUH 311 Ofis Saatleri : Pazartesi: 14:10 15:00, Salı:

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ı

C++11'in Bazı Yenilikleri ve D'deki Karşılıkları

C++11'in Bazı Yenilikleri ve D'deki Karşılıkları C++11'in Bazı Yenilikleri ve D'deki Karşılıkları Ali Çehreli 30 Haziran 2012; Tütev, Ankara http://ddili.org 1 C++11 Kısaltmalar: İlk standart: C++98 2003'teki technical report'un eklenmiş hali: C++03

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ı

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ı

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ı

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

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ı

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ı

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

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

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ı

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ı

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ı

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ı

BİL132 Bilgisayar Programlama II

BİL132 Bilgisayar Programlama II BİL132 Bilgisayar Programlama II 8. Olağandışı durumlar (exceptions) Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yüksel Tarhan Olağandışı durum Kütük bulunamadı Diskte yer kalmadı Nesne referans

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ı

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

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {... Kodlama Sınıf tanımları yazılım sınıflarının diyagramlarından yararlanılarak oluşturulur. Karmaşık veri tiplerine (örneğin sınıf) sahip üyeler referans ya da işaretçi olarak yaratılmalılar. Basit nitelik

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 4 Stack (Yığın, Yığıt) Veri Yapısı Stack Çalışma

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ı

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ı

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ı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 5 Kuyruk VY ve ADT Basit Kuyruk (Simple Queue)

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ı

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ı

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü Yığın İşlemleri Postfix, Prefix, Infix Yrd.Doç.Dr. M. Ali Akcayol 1 Yığındaki elemanlardan sadece en son eklenene erişim yapılır. Yığına ilk eklenen eleman en son elde edilir. FILO (First-in-Last-out)

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

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ı

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

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ı

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

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

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ı

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

Nesne Yönelimli Programlamaya Giriş - 2. Cem Ahmet MERCAN  16/04/2009 Nesne Yönelimli Programlamaya Giriş - 2 Cem Ahmet MERCAN http://www.be.itu.edu.tr/~mercan/ 16/04/2009 Nesne Yönelimli Programlama Kavramlar Class (Sınıf): Nesneyi tanımlayan teorik yapıdır. Nesnenin yetenek

Detaylı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

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

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Barbara Liskov 1 tarafından geliştirilen bu prensip kısaca

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ı

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ı

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir: Gereksiz Kodlar Kaan Aslan 9 Temuz 1997 Kapalı spor salonu, durak yeri, taşıt aracı, en optimum, geri iade etmek, davranış biçimi Bu ifadelerde bir gariplik var, değil mi? Açık spor salonu göreniniz var

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ı

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ı

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

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ Kaynak: C ve Sistem Programcıları Derneği Kurs notu Öğr.Gör.Dr. Mahmut YALÇIN Bilinirlik Alanı Bilinirlik alanı (scope), bir ismin tanınabildiği program aralığıdır.

Detaylı

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

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama İçerik Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili kavramlar Bu hafta:

Detaylı

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016 1. Tanım Stack, doğrusal artan bir veri yapısı olup; insert

Detaylı

Standard Template Library

Standard Template Library Standard Template Library Uluslararası Bilgisayar Enstitüsü Ege Üniversitesi Ahmet Bilgili & Serkan Ergun STL ANSI/ISO Standard C++ ın içerdiği algoritmalar ANSI/ISO Standard C++ ın içerdiği algoritmalar

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ı

Operatörlerin Aşırı Yüklenmesi

Operatörlerin Aşırı Yüklenmesi Operatörlerin Aşırı Yüklenmesi Operatörlerin Aşırı Yüklenmesi Tıpkı fonksiyonlara yaptığımız gibi öperatörlere de aşırı yükleme yapabiliriz.yani, operatörlere normal görevlerinin yanında farklı görevler

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ı

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ı

#ifndef COMPLEX_H #define COMPLEX_H

#ifndef COMPLEX_H #define COMPLEX_H 16.10.2018 2018-2019 Güz Object-Oriented Programming Lab 03 Ön Çalışma - Bir kompleks sayının genliğini ve açısını hesaplamak için gerekli C/C++ fonksiyonları bulun, kütüphanelerini ve prototiplerini yazın,

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ı

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ı

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler Programlama Dilleri 1 Ders 12: Belirleyiciler ve Niteleyiciler Genel Bakış Giriş Yer Belirleyicilerle Bildirim İşlemi auto Belirleyicisi register Belirleyicisi static Belirleyicisi Statik ve Global Değişkenlerin

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ı

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 5. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Programlamaya Giriş Yük. Müh. Köksal Gündoğdu 2 Programlama Dili Bilgisayar dünyası 1960 lardan bu yana pek çok dille tanıştı.

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ı

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

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1 Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1 Arayüz (Interface) Arayüzler, soyut sınıfların bir üst modeli gibi düşünülebilir. Arayüzler tamamen birleştirici bir rol oynamaları

Detaylı

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Ders #2 (2 Kasım 2009) İçerikç Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili

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ı

/*int sayi1, sayi2,toplam=0;

/*int sayi1, sayi2,toplam=0; static void Main(string[] args) { //--------------------1. ders-------------------- -------- / ekrana yazma ekrandan okuma sayısal değerleri okuma yer tutucular basit tip dönüşümü / /int sayi1, sayi2,toplam=0;

Detaylı

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 14.04.2015 Süre : 60 dak. 1. Tür dönüşümleri... olmak üzere iki

Detaylı

Görsel Programlama (Visual Programming)

Görsel Programlama (Visual Programming) Görsel Programlama (Visual Programming) 2014-2015 Bahar Dönemi ListBox 1 2 Bileşeni(Nesnesi) Text Özelliği TextBox nesnesi gibi kullanılabilir 3 Item Ekleme 4 combobox1.maxdropdownitems = 5; combobox1.maxdropdownwidth=200;

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 19: Standart Şablon Kütüphanesi (vector) İçerik 19.1 Standart Şablon Kütüphanesi (STL) 19.2 vector SınıK 19.3 vectortanımı 19.4 vector Elemanlarına

Detaylı

Veri Yapıları Lab Notları 2. Bellek Yönetimi ve Göstericiler

Veri Yapıları Lab Notları 2. Bellek Yönetimi ve Göstericiler Veri Yapıları Lab Notları 2 Bellek Yönetimi ve Göstericiler Bellek Yönetimi Bilgisayar üzerinde bir veri yapısını gerçekleştirebilmek için bilgisayar belleğinin kullanımına ihtiyaç vardır. Çalışan herhangi

Detaylı

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016 1. Tanım Kuyruk, eleman eklemelerin sondan (rear) ve eleman çıkarmaların

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ı

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 Bellek ve Adresleme İşaretçi Kavramı

Detaylı

Lecture 11: Generics

Lecture 11: Generics BLM202E Data Structures Lecture 11: Generics Bilgisayar Mühendisliği Bölümü Öğr. Gör. Musa AYDIN 2014 2015 (Bahar) BLM202E Data Structures - 2015 Spring Java programlama dilinin güçlü özelliklerinden biri

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE) VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE) ACCESS VERİ TABANI (OLE DB - Object Linking and Embedding Data Base) Access veri tabanı kullanılarak oluşturulmuş uygulama; OLEDB çalışmak

Detaylı

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK Yigin & Kuyruk 0 {\ /\ Suhap SAHIN Onur GÖK Yıgın (Stack) son giren ilk çıkan LIFO ilk giren son çıkan Yıgın islemleri(so) ekle push 31 stack overflow 24 31 U U 34 34 3 3 S S Yıgın islemleri(so) al pop

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ı

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ı

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ı

Strings(Karakter Dizisi)

Strings(Karakter Dizisi) Strings(Karakter Dizisi) 0 {\ /\ Suhap SAHIN Onur GÖK 1 Tanımlama ve Kullanım char ad[20]; printf("adinizi girin: "); scanf("%s", ad); printf("\nmerhaba %s\n\n", ad); 2 Tanımlama ve Kullanım char ad[20];

Detaylı

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9 VII 1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9 2 KOD YAZMAYA BAŞLANGIÇ 11.Net Framework 11 Yeni Proje Oluşturmak

Detaylı

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ Asp.NET mimarisinin temelini oluşturan CLASS yapısını kullanarak veri tabanı işlemlerini nasıl daha az kodla ve daha stabil yapabiliriz bunu göreceğiz. Mevzu

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Tür Dönüşümü 1 Farklı türden değişkenlerin aynı ifade içinde işlem görmeleri için tür dönüşümü kullanılır. Tür dönüşümlerini aşağıdaki şekilde gruplara ayırmak mümkündür: Tür Dönüşümleri Bilinçli(explicit)

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ı

const objects & const member functions

const objects & const member functions const objects & const member functions Principle of Least Privilege: Bir yazılım parçasına sadece kesin olarak ihtiyac duyulan karadar erişim izni verilmelidir. Bu yolla bir çok muhtemel hata yakalanabilir

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 - 4 Nesneye Yönelik Programlamaya Giriş Bu

Detaylı

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır. Stack Sınıfı (yığıt) java.util Class Stack java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector java.util.stack Stack (yığıt) sınıfı nesnelerin LIFO (last-input-first-output)

Detaylı

Bağlama (Binding) Kavramı

Bağlama (Binding) Kavramı Bağlama (Binding) Kavramı Programlarda yer alan tüm program elemanlarının - örneğin; değişkenler, altprogramlar vb.- çeşitli özellikleri vardır. Değişkenlerin isim, adres, değer gibi çeşitli özelliklerini

Detaylı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 8. Yrd.Doç.Dr.Hacer Karacan

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 8. Yrd.Doç.Dr.Hacer Karacan NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 8 Yrd.Doç.Dr.Hacer Karacan İçerik İstisna Yönetimi (Exception Handling) İstisna Nedir? İstisna Yakalama Mekanizması İstisna İşleme Modeli İstisnaların Listesi İstisna

Detaylı

Başlangıç Durumuna Getirme ve Temizlik. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1

Başlangıç Durumuna Getirme ve Temizlik. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1 Başlangıç Durumuna Getirme ve Temizlik Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1 Hataların sebepleri... Nesnelerin yanlış biçimde başlangıç durumlarına getirilmesi Uygulamayı yazan kişi

Detaylı