Wat zijn access modifiers?

Access modifiers worden gebruikt in classes om aan te geven wie recht heeft om wat van de class te gebruiken. Hierdoor kan je belangrijke delen van de code beschermen tegen ongewenste toegang of wijzigingen.

Casus

Kijk bijvoorbeeld naar een huis. De woonkamer is toegankelijk voor iedereen, ook mensen die niet in het huis wonen. Een slaap kamer is toegankelijk voor een kleinere selectie mensen, de bewoners en mogelijk een paar mensen die geen bewoner zijn. Als laatste heeft de familiekluis beperkte toegang, met mogelijk maar een paar mensen die er bij mogen.

Hoe zit access modifiers in elkaar?

Access modifiers bepaalt voor een property, methode of complete class wie er toegang tot heeft. Bij de declaratie van een property, method of class staat de access modifier voor aan.

Er zijn een aantal mogelijk access modifiers, de meest gebruikte zijn te zien in de tabel hieronder met waar ze gebruikt kunnen worden. Voor inzicht op de rest van de acces modifiers, kan er gekeken worden naar de documentatie van Microsoft.

Acces ModifierPublicProtectedPrivate
Eigen class✔️️✔️️✔️️
Afgeleide Class (overerving)✔️️✔️️
Iedereen✔️️

Static

Naast de access modifier is het ook nog mogelijk om een property, methode of class static te maken. Static zorgt er voor dat het gebruikt van de property, method of class gekoppeld is aan de class zelf. Voor het aanroepen van een property of method moet dan ook de class gebruikt worden en niet de variabel. Als een Class static is dan kunnen er geen instanties van de Class gemaakt worden en zal er altijd maar één zijn.

Codevoorbeeld

public class Mens  
{  
    public string Naam;
    protected int Leeftijd;
    private int LengteInCm;
}

Hoe gebruik je access modifiers?

Access modifiers gebruik je om te bepalen wie toegang heeft tot de attributen en methoden van een class. Dit helpt je om je code beter te beveiligen, te structureren en gemakkelijker onderhoudbaar te maken. Door de juiste access modifier toe te passen, kun je voorkomen dat gevoelige gegevens of interne implementaties per ongeluk worden aangepast of geraadpleegd door andere onderdelen van je applicatie.

Voor de standaard

  • Public: voor onderdelen die door andere classes direct gebruikt moeten worden.
  • Protected: als je functionaliteit wilt delen met subklassen, zonder het volledig openbaar te maken.
  • Private: om de interne werking van een class te verbergen en alleen toegang te bieden via gecontroleerde methoden.

Casus

Stel je werkt voor een softwarebedrijf dat een applicatie ontwikkelt om gebruikersgegevens te beheren. Het is cruciaal dat gevoelige informatie, zoals wachtwoorden, goed beveiligd is en niet per ongeluk toegankelijk is vanuit andere delen van de applicatie. Voor het debuggen heeft de Gebruiker een method om de Gebruikersnaam te printen. Deze is niet standaard te gebruiken door de gebruiker, maar de AdminGebruiker kan deze wel gebruiken.

Mogelijke uitwerking van de casus

public class Gebruiker  
{  
    public string Gebruikersnaam { get; set; }  
    private string Wachtwoord;  
    public Gebruiker(string gebruikersnaam, string wachtwoord)  
    {        
	    Gebruikersnaam = gebruikersnaam;  
        Wachtwoord = wachtwoord;  
    }    
    public bool VerifieerWachtwoord(string ingevoerdWachtwoord)  
    {        
	    return ingevoerdWachtwoord == Wachtwoord;  
    }    
    protected void ToonDebugInfo()  
    {        
	    Console.WriteLine($"[DEBUG] Gebruikersnaam : {Gebruikersnaam}");  
    }
}  
  
public class AdminGebruiker : Gebruiker  
{  
    public AdminGebruiker(string gebruikersnaam, string wachtwoord) : base(gebruikersnaam, wachtwoord) { }  
  
    public void DebugGebruiker()  
    {
	    ToonDebugInfo();  
    }
}

Bronnen

Access-modifiers: https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers


Volgende stap: -=OEFENINGEN=-