C++ ve Nesneye Yönelik Programlama

Dr. Erhan SARIDOĞAN 

 

 

ISBN: 975-6797-58-4

Türkçe, 2. basım, 2004, 424 sayfa

(16,5x24 cm2), 80 gr 1. hamur kağıt.                                   şimdi satın al

Bu kitabımız 26 üniversitede ders kitabı seçilmiştir.

 

Bu kitap, bir nesneye yönelik programlama dili (Object Oriented Programming-OOP) olan ve yaygın olarak kullanılan C++ programlama dilini, herşeyi ile, ele almaktadır. Ayrıca, kitabın ilk bölümünde "Nesneye Yönelik Programlama"nın felsefi yalın bir dille anlatılmıştır. Bu kitap ile üniversite öğrencileri hem nesneye yönelik programlamanın felsefesini öğrenebilirler, hem de C++'ın tüm yönlerini ve özelliklerini öğrenebilirler. Kitap üniversite ders kitabı özelliğinde hazırlanmış olup üniversitelerde nesneye yönelik programlama dersleri için iyi bir ders kitabıdır.

Kitapta OOP özellikleri ön plana çıkartılarak, örneklerle birlikte nesneye yönelik tasarımlarda kullanılan yazılım mühendisliği konuları ele alınmıştır. Üniversitelerin bilgisayar mühendisliği, yazılım mühendisliği, matematik-bilgisayar bölümü, teknoloji fakültelerindeki bölümlere şiddetle önerilir. Ayrıca iyi bir eğitim veren bilgisayar proghramcılığı  bölümleri için de yardımcı ders kitabı olarak kullanılabilir.


 

İÇİNDEKİLER

 

ÖNSÖZ

BÖLÜM  1.  Giriş

1.1.       Bu Kitap Hakkında

1.2.       Bu Kitabı Kimler Okumalı?

1.3.       Kitapta Bulunan Konular

 

BÖLÜM  2.  Programlama Dilleri

2.1.    Programlama Dillerinin Tarihçesi

2.1.1.        Birinci Nesil Diller

2.1.2.        İkinci Nesil Diller

2.1.3.        Üçüncü Nesil Diller 

2.1.4.        Dördüncü Nesil Diller

2.1.5.        Beşinci Nesil Diller

2.1.6.        Yeni Diller

2.2.    Programlama Dillerinin Özellikleri

2.2.1.        Genel Özellikler

2.2.2.        Genel İlkeler

2.2.3.        Nesneye Yönelik Dillerin Özellikleri

2.2.4.        Gerçek Zamanlı Dillerin Özellikleri

2.3.       Dil Seçimi

2.4.       Dillerin Uygulama Alanları

2.5.       Kod Çevrim İşlemi

2.5.1.        Derleyiciler 

2.5.2.        Yorumlayıcılar

2.6.       C++’ın Kökeni

2.6.1.        C’den C++’a Doğru

2.6.2.        C++ Ne İçin Kullanılabilir?

2.6.3.        C ile C++ Birlikte Kullanılabilir mi?

2.7.       Özet

2.8.       Sorular

 

BÖLÜM  3. Yazılım Geliştirme

3.1.       Yazılım

3.1.1.        Yazılım Mühendisliği

3.1.2.        Yazılım ve Donanım

3.1.3.        Etkinlik

3.2.    Yazılımda Aranan Özellikler

3.2.1.        Kullanıma Yönelik Özellikler

3.2.2.        Taşınmaya Yönelik Özellikler

3.2.3.        Yenileştirmeye Yönelik Özellikler

3.3.       Yazılım Yaşam Çevrimi

3.3.1.        Tanımlama

3.3.2.        Geliştirme

3.3.3.        Bakım

3.4.       Yazılım Geliştirme Yöntembilimleri

3.4.1.        Klasik Çevrim

3.4.2.        Artımlı Geliştirme

3.4.3.        Prototipleme

3.4.4.        Spiral Model

3.4.5.        Evrimsel Geliştirme

3.4.6.        Gelişigüzel Geliştirme

3.5.       Yazılım Geliştirme Süreci

3.5.1.        Yazılım Proje Planlaması

3.5.2.        Yazılım Geliştirme Ortamının Kurulması  

3.5.3.        Yazılım İsterleri Çözümlemesi

3.5.3.1.        Sistem Yazılım İsterleri Çözümlemesi

3.5.3.2.        Yazılım Öğe Çözümlemesi

3.5.3.3.        Test Hazırlığı

