Indkapsling
Indkapsling er grundlæggende blot en metode til dataorganisering. Det indebærer at organisere data og metoder i form af klasser, så hele programmet i bund og grund er baseret på klasser, hvor data og metoder er indkapslet inden for disse klasser. Denne indkapsling giver mulighed for at kontrollere adgangen til et objekts interne tilstand, hvilket fremmer modularitet, vedligeholdelse og sikkerhed i et softwaresystem.
Ved indkapsling anvendes adgangsmodifikatorer som public
, private
og protected
til at skjule de fleste felter og metoder i en klasse og kun eksponere dem, der skal bruges udefra.
Da det meste af dataene ikke er direkte tilgængelige uden for klassen, anvendes gettere og settere til at tilgå eller ændre dataene.
Et godt eksempel er en Customer
-klasse, der definerer en bankkunde:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
I ovenstående eksempel er intet felt direkte tilgængeligt eller kan ændres udefra. I stedet bruges metoder som Deposit
og Withdraw
til at ændre værdien, når det er nødvendigt. Tilsvarende bruges metoden getBalance
til at tilgå værdien af saldoen.
Brugen af nøgleordet public
frarådes generelt, medmindre det er nødvendigt.
Til påmindelse: Hvis vi ønsker at holde et felt utilgængeligt udefra klassen, men tilgængeligt fra afledte klasser, kan vi bruge adgangsmodifikatoren protected
.
1. Hvilken rolle spiller adgangsmodifikatorer i indkapsling i C#?
2. Hvilken af følgende adgangsspecifikatorer bør bruges mindst for at bevare indkapsling?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 2.04
Indkapsling
Stryg for at vise menuen
Indkapsling er grundlæggende blot en metode til dataorganisering. Det indebærer at organisere data og metoder i form af klasser, så hele programmet i bund og grund er baseret på klasser, hvor data og metoder er indkapslet inden for disse klasser. Denne indkapsling giver mulighed for at kontrollere adgangen til et objekts interne tilstand, hvilket fremmer modularitet, vedligeholdelse og sikkerhed i et softwaresystem.
Ved indkapsling anvendes adgangsmodifikatorer som public
, private
og protected
til at skjule de fleste felter og metoder i en klasse og kun eksponere dem, der skal bruges udefra.
Da det meste af dataene ikke er direkte tilgængelige uden for klassen, anvendes gettere og settere til at tilgå eller ændre dataene.
Et godt eksempel er en Customer
-klasse, der definerer en bankkunde:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
I ovenstående eksempel er intet felt direkte tilgængeligt eller kan ændres udefra. I stedet bruges metoder som Deposit
og Withdraw
til at ændre værdien, når det er nødvendigt. Tilsvarende bruges metoden getBalance
til at tilgå værdien af saldoen.
Brugen af nøgleordet public
frarådes generelt, medmindre det er nødvendigt.
Til påmindelse: Hvis vi ønsker at holde et felt utilgængeligt udefra klassen, men tilgængeligt fra afledte klasser, kan vi bruge adgangsmodifikatoren protected
.
1. Hvilken rolle spiller adgangsmodifikatorer i indkapsling i C#?
2. Hvilken af følgende adgangsspecifikatorer bør bruges mindst for at bevare indkapsling?
Tak for dine kommentarer!