DEFENSIVE C++: DESIGN BY CONTRACT & FEATURES IN C++ EĞİTİMİ

Sözleşmeyle güvenli C++ yaz

Design by Contract, ön/son koşul, invariant ve C++ dil özellikleriyle sözleşme uygulama

Defensive C++: Design by Contract eğitimi; Design by Contract Temelleri, Ön ve Son Koşullar, Sınıf Invariant'ları, assert ve static_assert ve daha fazlası. 2 gün, uygulamalı lab çalışmaları, Digital Vizyon Akademi katılım sertifikası.

2 gün İleri Seviye Online / Yüz Yüze / Hibrit Sertifikalı

Eğitim Hakkında

Sözleşme Kavramları ve C++ Özellikleri ile Sözleşme ekseninde ilerleyen uygulamalı program

Bu eğitim Design by Contract yaklaşımını C++ içinde uygulamayı anlatır: ön koşul, son koşul ve sınıf invariant'ı, sözleşme ihlalinin sorumlusunu belirleme, assert ve static_assert, [[nodiscard]], noexcept, explicit, delete edilen fonksiyonlar, concepts (C++20) ve C++26 Contracts önerisine bakış. Sözleşmeleri sınıf arayüzlerine, test kodlarına ve belgelemeye taşıma pratik örneklerle çalışılır.

Süre ve Format

2 Gün. Her gün dört modül; 1. gün Sözleşme Kavramları; 2. gün C++ Özellikleri ile Sözleşme.

Seviye

İleri Seviye — Design by Contract, ön/son koşul, invariant ve C++ dil özellikleriyle sözleşme uygulama

Öğrenme Metodu

Her modülde kısa konu anlatımının ardından g++/clang++ ile derlenen kod egzersizleri yapılır; sanitizer ve derleyici uyarılarıyla hatalar birlikte ayıklanır.

Neden Bu Eğitim?

💻Kod Odaklı Öğrenme

Defensive C++: Design by Contract konuları her modülde yazıp çalıştırdığınız egzersizlerle pekiştirilir; teori kodla birlikte ilerler.

🐞Gerçek Hata Örnekleri

Sahada sık görülen hatalar bilinçli olarak üretilir, nedenleri incelenir ve kalıcı çözüm kalıpları gösterilir.

🎓Katılım Sertifikası

Eğitimi tamamlayan katılımcılar Digital Vizyon Akademi Katılım ve Başarı Sertifikası alır.

Anahtar Konular

Defensive C++: Design by Contract eğitimiDefensive C++: Design by Contract kursudesign by contract C++C++ conceptsC++ invariantC++26 contractsGSL Expects Ensuresdefensive C++Digital Vizyon Akademi
“Sözleşmesi belli bir arayüz, yarım kalan bir tartışmayı bitirir.”

Ön Koşullar

Eğitimden verim almak için faydalı olacak bilgi ve ortam gereksinimleri

1
C++ Temelleri

Değişken, fonksiyon, sınıf ve işaretçi kavramlarına temel düzeyde aşinalık beklenir.

2
Derleyici Ortamı

g++ / clang++ veya MSVC ile C++17 standardında derleme yapabilen bir kurulum gerekir.

3
Komut Satırı

Derleme çıktılarını ve hata mesajlarını okuyabilecek kadar terminal alışkanlığı faydalıdır.

4
Editör veya IDE

VS Code, CLion ya da Visual Studio gibi bir geliştirme ortamı hazır olmalıdır.

Eğitim İçeriği

Programın gün gün akışı aşağıdadır. Bir güne tıklayarak o günün modüllerini ve içeriklerini görebilirsiniz.

Günün hedefiKatılımcı Katılımcı bir fonksiyon ve sınıf için sözleşmeyi tanımlar ve ihlalin sorumlusunu belirler.
Modül 1
Design by Contract Temelleri
  • Bertrand Meyer'in sözleşme modeli ve Eiffel kökeni
  • Çağıran ve çağrılan tarafın yükümlülükleri
  • Zayıf ön koşul, güçlü son koşul kuralı
  • Liskov ikame ilkesi ile sözleşme ilişkisi
  • Sözleşme ihlali: hata kimde?
  • Belgeleme ve sözleşme yorum satırlarının formu
Modül 2
Ön ve Son Koşullar
  • Ön koşulun fonksiyon girişinde denetlenmesi
  • Son koşulun return öncesi denetimi (scope guard ile)
  • Çıkış yollarının çokluğunda son koşul garantisi
  • std::optional ve boş değer ön koşulu
  • İstisna güvenliği ile son koşul ilişkisi
  • Basit bir banka hesabı sınıfında örnek sözleşmeler