3.5.4.        Yazılım Tasarımı

3.5.4.1.        Sistem Yazılım Tasarımı

3.5.4.2.        Öğe Tasarımı

3.5.4.3.        Ayrıntılı Tasarım

3.5.4.4.        İzlenebilirlik

3.5.5.        Yazılım Gerçekleştirimi ve Birim Testi 

3.5.5.1.        Yazılım Gerçekleştirimi

3.5.5.2.        Birim Testi  

3.5.6.        Yazılım Tümleştirme ve Test

3.5.7.        Yeterlilik Testi

3.5.8.        Sistem Tümleştirme ve Test

3.5.9.        Sistem Yeterlilik Testi 

3.5.10.        Yazılımı Kullanıma Hazırlama

3.5.10.1.        Yürütülebilir Yazılım

3.5.10.2.        Yazılım Kullanıcı Kılavuzları

3.5.11.        Yazılımı Aktarmaya Hazırlama

3.5.12.        Yazılım Bakımı

3.5.13.        Genel Belge Listesi

3.6.       Özet

3.7.       Sorular

 

BÖLÜM  4. Nesneye Yönelik Tasarım

4.1.    Nesneye Yönelim...

4.1.1.        Nesneye Yönelik Programlama

4.1.2.        Nesne

4.1.2.1.        Nesne Sınıflandırma

4.1.2.2.        Nesne Yapıları

4.1.2.3.        Nesne Gösterimi

4.1.3.        Nesneye Yönelim Özellikleri 

4.1.4.        Nitelik Ölçütleri

4.1.5.        Tipler ve Sınıflar

4.1.6.        Nesne ve Sınıf İlişkisi

4.1.7.        Alttip, Kalıtım ve Bağımsızlık

4.2.    Nesneye Yönelik Çözümleme...

4.2.1.        Çözümleme Çalışmaları

4.2.2.        Nesne Tanımlama

4.2.3.        Modelleme

4.2.4.        Prototipleme

4.3.    Nesneye Yönelik Tasarım

4.3.1.        Gerçekleştirime Uygunluk

4.3.1.1.        Nesneye Yönelik Olmayan Diller İçin Tasarım

4.3.1.2.        Nesneye Yönelik Diller İçin Tasarım

4.3.2.        Nesneye Yönelik Tasarım Aşamaları

4.3.3.        Temel Tasarım İlkeleri

4.3.3.1.        Yapısal İlkeler

4.3.3.2.        Sistem Tabanlı Tasarım

4.3.3.3.        Yazılım Tasarımı

4.3.3.4.        Modüler Tasarım

4.4.    Tasarım Kalıpları

4.4.1.        Kalıp Tanımı ve Özellikleri

4.4.2.        Karşı Kalıplar

4.4.3.        Kalıp Örnekleri

4.5.    Durağan Sistem Tasarımı

4.5.1.        Diyagramlar

4.5.2.        Modüller

4.5.3.        Altsistemler

4.5.4.        Çatılar

4.5.5.        Kütüphaneler

4.6.    Dinamik Sistem Tasarımı

4.6.1.        Dağıtık Bilgi İşleme

4.6.2.        Paralel Bilgi İşleme

4.6.2.1.        İş Sıralama

4.6.2.2.        İş Parçacıkları

4.6.3.        Atık Toplama

4.6.4.        Aykırı Durum Denetimi

4.7.       Özet 

4.8.       Sorular

 

BÖLÜM  5. Temel C Bilgisi

5.1.       C Dili

5.1.1.        C Derleyicisi

5.1.2.        Veri Tipleri

5.1.3.        Veri Tiplerinin Bellekte Gösterimi

5.1.4.        Hatalar ve Uyarılar

5.1.5.        Basit Bir C Programı

5.2.    Fonksiyonlar

5.2.1.        Parametreli Fonksiyonlar

5.2.2.        Değer Döndüren Fonksiyonlar

5.2.3.        Fonksiyon Prototipleri

5.2.4.        void Tipindeki Fonksiyonlar

5.3.       if Yapısı

5.3.1.        Çoklu if Yapıları

5.3.2.        Art Arda if Yapısı

5.4.       switch Yapısı

5.5.    Döngüler

5.5.1.        for Döngüsü

5.5.2.        while Döngüsü

5.5.3.        do-while Döngüsü

5.5.4.        continue Deyimi

5.5.5.        İç içe Döngüler

5.6.       goto Deyimi

5.7.       Kod Öbekleri

