CodeBlanks Logo Icon CodeBlanks

Birleştirme

Yardımcı fonksiyonları bir sınıfta birleştirirsin.

Birleştirme

Son derste üç yardımcıyı bir araya getiriyoruz: capitalize, clamp ve formatDate. Önceki derslerin çözümü artık Helpers sınıfının içinde hazır. Şimdi main'de üçünü de çağırıp sonuçlarını yazdıracağız.

Bu dersin başlangıç kodu önceki dersin tüm metotlarını içerir. Senin yapman gereken tek şey main içine üç çağrı eklemek. Böylece kütüphanenin nasıl kullanıldığını görürsün. Çıktı: Merhaba, 10, 2024-03-15 — her biri ayrı satırda.

Yardımcıları birlikte kullanma

Üç yardımcıyı main içinde arka arkaya çağırırız. Her çağrıyı std::endl ile ayırarak çıktıyı ayrı satırlarda gösteririz. Helpers::capitalize("merhaba") bir dize, Helpers::clamp(15, 0, 10) bir sayı, Helpers::formatDate(2024, 3, 15) yine bir dize döndürür.

Üç farklı dönüş türü olmasına rağmen std::cout hepsini yazdırabilir. Bu, C++'ın akış (stream) mimarisinin esnekliğidir. Kütüphaneyi genişletmek istediğinde tek yapman gereken Helpers sınıfına yeni bir statik metot eklemektir; var olan kodu değiştirmene gerek yoktur.

Uygulama Üç yardımcıyı da çağır

main içine üç yardımcıyı da çağır: std::cout << Helpers::capitalize("merhaba") << std::endl;, std::cout << Helpers::clamp(15, 0, 10) << std::endl; ve std::cout << Helpers::formatDate(2024, 3, 15);. Her çıktı ayrı satırda olsun.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>
#include <cctype>

class Helpers {
public:
    static std::string capitalize(std::string text) {
        if (text.empty()) return text;
        text[0] = std::toupper(text[0]);
        return text;
    }
    static int clamp(int value, int min, int max) {
        if (value < min) return min;
        if (value > max) return max;
        return value;
    }
    static std::string formatDate(int year, int month, int day) {
        std::string m = std::to_string(month);
        if (m.length() == 1) m = "0" + m;
        std::string d = std::to_string(day);
        if (d.length() == 1) d = "0" + d;
        return std::to_string(year) + "-" + m + "-" + d;
    }
};

int main() {
    // Üç yardımcıyı da çağır ve sonuçlarını yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>
#include <cctype>

class Helpers {
public:
    static std::string capitalize(std::string text) {
        if (text.empty()) return text;
        text[0] = std::toupper(text[0]);
        return text;
    }
    static int clamp(int value, int min, int max) {
        if (value < min) return min;
        if (value > max) return max;
        return value;
    }
    static std::string formatDate(int year, int month, int day) {
        std::string m = std::to_string(month);
        if (m.length() == 1) m = "0" + m;
        std::string d = std::to_string(day);
        if (d.length() == 1) d = "0" + d;
        return std::to_string(year) + "-" + m + "-" + d;
    }
};

int main() {
    std::cout << Helpers::capitalize("merhaba") << std::endl;
    std::cout << Helpers::clamp(15, 0, 10) << std::endl;
    std::cout << Helpers::formatDate(2024, 3, 15);
    return 0;
}

Beklenen çıktı

Merhaba
10
2024-03-15

Kütüphane tamam

Tebrikler! Beş derslik yardımcı kütüphane projesini tamamladın. Artık Helpers sınıfında üç kullanışlı statik metot var: capitalize, clamp ve formatDate. Her biri belirli bir işi yapar ve Helpers:: önekiyle çağrılır.

Bu proje boyunca sınıf tasarımı, statik metotlar, üye fonksiyonlar ve birikimli kod yapısını practicedin. Sonraki bölümde kapsülleme konusunu derinleştireceğiz: private üyeler, const metotlar, mutable ve friend ile veriyi daha sıkı koruyacağız.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Yardımcı kütüphane neden tek bir sınıfta toplanır?

main.cpp
class Helpers { public: static ... };
  • İsim çakışmasını önler ve kullanımı kolaylaştırır Doğru cevap
  • Bellek tasarrufu için
  • Daha hızlı çalışır diye
  • Derleyici zorunlu kılar

Açıklama: Tek sınıf, isim alanı gibi davranır ve kullanımı kolaylaştırır.

2 capitalize çağrısını tamamla

Soru
std::cout << ____::capitalize("merhaba");
Cevap
std::cout << Helpers::capitalize("merhaba");

Açıklama: Helpers::capitalize statik metot çağrısıdır.

Orta seviye bölümündeki tüm dersler