Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C# - Kapselung

Verkapselung ist definiert als „der Vorgang des Einschließens eines oder mehrerer Artikel in ein physisches oder logisches Paket“. Die Kapselung in der objektorientierten Programmiermethodik verhindert den Zugriff auf Implementierungsdetails.

Abstraktion und Kapselung sind verwandte Merkmale in der objektorientierten Programmierung. Abstraktion ermöglicht es, relevante Informationen sichtbar zu machen, und Kapselung ermöglicht es einem Programmierer, das gewünschte Abstraktionsniveau zu implementieren .

Die Kapselung wird mithilfe von Zugriffsbezeichnern implementiert . Ein Zugriffsbezeichner definiert den Geltungsbereich und die Sichtbarkeit eines Klassenmitglieds. C# unterstützt die folgenden Zugriffsbezeichner −

Spezifizierer für öffentlichen Zugriff

Der Bezeichner für den öffentlichen Zugriff ermöglicht es einer Klasse, ihre Mitgliedsvariablen und Mitgliedsfunktionen für andere Funktionen und Objekte verfügbar zu machen. Auf jedes öffentliche Mitglied kann von außerhalb der Klasse zugegriffen werden.

Das folgende Beispiel veranschaulicht dies −

Live-Demo
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      public double length;
      public double width;
      
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Length: 4.5
Width: 3.5
Area: 15.75

Im vorangegangenen Beispiel sind die Member-Variablen length und width als public deklariert , sodass sie von der Funktion Main() mithilfe einer Instanz der Rectangle-Klasse mit dem Namen r aufgerufen werden können .

Die Member-Funktion Display() und GetArea() kann auch direkt auf diese Variablen zugreifen, ohne eine Instanz der Klasse zu verwenden.

Die Memberfunktionen Display() wird ebenfalls als öffentlich deklariert , also kann auch von Main() darauf zugegriffen werden Verwenden einer Instanz der Rectangle-Klasse mit dem Namen r .

Privater Zugriffsspezifizierer

Der private Zugriffsspezifizierer ermöglicht es einer Klasse, ihre Mitgliedsvariablen und Mitgliedsfunktionen vor anderen Funktionen und Objekten zu verbergen. Nur Funktionen derselben Klasse können auf ihre privaten Mitglieder zugreifen. Selbst eine Instanz einer Klasse kann nicht auf ihre privaten Mitglieder zugreifen.

Das folgende Beispiel veranschaulicht dies −

Live-Demo
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      private double length;
      private double width;
      
      public void Acceptdetails() {
         Console.WriteLine("Enter Length: ");
         length = Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("Enter Width: ");
         width = Convert.ToDouble(Console.ReadLine());
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.Acceptdetails();
         r.Display();
         Console.ReadLine();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52

Im vorangegangenen Beispiel sind die Member-Variablen length und width als privat deklariert , daher kann auf sie nicht von der Funktion Main() aus zugegriffen werden. Die Mitgliedsfunktionen AcceptDetails() und Anzeige() kann auf diese Variablen zugreifen. Da die Memberfunktionen AcceptDetails() und Anzeige() werden als öffentlich deklariert , sie können über Main() aufgerufen werden Verwenden einer Instanz der Rectangle-Klasse mit dem Namen r .

Geschützter Zugriffsspezifizierer

Der geschützte Zugriffsspezifizierer ermöglicht einer untergeordneten Klasse den Zugriff auf die Elementvariablen und Elementfunktionen ihrer Basisklasse. Auf diese Weise hilft es bei der Implementierung der Vererbung. Wir werden dies ausführlicher im Vererbungskapitel besprechen.

Interner Zugriffsspezifizierer

Der interne Zugriffsbezeichner ermöglicht es einer Klasse, ihre Mitgliedsvariablen und Mitgliedsfunktionen für andere Funktionen und Objekte in der aktuellen Assembly verfügbar zu machen. Mit anderen Worten, auf jedes Mitglied mit internem Zugriffsbezeichner kann von jeder Klasse oder Methode aus zugegriffen werden, die in der Anwendung definiert ist, in der das Mitglied definiert ist.

Das folgende Programm veranschaulicht dies −

Live-Demo
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      internal double length;
      internal double width;
      
      double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

Length: 4.5
Width: 3.5
Area: 15.75

Beachten Sie im vorherigen Beispiel, dass die Member-Funktion GetArea() wird nicht mit einem Zugriffsbezeichner deklariert. Was wäre dann der Standard-Zugriffsbezeichner eines Klassenmitglieds, wenn wir keinen erwähnen? Es ist privat .

Geschützter interner Zugriffsspezifizierer

Der geschützte interne Zugriffsbezeichner ermöglicht es einer Klasse, ihre Mitgliedsvariablen und Mitgliedsfunktionen vor anderen Klassenobjekten und -funktionen zu verbergen, mit Ausnahme einer untergeordneten Klasse innerhalb derselben Anwendung. Dies wird auch beim Implementieren der Vererbung verwendet.


C Sprache

  1. C#-Klasse und -Objekt
  2. C#-Zugriffsmodifikatoren
  3. Statisches C#-Schlüsselwort
  4. Abstrakte C#-Klasse und -Methode
  5. Verschachtelte C#-Klasse
  6. C# Teilklasse und Teilmethode
  7. Versiegelte C#-Klasse und -Methode
  8. Java - Kapselung
  9. Polymorphismus in C++
  10. Datenabstraktion in C++