5.8.    Karakter ve Sözce...

5.9.    Anahtar Sözcükler...

5.10.     Veri Tipleri  

5.10.1.        struct Deyimi

5.10.2.        union Deyimi

5.10.3.        typedef Anahtar Sözcüğü

5.11.    Değişken Bildirimi...

5.11.1.        const Anahtar Sözcüğü

5.11.2.        volatile Anahtar Sözcüğü

5.11.3.        Değişkenlere İlk Değer Atanması

5.12.    Operatörler 

5.13.     Tip Çevrimi  

5.14.     Diziler  

5.14.1.        Karakter Dizileri  

5.14.2.        İki Boyutlu Diziler/Matrisler

5.15.     Saymal Tipler 

5.16.    İşaretçiler  

5.16.1.        İşaretçi Operatörleri

5.16.2.        İşaretçi İşlemleri

5.16.3.        Diziler ve İşaretçiler

5.17.    Dinamik Bellek Denetimi

5.18.    Önişlem

5.18.1.        Önişlem Aşamaları

5.18.2.        Üçlü Diziler

5.18.3.        Makro Tanımı ve Açılımı

5.18.4.        # ve ## Operatörleri

5.18.5.        Dosyaların Dahil Edilmesi

5.18.6.        Koşullu Derleme

5.18.7.        Hata Direktifi

5.18.8.        Pragma

5.19.     Özet 

5.20.     Sorular

 

BÖLÜM  6. C++’a Giriş

6.1.       Nesne

6.2.    Çokşekillilik

6.3.       Kalıtım

6.4.    Anahtar Sözcükler...

6.5.       Yeni Tipler

6.5.1.        bool Tipi

6.5.2.        wchar_t Tipi

6.5.3.        Değişken İlklendirilmesi

6.6.       Özel Operatörler...

6.7.    Ekkullanım

6.7.1.        Operatör Ekkullanımı

6.7.2.        Fonksiyon Ekkullanımı

6.8.       Tip Kontrolü

6.9.       C++ Sürümü

6.10.     Özet

6.11.     Sorular

 

BÖLÜM  7. C++’ın Temel Özellikleri

7.1.    Kapsam

7.2.    Aduzayları

7.3.       Kod Öbekleri

7.4.    Giriş/Çıkış

7.5.    Açıklamalar

7.6.    Değişken Bildirimi...

7.7.       Satıriçi Fonksiyonlar

7.8.       Komut Satırı Değişkenleri

7.9.    Sabitlerin Kullanımı

7.10.     Başlık Dosyaları

7.11.     Veri Özellikleri

7.11.1.        Veri Tipi

7.11.2.        Saklama Sınıfı

7.11.3.        Değişken Ömrü

7.11.4.        Bağlama

7.12.    Dinamik Bellek Denetimi

7.12.1.        new Operatörü

7.12.2.        delete Operatörü

7.12.3.        new ve delete Operatörlerinin Ekkullanımı

7.13.    Önişlemci İle Satır Denetimi

7.14.     Özet

7.15.     Sorular

 

BÖLÜM  8. Sınıflar ve Nesneler

8.1.       Sınıf 

8.2.       Nesne

8.2.1.        Karmaşık Nesneler

8.2.2.        Nesne Yapıcı ve Yokediciler

8.3.    Yapıcılar

8.3.1.        Yapıcıların Kullanımı

8.3.2.        Yapıcılar Üzerindeki Kısıtlamalar

8.3.3.        Yapıcıların Çağrılması

8.3.4.        Varsayılan Değişkeni Olan Yapıcılar

8.3.5.        Parametreli Yapıcılar

8.3.6.        Varsayılan Yapıcılar

8.3.7.        Kopyalayıcı Yapıcılar

8.3.8.        Tip Çevirici Yapıcılar

8.3.9.        Ekkullanımla Yüklenmiş Yapıcılar

8.3.10.        explicit Kullanımı

8.4.    Yokediciler

8.5.    Yardımcı Fonksiyonlar

8.6.       Özet

8.7.       Sorular

 

BÖLÜM  9. Kalıtım

9.1.    Kalıtım Nedir?

9.2.    Kalıtımda Kısıtlamalar

9.3.    Basit Kalıtım  

9.4.    Erişim Denetimi 

9.4.1.    Düşey Erişim Denetimi  

9.4.2.    Yatay Erişim Denetimi  

9.5.    Çoklu Kalıtım  

9.5.1.     Durağan Çoklu Kalıtım 

