C++
Özet - Kapsülleme
private, getter/setter ve const'u birleştirerek bir Account sınıfı yazarsın.
Özet - Kapsülleme
Bu bölümde kapsüllemeyi derinleştirdik. private üyeler veriyi gizler; getter ve setter kontrollü erişim sağlar ve doğrulama yapar. const metotlar değişmezlik sözü verir; sabit nesneler yalnız bunları çağırabilir.
mutable üyeler const metot içinde de değiştirilebilir; bu önbelleklemede kullanışlıdır. friend fonksiyonlar private üyelere dışarıdan erişebilir; operatör aşırı yüklemede yararlıdır. Şimdi bunları bir araya getiren bir görev yapacağız.
Uygulama Sensor sınıfını kapsüllemeyle tanımla
Sensor sınıfını tanımla. private: altına int reading; ve mutable int reads; ekle. public: altına void setReading(int r) { if (r >= 0) reading = r; }, int getReading() const { reads++; return reading; } ve int getReads() const { return reads; } metotlarını ekle. main içinde bir örnek oluştur, setReading(30) çağır, getReading()'i iki kez çağır ve std::cout ile getReads()'i yazdır.
Örnek çözümü göster
#include <iostream>
class Sensor {
int reading;
mutable int reads;
public:
void setReading(int r) {
if (r >= 0) reading = r;
}
int getReading() const {
reads++;
return reading;
}
int getReads() const {
return reads;
}
};
int main() {
Sensor s;
s.setReading(30);
s.getReading();
s.getReading();
std::cout << s.getReads();
return 0;
}
Uygulama Sensor'a friend fonksiyon ekle
Yukarıdaki Sensor sınıfını al. public: altına friend void report(const Sensor&); arkadaş bildirimini ekle. Sınıf dışında void report(const Sensor& s) { std::cout << "Okuma: " << s.reading; } fonksiyonunu yaz. main içinde Sensor s; oluştur, setReading(25) çağır ve report(s) çağır.
Örnek çözümü göster
#include <iostream>
class Sensor {
int reading;
mutable int reads;
public:
void setReading(int r) {
if (r >= 0) reading = r;
}
int getReading() const {
reads++;
return reading;
}
int getReads() const {
return reads;
}
friend void report(const Sensor&);
};
void report(const Sensor& s) {
std::cout << "Okuma: " << s.reading;
}
int main() {
Sensor s;
s.setReading(25);
report(s);
return 0;
}
Bölüm sonu
Kapsülleme bölümünü tamamladın. Artık private ile veriyi gizleyebiliyor, getter ve setter ile kontrollü erişim sağlıyorsun. const metotlarla değişmezlik sözü veriyor, mutable ile önbellek gibi yan durumları yönetiyorsun.
friend ile gerekli durumlarda dış fonksiyonlara erişim tanıyabildin. Bu beş OOP konusu — sınıflar, yapıcı metotlar, miras, kütüphane tasarımı ve kapsülleme — C++'ın nesne yönelimli tarafının temelini oluşturuyor. Sonraki bölümlerde şablonlar (templates), akıllı işaretçiler ve STO gibi ileri konular seni bekliyor.
Kendini test et
-
Bir getter metodu neden const yapılır?
int getX() const { return x; }
- Daha hızlı çalışsın diye
- Private yapabilmek için
- Nesneyi değiştirmeyeceğini belirtmek için
- Sınıf dışından çağrılabilsin diye
Cevabı göster
Nesneyi değiştirmeyeceğini belirtmek için — const, metodun nesneyi değiştirmeyeceğini söyler.
-
mutable anahtar kelimesini yaz
private: ____ int calls;
Cevabı göster
private: mutable int calls;
Sıradaki ders: static üye değişken