Modül 3
Sınıf Invariant'ları
  • Her public fonksiyon çıkışında geçerli olan koşul
  • private veri ve public arayüz ile invariant koruma
  • Invariant denetim fonksiyonu (check_invariant)
  • Yapıcıda invariant kurma, hatalıysa istisna fırlatma
  • Getter/setter tuzakları ve invariant ihlali
  • Çok iş parçacıklı durumda invariant
Modül 4
assert ve static_assert
  • assert makrosu ve NDEBUG ile kapatma
  • static_assert ile derleme zamanı sözleşmesi
  • Özel CONTRACT_EXPECTS / ENSURES makroları yazımı
  • İhlalde abort, istisna veya log seçenekleri
  • Test ortamında ihlali yakalama
  • Üretimde sözleşme denetimini sürdürme tartışması
Günün hedefiKatılımcı C++ dil özelliklerini sözleşmeyi koda gömmek için kullanır ve concepts ile şablon sözleşmeleri yazar.
Modül 1
Tip Sistemiyle Sözleşme
  • explicit, = delete ve = default ile niyet bildirimi
  • const ve noexcept'in sözleşme anlamı
  • [[nodiscard]] ve [[maybe_unused]] nitelikleri
  • enum class ve güçlü tipler
  • override ve final ile sanal fonksiyon sözleşmesi
  • std::span ve not_null (gsl) türleri
Modül 2
Concepts ile Şablon Sözleşmesi
  • requires ifadesi ve concept tanımı (C++20)
  • std::integral, std::regular gibi hazır concept'ler
  • Anlaşılır derleme hatası mesajları
  • SFINAE yerine concept kullanımı
  • Kısıtlı otomatik tip: void f(std::integral auto x)
  • Kendi concept'inizi yazma alıştırması
Modül 3
GSL ve Contracts Önerisi
  • C++ Core Guidelines I ve E bölümlerine özet bakış
  • gsl::Expects, gsl::Ensures kullanımı
  • C++26 Contracts: pre, post, contract_assert
  • İhlal işleme modları (ignore, observe, enforce)
  • Derleyici destek durumu ve geçiş stratejisi
  • Sözleşmelerin test ve fuzzing ile birlikte kullanımı
Modül 4
Uygulamalı Tasarım
  • Sözleşmeli bir RingBuffer sınıfının tasarımı
  • Birim testlerle sözleşme ihlal senaryoları (GoogleTest death test)
  • Sözleşme ihlali loglama ve tanılama
  • Eski kod tabanına kademeli sözleşme ekleme
  • Kod incelemesi kontrol listesi
  • Takım içi sözleşme standardı oluşturma

Eğitim Kazanımları

Program sonunda katılımcılar:

✅
Sözleşme Modeli

Fonksiyon ve sınıf için ön koşul, son koşul ve invariant'ı tanımlayabilirsiniz

✅
Sorumluluk Ayrımı

Sözleşme ihlalinde hatanın çağıran mı çağrılan mı olduğunu belirleyebilirsiniz

✅
Invariant Koruma

Public arayüzle sınıf invariant'ını sürekli doğru tutabilirsiniz

✅
assert Kullanımı

assert ve static_assert ile çalışma ve derleme zamanı sözleşmesi yazabilirsiniz

✅
Tip Güvenliği

explicit, delete, nodiscard gibi araçlarla niyeti koda yazabilirsiniz

✅
Concepts

C++20 concepts ile şablon parametrelerine açık sözleşme getirebilirsiniz

✅
Contracts Önerisi

C++26 Contracts yaklaşımını mevcut kod tabanıyla ilişkilendirebilirsiniz

✅
Testli Sözleşme

Sözleşme ihlallerini birim ve death testlerle doğrulayabilirsiniz

Kimler İçin Uygundur?

  • Kütüphane veya API tasarlayan
  • arayüz sözleşmelerini açık hale getirmek isteyen orta-ileri düzey C++ geliştiricileri için uygundur

Sıkça Sorulan Sorular