9.5.1.1.      Belirsiz Durumlar

9.5.1.2.      Sanal Temel Sınıflar 

9.5.2.      Dinamik Çoklu Kalıtım

9.6.    Özet

9.7.    Sorular

 

BÖLÜM  10. Fonksiyon Ek-kullanımı

10.1.    Yapıcıların Ekkullanımı

10.1.1.        Yapıcılarla Dinamik Değer Atama

10.1.2.        Ekkullanımın Amacı

10.2.     this Anahtar Sözcüğü

10.3.    Operatör Ekkullanımı

10.3.1.        Operatör Fonksiyonlarının Kısıtlamaları

10.3.2.        Tekli Operatörler   

10.3.3.        İkili Operatörler  

10.3.4.        Atama Operatörü 

10.3.5.        Erişim Operatörü   

10.3.6.        Toplama Operatörü  

10.3.7.        Artırma ve Azaltma 

10.4.    Yardımcı Operatör Fonksiyonları

10.5.    Çevirici Operatör Fonksiyonları

10.5.1.        Klasik Tip Çevrimi   

10.5.2.        Yeni Tip Çevrimi  

10.6.    Adresler

10.6.1.        Parametre Olmayan Adres Değişkenleri  

10.6.2.        Adres Kullanımındaki Kısıtlamalar  

10.6.3.        Tekli Operatörlerde Adreslerin Kullanımı  

10.6.4.        Bir Başka Operatör Ekkullanım Örneği  

10.7.     Özet

10.8.     Sorular

 

BÖLÜM  11. Çokşekillilik

11.1.    Türetilmiş Sınıf İşaretçileri

11.2.     Sanal Fonksiyonlar

11.2.1.        Neden Sanal Fonksiyonlar Kullanılır?

11.2.2.        Asıl Sanal Fonksiyonlar

11.2.3.        Erken veya Geç Bağlama

11.3.    Türetilmiş Sınıflarda Yapıcılar ve Yokediciler...

11.4.     Birden Fazla Temel Sınıfla Türetme

11.5.     Özet

11.6.     Sorular

 

BÖLÜM  12. Giriş/Çıkış İşlemleri

12.1.     Neden Özel Bir Sistem?

12.2.    Kanallar

12.2.1.        C++ Akış Sınıfları

12.2.2.        Sınıflar İçin Giriş/Çıkış Fonksiyonları Yaratılması

12.3.     Biçimli Giriş/Çıkış

12.3.1.        ios Üye Fonksiyonları İle Biçimleme

12.3.2.        İşleyicilerin Kullanılması

12.3.3.        Kullanıcı Tanımlı İşleyici Fonksiyonlar

12.4.     Dosya Giriş/Çıkış

12.4.1.        Metin Dosyalarında Giriş/Çıkış

12.4.2.        İkili Dosyalarda Giriş/Çıkış

12.4.3.        Rasgele Erişim

12.5.     Özet

12.6.     Sorular

 

BÖLÜM  13.Tekrar Kullanım

13.1.    Tasarım Kullanımı..

13.2.     Kod Kullanımı

13.2.1.        Taşıma

13.2.2.        Temsilcilik

13.2.3.        Parametreli Kullanım

13.2.4.        Özel Türetim

13.3.    Saklama Yerinin Tekrar Kullanımı

13.4.     Hazır Kodun Kullanımı

13.5.     Tekrar Kullanım İçin Temel Kurallar

13.6.     Özet

13.7.     Sorular

 

BÖLÜM  14. Parametreli Tipler ve Kalıplar

14.1.     Kalıp Gereksinimi...

14.2.     Kalıp Yapısı  

14.2.1.        Kalıp Oluşturma    

14.2.2.        Kullanım Kuralları  

14.2.3.        Kalıp Parametreleri   

14.3.     Kalıp Fonksiyonlarının Yüklenmesi...

14.4.    Yardımcı Fonksiyonlar   

14.5.    Fonksiyon Kalıpları

14.5.1.        Kalıtım İle İşlem Eklenmesi  

14.5.2.        İşlemlerin Değişken Olarak Geçirilmesi   

14.5.3.        İşlemlerin Kendiliğinden Geçirilmesi  

14.5.4.        Kalıp Parametresi Olarak İşlem Eklenmesi  

14.6.    Donanım ve Kalıplar

14.7.     Bir Kalıp Örneği : Liste ve Set..

14.8.     Kalıp Fonksiyonları Nasıl Üretilirler?

