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# Encapsulatie Beheersen: Code Beschermen en Design Verbeteren

Encapsulatie is 'het proces van het omsluiten van één of meer items in een fysiek of logisch pakket'. In objectgeoriënteerd programmeren voorkomt encapsulatie toegang tot implementatiedetails.

Abstractie en encapsulatie zijn gerelateerd. Abstractie maakt relevante informatie zichtbaar; encapsulatie stelt de programmeur in staat het gewenste abstractieniveau te implementeren.

Encapsulatie wordt geïmplementeerd met toegangspecificaties. Een toegangsspecificatie definieert bereik en zichtbaarheid van een klassenlid. C# ondersteunt:

  • Public
  • Private
  • Protected
  • Internal
  • Protected internal

Public Toegangsspecificatie

Staat toe dat klassenlidvariabelen en -functies vanaf buiten de klasse bereikbaar zijn.

Voorbeeld

using System;

namespace RechthoekApplicatie {
    class Rechthoek {
        public double lengte;
        public double breedte;
        public double GetOppervlakte() { return lengte * breedte; }
        public void Display() {
            Console.WriteLine("Lengte: {0}", lengte);
            Console.WriteLine("Breedte: {0}", breedte);
            Console.WriteLine("Oppervlakte: {0}", GetOppervlakte());
        }
    }
    class UitvoerenRechthoek {
        static void Main(string[] args) {
            Rechthoek r = new Rechthoek();
            r.lengte = 4.5;
            r.breedte = 3.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

Uitvoer:

Lengte: 4.5
Breedte: 3.5
Oppervlakte: 15.75

Omdat lengte en breedte public zijn, zijn ze vanaf Main() via instantie r bereikbaar.

Private Toegangsspecificatie

Verbergt leden voor buitenstaande code. Alleen functies van dezelfde klasse hebben toegang.

Voorbeeld

using System;

namespace RechthoekApplicatie {
    class Rechthoek {
        private double lengte;
        private double breedte;
        public void AccepteerDetails() {
            Console.WriteLine("Voer Lengte in: ");
            lengte = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Voer Breedte in: ");
            breedte = Convert.ToDouble(Console.ReadLine());
        }
        public double GetOppervlakte() { return lengte * breedte; }
        public void Display() {
            Console.WriteLine("Lengte: {0}", lengte);
            Console.WriteLine("Breedte: {0}", breedte);
            Console.WriteLine("Oppervlakte: {0}", GetOppervlakte());
        }
    }
    class UitvoerenRechthoek {
        static void Main(string[] args) {
            Rechthoek r = new Rechthoek();
            r.AccepteerDetails();
            r.Display();
            Console.ReadLine();
        }
    }
}

Uitvoer (bij invoer 4.4 en 3.3):

Voer Lengte in: 4.4
Voer Breedte in: 3.3
Lengte: 4.4
Breedte: 3.3
Oppervlakte: 14.52

De private leden zijn niet direct vanaf Main() bereikbaar, wel via de publieke methodes.

Protected Toegangsspecificatie

Staat een afgeleide klasse toe toegang te krijgen tot basisklassenleden. Wordt besproken bij erfelijkheid.

Internal Toegangsspecificatie

Leden zijn zichtbaar binnen de huidige assembly (applicatie).

Voorbeeld

using System;

namespace RechthoekApplicatie {
    class Rechthoek {
        internal double lengte;
        internal double breedte;
        double GetOppervlakte() { return lengte * breedte; } // default private
        public void Display() {
            Console.WriteLine("Lengte: {0}", lengte);
            Console.WriteLine("Breedte: {0}", breedte);
            Console.WriteLine("Oppervlakte: {0}", GetOppervlakte());
        }
    }
    class UitvoerenRechthoek {
        static void Main(string[] args) {
            Rechthoek r = new Rechthoek();
            r.lengte = 4.5;
            r.breedte = 3.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

Uitvoer: Lengte: 4.5, Breedte: 3.5, Oppervlakte: 15.75

Let op: GetOppervlakte() heeft geen specificatie → standaard private.

Protected Internal Toegangsspecificatie

Verbergt leden voor andere klassen, behalve een afgeleide klasse binnen dezelfde assembly. Ook gebruikt bij erfelijkheid.

C Taal

  1. C# Classes & Objects: Fundamenten voor Robuuste OOP
  2. C# Access Modifiers: Public, Private, Protected, Internal en Meer
  3. C# Static Keyword: Static Variabelen, Methodes en Classes Beheersen
  4. C# Abstract Classes & Methods: Een Praktische Gids
  5. C# Geneste Classes: Definitie, Gebruik en Inheritance
  6. C# Partial Classes en Methods: Een Praktische Gids
  7. C# Sealed Classes en Methods: Wanneer en Hoe Te Gebruiken
  8. Polymorfisme in C++ Begrijpen: Een Praktische Gids
  9. Data Abstractie in C++ Beheersen: Ontwerp Vereenvoudigen met Interface-Implementatie Scheiding
  10. Data Encapsulatie in C++: Uw Code Beschermen
  11. Java Encapsulation uitgelegd: Veilige Data Verberging & Controle