Bu eğitim kimler için uygundur?
Kütüphane veya API tasarlayan, arayüz sözleşmelerini açık hale getirmek isteyen orta-ileri düzey C++ geliştiricileri için uygundur.
Eğitimde hangi konular işlenir?
Program 2 gün sürer ve şu modülleri içerir: Design by Contract Temelleri, Ön ve Son Koşullar, Sınıf Invariant'ları, assert ve static_assert, Tip Sistemiyle Sözleşme, Concepts ile Şablon Sözleşmesi, GSL ve Contracts Önerisi, Uygulamalı Tasarım.
C++26 Contracts şu an kullanılabilir mi?
Derleyici desteği kısıtlıdır; eğitimde bugün üretimde kullanılabilen assert, concepts ve GSL yaklaşımı ana eksendir, Contracts ise geleceğe dönük tanıtılır.
Sözleşme ile istisna işlemi nasıl ayrılır?
Programcı hatası sözleşme ihlalidir ve genellikle sonlandırılır; ortam kaynaklı hatalar ise istisna veya hata dönüşüyle yönetilir. Eğitimde bu ayrım örneklenir.
Eğitim sonunda sertifika verilir mi?
Eğitimi tamamlayan katılımcılara Digital Vizyon Akademi Katılım ve Başarı Sertifikası verilir; programın dışında bir resmi sınav söz konusu değildir.

Sertifikalandırma

Bu eğitim Digital Vizyon Akademi Başarı Sertifikası ile tamamlanır.

Eğitim başında “Ön Test”, bitiminde “Son Test” uygulanarak gelişim ölçümlenir. Değerlendirme formunu dolduran katılımcılar sertifikalarını alır. Sertifikanızın geçerliliğini Sertifika Sorgulama sayfasından doğrulayabilirsiniz.

Örnek Sertifika d Digital Vizyon AKADEMİ KATILIM SERTİFİKASI Bu sertifika [Katılımcı Adı Soyadı] adlı katılımcının aşağıdaki eğitim programını başarıyla tamamladığını belgeler. Defensive C++: Design by Contract & Features in C++ Eğitimi Sertifika Kodu DV-2026XX00 Tarih 27.10.2026 Yetkili İmza DV AKADEMİ

Eğitim Bilgileri

Süre2 gün
Seviyeİleri Seviye
FormatOnline / Yüz Yüze / Hibrit
Sertifika✓ Var
Hemen Bilgi Al
İlgili Eğitimler

Bu Eğitimle Birlikte Tercih Edilenler

C ve C++Defensive C++: Software Engineering Principles & Types of Errors Eğitimi
Yazılım Geliştirme Eğitimleri

Defensive C++: Software Engineering Principles & Types of Errors Eğitimi

2 günOrtaOnline / Yüz Yüze / Hibrit

Defensive C++: Mühendislik İlkeleri ve Hata Türleri eğitimi: 2 gün, uygulamalı kod egzersizleri ve DVA katılım sertifikası ile konuyu uçtan uca öğrenin.

Detayları Gör →
C ve C++Defensive C++: Writing Defensive C++ Code Eğitimi
Yazılım Geliştirme Eğitimleri

Defensive C++: Writing Defensive C++ Code Eğitimi

2 günİleriOnline / Yüz Yüze / Hibrit

Defensive C++: Savunmacı Kod Yazımı eğitimi: Güvenli Veri İşleme ve Dayanıklı Kod Kalıpları konularını uygulamalı örneklerle öğrenin. DVA katılım sertifikalı pr

Detayları Gör →
C ve C++Defensive Coding Best Practices for C/C++ Eğitimi
Yazılım Geliştirme Eğitimleri

Defensive Coding Best Practices for C/C++ Eğitimi

2 günİleriOnline / Yüz Yüze / Hibrit

Defensive Coding Best Practices C/C++ eğitimi: 2 gün, uygulamalı kod egzersizleri ve DVA katılım sertifikası ile konuyu uçtan uca öğrenin.

Detayları Gör →
C ve C++Defensive Coding for C/C++ Eğitimi
Yazılım Geliştirme Eğitimleri

Defensive Coding for C/C++ Eğitimi

2 günOrtaOnline / Yüz Yüze / Hibrit

Defensive Coding for C/C++ eğitimi: Girdi ve Bellek Güvenliği ve Hata Yönetimi ve Doğrulama konularını uygulamalı örneklerle öğrenin. DVA katılım sertifikalı pr

Detayları Gör →
C ve C++Defensive Coding Fundamentals for C/C++ Eğitimi
Yazılım Geliştirme Eğitimleri

Defensive Coding Fundamentals for C/C++ Eğitimi

2 günTemelOnline / Yüz Yüze / Hibrit

Defensive Coding Fundamentals C/C++ eğitimi: Hatanın Anatomisi ve Güvenli Kodlama Alışkanlıkları uygulamalı lab çalışmalarıyla işlenir. DVA katılım sertifikalı.

Detayları Gör →
+90 (501) 369 40 14 WhatsApp [email protected] LinkedIn