C ++ Kapsülleme (Örneklerle)

Bu eğitimde, örnekler yardımıyla C ++ 'da kapsülleme hakkında bilgi edineceğiz.

Kapsülleme, nesne yönelimli programlamanın temel özelliklerinden biridir. Veri üyelerinin ve işlevlerin tek bir sınıf içinde toplanmasını içerir.

Bir sınıf içinde benzer veri üyelerini ve işlevleri bir araya getirmek, veri gizlemeye de yardımcı olur.

C ++ Kapsülleme

Genel olarak, kapsülleme, benzer kodu tek bir yere sarma işlemidir.

C ++ 'da, tek bir sınıf içinde birlikte çalışan veri üyelerini ve işlevleri paketleyebiliriz. Örneğin,

 class Rectangle ( public: int length; int breadth; int getArea() ( return length * breadth; ) );

Yukarıdaki programda, fonksiyon getArea()bir dikdörtgenin alanını hesaplar. Alanı hesaplamak için uzunluk ve genişliğe ihtiyacı vardır.

Bu nedenle, veri üyeleri (uzunluk ve genişlik) ve işlev sınıfta bir getArea()arada tutulur Rectangle.

C ++ ile kapsülleme

Örnek 1: C ++ Kapsülleme

 // Program to calculate the area of a rectangle #include using namespace std; class Rectangle ( public: // Variables required for area calculation int length; int breadth; // Constructor to initialize variables Rectangle(int len, int brth) : length(len), breadth(brth) () // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rect(8, 6); // Call getArea() function cout << "Area = " << rect.getArea(); return 0; )

Çıktı

 Alan = 48

Yukarıdaki örnekte, bir dikdörtgenin alanını hesaplıyoruz.

Uzunluk ve genişlik ve bir işlevi: Bir alanı hesaplamak için, iki değişken gerekir: getArea(). Bu nedenle, bu değişkenleri ve işlevi Rectangle adlı tek bir sınıfta topladık.

Burada değişkenlere ve işlevlere diğer sınıflardan da erişilebilir. Dolayısıyla, bu veri saklama değildir .

Bu sadece kapsüllemedir . Sadece benzer kodları bir arada tutuyoruz.

Not: İnsanlar genellikle kapsüllemeyi veri gizleme olarak görür, ancak bu tamamen doğru değildir.

Kapsülleme, ilgili alanların ve yöntemlerin bir araya toplanması anlamına gelir. Bu, veri gizlemeyi sağlamak için kullanılabilir. Kapsülleme kendi başına veri saklama değildir.

Neden Kapsülleme?

  • C ++ 'da kapsülleme, ilgili verileri ve işlevleri bir arada tutmamıza yardımcı olur, bu da kodumuzu daha temiz ve okunması kolay hale getirir.
    • Veri üyelerimizin değiştirilmesini kontrol etmeye yardımcı olur.
      Bir sınıftaki uzunluk alanının negatif olmamasını istediğimiz bir durumu düşünün. Burada uzunluk değişkenini özel yapabilir ve yöntemin içindeki mantığı uygulayabiliriz setAge(). Örneğin,
       class Rectangle ( private: int age; public: void setLength(int len) ( if (len>= 0) length = len; ) );
    • Alıcı ve ayarlayıcı işlevleri , sınıf üyelerimize salt okunur veya salt yazılır erişim sağlar. Örneğin,
       getLength() // provides read-only access setLength() // provides write-only access
    • Bir sistemin bileşenlerini ayırmaya yardımcı olur. Örneğin, kodu birden çok paket halinde kapsülleyebiliriz.
      Bu ayrıştırılmış bileşenler (paketler), bağımsız olarak ve eşzamanlı olarak geliştirilebilir, test edilebilir ve hataları ayıklanabilir. Ve belirli bir bileşendeki herhangi bir değişikliğin diğer bileşenler üzerinde herhangi bir etkisi yoktur.
    • Kapsülleme kullanarak da veri gizlemeyi başarabiliriz. In Örnek 1 biz içine uzunluğu ve genişliği değişkenleri değiştirirseniz, privateya protectedsonra bu alanlara erişim kısıtlanır.
      Ve dış sınıflardan saklanırlar. Buna veri gizleme denir .

    Veri Gizleme

    Veri gizleme, uygulama ayrıntılarını gizleyerek veri üyelerimizin erişimini kısıtlamanın bir yoludur. Kapsülleme ayrıca veri gizleme için bir yol sağlar.

    C ++ 'da veri gizlemeyi sağlamak için erişim değiştiricileri kullanabiliriz. Örneğin,

    Örnek 2: Özel Tanımlayıcıyı Kullanarak C ++ Veri Gizleme

     #include using namespace std; class Rectangle ( private: // Variables required for area calculation int length; int breadth; public: // Setter function for length void setLength(int len) ( length = len; ) // Setter function for breadth void setBreadth(int brth) ( breadth = brth; ) // Getter function for length int getLength() ( return length; ) // Getter function for breadth int getBreadth() ( return breadth; ) // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rectangle1; // Initialize length using Setter function rectangle1.setLength(8); // Initialize breadth using Setter function rectangle1.setBreadth(6); // Access length using Getter function cout << "Length = " << rectangle1.getLength() << endl; // Access breadth using Getter function cout << "Breadth = " << rectangle1.getBreadth() << endl; // Call getArea() function cout << "Area = " << rectangle1.getArea(); return 0; )

    Çıktı

     Uzunluk = 8 Genişlik = 6 Alan = 48

    Burada uzunluk ve genişlik değişkenlerini yaptık private.

    Bu, bu değişkenlere Rectanglesınıfın dışından doğrudan erişilemeyeceği anlamına gelir .

    Bu özel değişkenleri erişmek için, kullanmış publicfonksiyonlar setLength(), getLength(), setBreadth(), ve getBreadth(). Bunlara alıcı ve ayarlayıcı işlevler denir.

    Değişkenleri özel yapmak, sınıf dışından yetkisiz erişimi kısıtlamamıza izin verdi. Bu veri gizlemedir .

    Sınıftan değişkenlere erişmeye çalışırsak main(), bir hata alırız.

     // error: rectangle1.length is inaccessible rectangle1.length = 8; // error: rectangle1.breadth is inaccessible rectangle1.length = 6;

Ilginç makaleler...