Erişim Belirleyiciler
[vc_row][vc_column][vc_column_text]
Veri gizleme nesneye yönelik programlamanın önemli özelliklerinden biridir. Program fonksiyonlarının sınıf elemanlarına doğrudan erişmeyi engeller. Erişim belirleyiciler 3 çeşittir, bunlar private, public ve protected olarak adlandırılır.
Bir sınıfta birden fazla erişim niteleyici bulunabilir. Erişim niteleyici kullanılmadığı durumda varsayılan olarak private olurlar.
class Belirleyici { public: // public elemanlar protected: // protected elemanlar private: // private elemanlar };
Public Üyeler
Public üyeler sınıfın dışında da kullanılabilir. Public değişkenlerin değerleri üye fonksiyon kullanmadan da değiştirilebilir veya yazdırılabilir.
using namespace std; class Dikdortgen{ public: int uzunluk; int genislik; void setUzunluk(int u); void setGenislik(int g); }; void Dikdortgen::setUzunluk(int u) { uzunluk = u; } void Dikdortgen::setGenislik(int g) { genislik = g; } int main() { Dikdortgen kutu; kutu.setGenislik(5); kutu.uzunluk=10; ///Hata vermez. Bu atama şekli sadece public elemanlara yapılabilir return 0; }
Private Üyeler
Private bir üye fonksiyon veya değişkene sınıfın dışından erişilmesi mümkün değildir. Yalnızca sınıftan veya friend fonksiyonlarla private üyelere erişilebilir. Varsayılan olarak bir sınıfın tüm elemanları private üye olacaktır, örneğin aşağıdaki örnekte uzunluk değişkeni herhangi bir niteleyici altında kalmadığı için private üye olacaktır.
class Dikdortgen{ int uzunluk; /// private üye public: int genislik; void setUzunluk(int u); void setGenislik(int g); };
Yukarıdaki özellikleri kapsayan bir örnek hazırlamak istenirse şöyle bir program yazılabilir:
using namespace std; class Dikdortgen{ public: void setUzunluk(int u); void setGenislik(int g); int getUzunluk(); int getGenislik(); int getAlan(); private: int uzunluk; int genislik; }; /// Üye Fonksiyonların Tanımlamaları void Dikdortgen::setUzunluk(int u) { uzunluk = u; } void Dikdortgen::setGenislik(int g) { genislik = g; } int Dikdortgen::getUzunluk() { return uzunluk; } int Dikdortgen::getGenislik(){ return genislik; } int Dikdortgen::getAlan(){ return uzunluk*genislik; } int main() { Dikdortgen kutu; kutu.setGenislik(5); //kutu.uzunluk=10; ///Hata: Private olan bir elemana doğrudan erişilemez. kutu.setUzunluk(10);/// Üye fonksiyon kullanılmalıdır cout << "kutu uzunlugu: " << kutu.getUzunluk() << endl; //cout << "kutu genisligi: " << kutu.genislik << endl; ///Hata: Private elemana doğrudan erişilemez cout << "kutu genisligi: " << kutu.getGenislik() << endl;/// Üye fonksiyon kullanılmalıdır cout << "kutu alani: " << kutu.getAlan() << endl ; return 0; }
Çıktı:
kutu uzunlugu: 10 kutu genisligi: 5 kutu alani: 50
Protected Üyeler
C++’da kalıtım ile uğraşırken, bazı elemanların “dış dünyaya” private, türetilmiş sınıflara ise public olarak davranmasının istenebileceği durumlar olabilir. C++ dili bu durum için protected anahtar kelimesini sağlıyor.
Protected üyeler private üyelere oldukça benzerdir, tek fark protected üyelere çocuk sınıflardan yani türetilmiş sınıflardan erişilebilir.
using namespace std; class Dikdortgen{ protected: int uzunluk; int genislik; }; class turetilmisDikdortgen:Dikdortgen{///Türetilmiş(çocuk) sınıf public: void setUzunluk(int u); int getUzunluk(); }; /// Çocuk Sınıfın Üye Fonksiyon Tanımlamaları void turetilmisDikdortgen::setUzunluk(int u) { uzunluk = u; } int turetilmisDikdortgen::getUzunluk() { return uzunluk; } int main () { turetilmisDikdortgen kutu; ///kutu.uzunluk = 85;///Hata: Protected üyeye ana veya türetilmiş sınıf dışında erişilemez kutu.setUzunluk(85);/// Üye fonksiyon kullanılmalıdır cout << "kutu uzunlugu: " << kutu.getUzunluk() << endl ; return 0; }
Çıktı:
kutu uzunlugu: 85
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width=”1/2″][vc_btn title=”Önceki Ders” color=”green” align=”left” i_icon_fontawesome=”fa fa-chevron-left” add_icon=”true” link=”url:https%3A%2F%2Fyapbenzet.org.tr%2Fcpp-kalitim%2F|||”][/vc_column][vc_column width=”1/2″][vc_btn title=”Sonraki Ders” color=”green” align=”right” i_align=”right” i_icon_fontawesome=”fa fa-chevron-right” add_icon=”true” link=”url:https%3A%2F%2Fyapbenzet.org.tr%2Fcpp-arkadas-fonksiyonlar-siniflar%2F|||”][/vc_column][/vc_row]