CodeBlanks Logo Icon CodeBlanks

Birleştirme

Kütüphane sınıfını konsol menüsüyle birleştirirsin.

Konsol menüsü

Son ders tüm parçaları birleştirir. main içinde bir döngü kitapları listeler, kullanıcı bir kitap seçer ve checkout ile ödünç verilir. Döngü, lib.count() ve lib.getBook(i) ile koleksiyonu dolaşır.

Önceki derslerin Book ve Library sınıflarını alıp main'i yeniden yazacağız. Menü kitapları 0: Tutunamayanlar biçiminde listeler, sonra 0. kitabı ödünç verir. Bu, projenin tüm parçalarını tek bir çalışan uygulamada birleştirir. Artık kütüphane uygulaması hazır.

Listeleme döngüsü

Menü döngüsü for (size_t i = 0; i < lib.count(); ++i) ile her kitabı dolaşır. lib.getBook(i).getTitle() ile başlığı okur ve std::cout << i << ": " << başlık ile yazdırır. Her satır bir kitabı gösterir.

Listelemeden sonra lib.checkout(0) ile 0. kitabı ödünç veririz. Başarılıysa "ödünç verildi" yazdırırız. Bu basit menü, projenin tüm metotlarını çağırır: addBook ile ekleme, count ve getBook ile listeleme, checkout ile ödünç verme. Gerçek bir uygulamada std::cin ile kullanıcı girişi alırsın.

Uygulama Menü ile listele ve ödünç ver

Önceki dersin tüm sınıflarını al. main içinde iki kitap ekle. Bir for döngüsüyle lib.count() kadar dön ve her kitabı i: başlık biçiminde yazdır. Sonra lib.checkout(0) ile 0. kitabı ödünç ver ve başarılıysa "ödünç verildi" yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

class Book {
private:
    std::string title;
    std::string author;
public:
    Book(std::string t, std::string a) : title(t), author(a) {}
    std::string getTitle() const { return title; }
    std::string getAuthor() const { return author; }
};

class Library {
private:
    std::vector<Book> books;
    std::vector<bool> borrowed;
public:
    void addBook(const Book& b) { books.push_back(b); borrowed.push_back(false); }
    size_t count() const { return books.size(); }
    Book getBook(int idx) const { return books[idx]; }
    bool checkout(int idx) {
        if (idx < 0 || idx >= (int)books.size()) return false;
        if (borrowed[idx]) return false;
        borrowed[idx] = true;
        return true;
    }
    bool searchByTitle(const std::string& t) const {
        auto it = std::find_if(books.begin(), books.end(),
            [&t](const Book& b) { return b.getTitle() == t; });
        return it != books.end();
    }
};

int main() {
    Library lib;
    lib.addBook(Book("Tutunamayanlar", "Oğuz Atay"));
    lib.addBook(Book("İnce Memed", "Yaşar Kemal"));
    // kitapları listele, 0. kitabı ödünç ver ve sonucu yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

class Book {
private:
    std::string title;
    std::string author;
public:
    Book(std::string t, std::string a) : title(t), author(a) {}
    std::string getTitle() const { return title; }
    std::string getAuthor() const { return author; }
};

class Library {
private:
    std::vector<Book> books;
    std::vector<bool> borrowed;
public:
    void addBook(const Book& b) { books.push_back(b); borrowed.push_back(false); }
    size_t count() const { return books.size(); }
    Book getBook(int idx) const { return books[idx]; }
    bool checkout(int idx) {
        if (idx < 0 || idx >= (int)books.size()) return false;
        if (borrowed[idx]) return false;
        borrowed[idx] = true;
        return true;
    }
    bool searchByTitle(const std::string& t) const {
        auto it = std::find_if(books.begin(), books.end(),
            [&t](const Book& b) { return b.getTitle() == t; });
        return it != books.end();
    }
};

int main() {
    Library lib;
    lib.addBook(Book("Tutunamayanlar", "Oğuz Atay"));
    lib.addBook(Book("İnce Memed", "Yaşar Kemal"));
    for (size_t i = 0; i < lib.count(); ++i) {
        std::cout << i << ": " << lib.getBook(i).getTitle() << "\n";
    }
    if (lib.checkout(0)) {
        std::cout << "ödünç verildi";
    }
    return 0;
}

Beklenen çıktı

0: Tutunamayanlar
1: İnce Memed
ödünç verildi

Soru ve cevaplar

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

1 Menüde kitapları listelemek için ne kullanılır?

main.cpp
for (size_t i = 0; i < ???; ++i)
  • std::vector
  • class Book
  • lib.count() Doğru cevap
  • std::sort

Açıklama: lib.count() kitap sayısını verir, döngü sınırı olur.

2 Metodu amacıyla eşle

Kavram Anlamı
lib.count() Kitap sayısı
lib.getBook(i) İ. kitap
lib.checkout(0) Ödünç ver
lib.searchByTitle(t) Başlıkla ara

3 Döngü gövdesini tamamla

Soru
for (size_t i = 0; i < lib.count(); ++i) {
    std::cout << i << ": " << lib.____(i).getTitle() << "\n";
}
Cevap
for (size_t i = 0; i < lib.count(); ++i) {
    std::cout << i << ": " << lib.getBook(i).getTitle() << "\n";
}

Açıklama: lib.getBook(i) ile i. kitaba erişirsin.

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