CodeBlanks Logo Icon CodeBlanks

Kütüphane sınıfı

Library sınıfıyla koleksiyon yönetimini kurarsın.

Library sınıfı

Library sınıfı kitap koleksiyonunu yönetir. İçinde std::vector<Book> books üyesi tutar. addBook(const Book&) metodu yeni kitap ekler, count() metodu kitap sayısını döndürür.

Önceki dersin Book sınıfını alıp üzerine Library sınıfını ekleyeceğiz. std::vector, dinamik dizi sağlar ve push_back ile sona ekleme yapar. const referans parametresi, kitabı kopyalamadan geçirmeyi sağlar. Böylece büyük nesnelerde performans korunur.

addBook ve count

addBook metodu push_back ile vektörün sonuna yeni kitap ekler. count metodu books.size() ile kitap sayısını döndürür. İkisi de public bölümde tanımlanır.

Örnek: lib.addBook(Book("Tutunamayanlar", "Oğuz Atay")); ile kitap eklersin. lib.count() ile sayıyı okursun. const referans parametresi kopyalama maliyetini önler. Bu tasarımla Library sınıfı kitap ekleme ve saymayı destekler; sonraki derslerde ödünç verme ve arama ekleyeceğiz.

Uygulama Library sınıfını ekle

Önceki dersin Book sınıfını al. Altına Library sınıfı ekle: private bölümde std::vector<Book> books ve std::vector<bool> borrowed; public bölümde addBook(const Book&), count() ve getBook(int) metotları. main içinde iki kitap ekle ve sayıyı yazdır.

Başlangıç kodu

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

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; }
};

// Library sınıfını buraya tanımla

int main() {
    // Library oluştur, iki kitap ekle, sayıyı yazdır
    return 0;
}

Örnek çözüm

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

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]; }
};

int main() {
    Library lib;
    lib.addBook(Book("Tutunamayanlar", "Oğuz Atay"));
    lib.addBook(Book("İnce Memed", "Yaşar Kemal"));
    std::cout << lib.count();
    return 0;
}

Beklenen çıktı

2

Soru ve cevaplar

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

1 Vektör üyesini tanımla

Soru
class Library {
private:
    std::____<Book> books;
};
Cevap
class Library {
private:
    std::vector<Book> books;
};

Açıklama: std::vector<Book> dinamik dizi sağlar.

2 std::vector<Book> books; ne yapar?

main.cpp
std::vector<Book> books;
  • Tek bir Book tutar
  • Book sınıfı tanımlar
  • Kitap işaretçisi tanımlar
  • Book koleksiyonu tutar Doğru cevap

Açıklama: vector<Book> birden çok kitabı sıralı tutar.

3 Üyeyi rolüne eşle

Kavram Anlamı
std::vector<Book> books Koleksiyon üyesi
addBook(const Book&) Ekleme metodu
books.push_back(b) Sona ekleme
books.size() Sayı okuma

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