Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Indkapsling | OOP-Principper
C# Ud Over Det Grundlæggende

bookIndkapsling

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

index.cs

copy
1234567891011121314151617181920212223242526272829303132
public 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.

Note
Bemærk

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?

question mark

Hvilken rolle spiller adgangsmodifikatorer i indkapsling i C#?

Select the correct answer

question mark

Hvilken af følgende adgangsspecifikatorer bør bruges mindst for at bevare indkapsling?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

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

bookIndkapsling

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

index.cs

copy
1234567891011121314151617181920212223242526272829303132
public 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.

Note
Bemærk

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?

question mark

Hvilken rolle spiller adgangsmodifikatorer i indkapsling i C#?

Select the correct answer

question mark

Hvilken af følgende adgangsspecifikatorer bør bruges mindst for at bevare indkapsling?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 6
some-alt