Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Gegevensinkapseling in C++

Alle C++-programma's zijn samengesteld uit de volgende twee fundamentele elementen −

  • Programmaverklaringen (code) − Dit is het deel van een programma dat acties uitvoert en dit worden functies genoemd.

  • Programmagegevens − De gegevens zijn de informatie van het programma die wordt beïnvloed door de programmafuncties.

Inkapseling is een concept voor objectgeoriënteerd programmeren dat de gegevens en functies die de gegevens manipuleren samenbindt, en dat zowel beschermt tegen inmenging als misbruik van buitenaf. Gegevensinkapseling leidde tot het belangrijke OOP-concept van gegevens verbergen .

Inkapseling van gegevens is een mechanisme voor het bundelen van de gegevens en de functies die ze gebruiken en gegevensabstractie is een mechanisme om alleen de interfaces bloot te leggen en de implementatiedetails voor de gebruiker te verbergen.

C++ ondersteunt de eigenschappen van inkapseling en gegevens die worden verborgen door het maken van door de gebruiker gedefinieerde typen, klassen genaamd . We hebben al onderzocht dat een klasse private, protected . kan bevatten en openbaar leden. Alle items die in een klasse zijn gedefinieerd, zijn standaard privé. Bijvoorbeeld −

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
};

De variabelen lengte, breedte en hoogte zijn privé . Dit betekent dat ze alleen toegankelijk zijn voor andere leden van de Box-klasse en niet voor enig ander onderdeel van uw programma. Dit is een manier waarop inkapseling wordt bereikt.

Om delen van een klas openbaar te maken (d.w.z. toegankelijk voor andere delen van uw programma), moet u ze declareren na de openbare trefwoord. Alle variabelen of functies die zijn gedefinieerd na de openbare specificatie zijn toegankelijk voor alle andere functies in uw programma.

Door de ene klasse een vriend van de andere te maken, worden de implementatiedetails blootgelegd en wordt de inkapseling verminderd. Het ideaal is om zoveel mogelijk details van elke klasse verborgen te houden voor alle andere klassen.

Voorbeeld van gegevensinkapseling

Elk C++-programma waarin u een klasse met openbare en privéleden implementeert, is een voorbeeld van gegevensinkapseling en gegevensabstractie. Beschouw het volgende voorbeeld −

Live demo
#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;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

Total 60

Bovenstaande klasse telt getallen bij elkaar op en geeft de som terug. De openbare leden addNum en getTotal zijn de interfaces naar de buitenwereld en een gebruiker moet ze kennen om de klasse te gebruiken. Het privélid totaal is iets dat voor de buitenwereld verborgen is, maar dat nodig is om de klas goed te laten werken.

Strategie ontwerpen

De meesten van ons hebben geleerd om klasleden standaard privé te maken, tenzij we ze echt moeten ontmaskeren. Dat is gewoon een goede inkapseling .

Dit wordt het vaakst toegepast op gegevensleden, maar het geldt in gelijke mate voor alle leden, inclusief virtuele functies.


C Taal

  1. C++-gegevenstypen
  2. C++-operators
  3. C++ klassen en objecten
  4. C++-klassesjablonen
  5. Java-inkapseling
  6. C++ Char-gegevenstype met voorbeelden
  7. Java - Inkapseling
  8. Java - Gegevensstructuren
  9. Opslagklassen in C++
  10. C++-gegevensstructuren
  11. Polymorfisme in C++