14.9.    Kalıplarda Durağan Üyeler

14.10.    Standart Kalıp Kütüphanesi

14.11.   Özet

14.12.   Sorular

 

BÖLÜM  15. Aykırı Durumların Denetimi

15.1.     Aykırı Durum   

15.1.1.        Aykırı Durumların Bildirimi

15.1.2.        Aykırı Durum Denetimi  

15.1.3.        Aykırı Durum Denetim Sırası  

15.1.4.        Denetçilerde Uyuşma  

15.1.5.        Aykırı Durum Denetim Birimleri  

15.2.     Geri Kazanma  

15.3.     assert Kullanımı

15.4.     Özel Amaçlı Fonksiyonlar

15.5.     Özet 

15.6.     Sorular

 

BÖLÜM  16. C++ Ortamında C’nin Kullanılması

16.1.    Fonksiyonlar

16.1.1.        Çağrı ve Kapsam

16.1.2.        Prototipler

16.1.3.        Parametreler

16.1.3.1.        Adresle Geçirilen Parametreler   

16.1.3.2.        Değişken Sayıda Parametreler  

16.2.     const Tip Belirleyicisi

16.3.     C ile C++’ın Birleştirilmesi

16.3.1.        Tasarımla İlgili Durumlar

16.3.2.        C Bağlantısı

16.3.3.        C İçinden C++ Kodunu Çağırma  

16.3.4.        Başlık Dosyalarının Ortak Kullanımı   

16.3.5.        Verilerin Ortak Kullanımı

16.4.     asm Deyimi

16.5.     Özet

16.6.     Sorular

 

BÖLÜM  17. Geliştirme Önerileri

17.1.    Yönetsel Öneriler

17.2.    Tasarıma Yönelik Öneriler

17.2.1.        Tasarım

17.2.2.        Modüler Tasarım

17.2.3.        Modül Oluşturma

17.2.4.        Tekrar Kullanım

17.2.5.        Tasarım Riskleri

17.3.    Gerçekleştirime Yönelik Öneriler

17.3.1.        Kod Yazımı

17.3.2.        Kodlamada Şekilsellik

17.3.3.        İsimlendirme

17.3.4.        Kod Belgelendirmesi

17.3.5.        C Kullanıcıları İçin Öneriler

17.3.6.        Hata Ayıklama

17.3.7.        Gerçekleştirim Riskleri

17.4.    Sınamaya Yönelik Öneriler

17.4.1.        Plan ve Yönetim

17.4.2.        Sık Derleme ve Test

17.4.3.        Gerçekleştirim Hataları

17.4.4.        Birim Testi

17.4.5.        Test Riskleri

17.5.     Özet

 

Ek A. Tasarım ve Gerçekleştirim Örnekleri

A.1.    Tasarım Örneği

A.2.     Kalıp Kullanımına Bir Örnek

A.3.     ?ekil Üretim Örneği

A.3.1.        Çoklu Kalıtım

A.3.2.        Çokşekillilik

A.3.3.        Sanal Üyeler

A.3.4.        Sanal Temel Sınıf

 

Ek B. Kullanıcı Tanımlı Tip Örnekleri

B.1.    Sözce

B.2.    BüyükSayı

B.3.    Vektör

B.4.    RasyonelSayı

 

Ek C. UML

C.1.      UML Diyagramları

C.1.1.        Modelleme Elemanları  

C.1.2.        Nesneler Arası İlişkiler

C.1.3.        Diyagramlar 

C.2.    Kullanım Senaryoları

C.2.1.        Aktörlerin ve Kullanım Senaryolarının Bulunması

C.2.2.        Kullanım Senaryolarının Detaylandırılması

C.2.3.        Kullanım Senaryosu Modelinin Yapılandırılması

C.3.      UML İle Tasarım...

C.3.1.        Yapısal Tasarım

C.3.2.        Davranış Tasarımı

C.3.3.        Ayrıntılı Yapısal Tasarım

C.3.4.        Ayrıntılı Davranış Tasarımı

C.3.5.        Ayrıntılı Sistem Mimarisi

C.4.    Gerçekleştirim

C.5.    Belgelendirme

 

Ek D. ASCII Tabloları

D.1.    Standart ASCII

D.2.    Genişletilmiş ASCII

 

KAYNAKÇA

 

DİZİN


Diğer programlama ve mühendislik kitaplarımızı incelemek için buraya tıklayınız.


Programlama Kitapları - Bilgisayar Kitapları - Üniversite Ders Kitapları