C ++ ile Veri Kapsülleme
Tüm C ++ programları aşağıdaki iki temel unsurdan oluşur:
Program statements (code) - Bu, bir programın eylemleri gerçekleştiren kısmıdır ve bunlara işlev adı verilir.
Program data - Veriler, programın program fonksiyonlarından etkilenen bilgisidir.
Kapsülleme, verileri işleyen verileri ve işlevleri birbirine bağlayan ve hem dış müdahalelerden hem de yanlış kullanımdan koruyan bir Nesne Yönelimli Programlama konseptidir. Veri kapsülleme, önemli OOP konseptine yol açtı.data hiding.
Data encapsulation verileri ve bunları kullanan işlevleri bir araya getiren bir mekanizmadır ve data abstraction sadece arayüzleri açığa çıkaran ve uygulama detaylarını kullanıcıdan gizleyen bir mekanizmadır.
C ++, adı verilen kullanıcı tanımlı türlerin oluşturulması yoluyla kapsülleme ve veri gizleme özelliklerini destekler. classes. Zaten bir sınıfın içerebileceğini inceledikprivate, protected ve publicüyeler. Varsayılan olarak, bir sınıfta tanımlanan tüm öğeler özeldir. Örneğin -
class Box {
public:
double getVolume(void) {
return length * breadth * height;
}
private:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
};
Uzunluk, genişlik ve yükseklik değişkenleri private. Bu, programınızın başka herhangi bir bölümü tarafından değil, yalnızca Box sınıfının diğer üyeleri tarafından erişilebileceği anlamına gelir. Bu, kapsüllemenin elde edilmesinin bir yoludur.
Bir sınıfın parçalarını yapmak public (yani, programınızın diğer bölümlerine erişilebilir), bunları daha sonra beyan etmelisiniz. publicanahtar kelime. Genel tanımlayıcıdan sonra tanımlanan tüm değişkenlere veya işlevlere programınızdaki diğer tüm işlevler tarafından erişilebilir.
Bir sınıfı diğerinin arkadaşı yapmak, uygulama ayrıntılarını ortaya çıkarır ve kapsüllemeyi azaltır. İdeal olan, her bir sınıfın ayrıntılarını olabildiğince diğer tüm sınıflardan gizli tutmaktır.
Veri Kapsülleme Örneği
Genel ve özel üyelerle bir sınıf uyguladığınız herhangi bir C ++ programı, veri kapsülleme ve veri soyutlamasına bir örnektir. Aşağıdaki örneği düşünün -
#include <iostream>
using namespace std;
class Adder {
public:
// constructor
Adder(int i = 0) {
total = i;
}
// interface to outside world
void addNum(int number) {
total += number;
}
// interface to outside world
int getTotal() {
return total;
};
private:
// hidden data from outside world
int total;
};
int main() {
Adder a;
a.addNum(10);
a.addNum(20);
a.addNum(30);
cout << "Total " << a.getTotal() <<endl;
return 0;
}
Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -
Total 60
Yukarıdaki sınıf, sayıları toplar ve toplamı döndürür. Kamu üyeleriaddNum ve getTotal dış dünyaya arayüzler ve kullanıcının sınıfı kullanmak için bunları bilmesi gerekiyor. Özel üyetotal dış dünyadan gizlenmiş, ancak sınıfın düzgün çalışması için gerekli olan bir şeydir.
Strateji Tasarlama
Çoğumuz, onları gerçekten ifşa etmemiz gerekmedikçe, sınıf üyelerini varsayılan olarak özel yapmayı öğrendik. Bu sadece iyiencapsulation.
Bu, en sık veri üyelerine uygulanır, ancak sanal işlevler dahil tüm üyeler için aynı şekilde geçerlidir.