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

C# - Inkapseling

Inkapseling wordt gedefinieerd 'als het proces van het insluiten van een of meer items in een fysiek of logisch pakket'. Inkapseling, in objectgeoriënteerde programmeermethodologie, voorkomt toegang tot implementatiedetails.

Abstractie en inkapseling zijn verwante functies in objectgeoriënteerd programmeren. Abstractie maakt het mogelijk om relevante informatie zichtbaar te maken en inkapseling stelt een programmeur in staat het gewenste abstractieniveau te implementeren .

Inkapseling wordt geïmplementeerd met behulp van toegangsspecificaties . Een toegangsspecificatie definieert het bereik en de zichtbaarheid van een klaslid. C# ondersteunt de volgende toegangsspecificaties −

  • Openbaar
  • Privé
  • Beveiligd
  • Intern
  • Intern beveiligd

Openbare toegang specificatie

Met de specificatie voor openbare toegang kan een klasse zijn lidvariabelen en lidfuncties blootstellen aan andere functies en objecten. Elk openbaar lid is toegankelijk van buiten de klas.

Het volgende voorbeeld illustreert dit −

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

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

Length: 4.5
Width: 3.5
Area: 15.75

In het voorgaande voorbeeld zijn de lidvariabelen lengte en breedte gedeclareerd als openbaar , zodat ze toegankelijk zijn vanuit de functie Main() met behulp van een instantie van de klasse Rectangle, genaamd r .

De ledenfunctie Display() en GetArea() kan deze variabelen ook rechtstreeks benaderen zonder een instantie van de klasse te gebruiken.

De ledenfuncties Display() wordt ook openbaar declared verklaard , zodat het ook toegankelijk is vanuit Main() met behulp van een instantie van de klasse Rectangle, genaamd r .

Privétoegangsspecificatie

Met de specificatie voor privétoegang kan een klasse zijn lidvariabelen en lidfuncties verbergen voor andere functies en objecten. Alleen functies van dezelfde klasse hebben toegang tot de privéleden. Zelfs een instantie van een klasse heeft geen toegang tot zijn privéleden.

Het volgende voorbeeld illustreert dit −

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

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

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

In het voorgaande voorbeeld zijn de lidvariabelen lengte en breedte gedeclareerd als private , zodat ze niet toegankelijk zijn via de functie Main(). De ledenfuncties AcceptDetails() en Display() heeft toegang tot deze variabelen. Aangezien het lid AcceptDetails() functions en Display() zijn openbaar declared verklaard , ze zijn toegankelijk via Main() met behulp van een instantie van de klasse Rectangle, genaamd r .

Beveiligde toegangsspecificatie

Met de beschermde toegangsspecificatie kan een onderliggende klasse toegang krijgen tot de lidvariabelen en lidfuncties van zijn basisklasse. Op deze manier helpt het bij het implementeren van overerving. We zullen dit in meer detail bespreken in het hoofdstuk over overerving.

Interne toegangsspecificatie

Interne toegangsspecificatie stelt een klasse in staat om zijn lidvariabelen en lidfuncties bloot te stellen aan andere functies en objecten in de huidige assembly. Met andere woorden, elk lid met een interne toegangsspecificatie is toegankelijk vanuit elke klasse of methode die is gedefinieerd in de toepassing waarin het lid is gedefinieerd.

Het volgende programma illustreert dit −

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

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

Length: 4.5
Width: 3.5
Area: 15.75

Merk in het voorgaande voorbeeld op dat de lidfunctie GetArea() wordt niet gedeclareerd met een toegangsspecificatie. Wat zou dan de standaard toegangsspecificatie van een klaslid zijn als we er geen noemen? Het is privé .

Beveiligde interne toegangsspecificatie

Met de beschermde interne toegangsspecificatie kan een klasse zijn lidvariabelen en lidfuncties verbergen voor andere klasseobjecten en -functies, behalve een onderliggende klasse binnen dezelfde toepassing. Dit wordt ook gebruikt tijdens het implementeren van overerving.


C Taal

  1. C# klasse en object
  2. C# Toegangsmodificaties
  3. C# statisch trefwoord
  4. C# abstracte klasse en methode
  5. C# geneste klasse
  6. C# Gedeeltelijke klasse en gedeeltelijke methode
  7. C# verzegelde klasse en methode
  8. Java - Inkapseling
  9. Polymorfisme in C++
  10. Gegevensabstractie in C++
  11. Gegevensinkapseling in C++