Kütüphane sınıfı
- C++ kursu
- Orta seviye
- Ders 66/116
- 6 dk
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
#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
#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
class Library {
private:
std::____<Book> books;
};
class Library {
private:
std::vector<Book> books;
};
Açıklama: std::vector<Book> dinamik dizi sağlar.
2 std::vector<Book> books; ne yapar?
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 |