Kapselointi
Kapselointi on pohjimmiltaan tapa järjestää tietoa. Siinä tiedot ja metodit järjestetään luokkien muotoon, jolloin koko ohjelma perustuu luokkiin ja tiedot sekä metodit ovat kapseloituina näihin luokkiin. Tämä kapselointi mahdollistaa tavan hallita olion sisäisen tilan saatavuutta, edistäen ohjelmiston modulaarisuutta, ylläpidettävyyttä ja turvallisuutta.
Kapseloinnissa käytetään näkyvyysmääreitä kuten public
, private
ja protected
piilottamaan suurin osa luokan kentistä ja metodeista ja paljastamaan vain ne, joita tarvitaan ulkopuolelta käytettäväksi.
Koska suurin osa tiedoista ei ole suoraan saavutettavissa luokan ulkopuolelta, käytetään gettereitä ja settereitä tietojen hakemiseen tai muokkaamiseen.
Hyvä esimerkki on Customer
-luokka, joka määrittelee pankin asiakkaan:

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; } }
Yllä olevassa esimerkissä mikään kenttä ei ole suoraan saavutettavissa tai muokattavissa ulkopuolelta. Sen sijaan arvoa muutetaan tarvittaessa metodien, kuten Deposit
ja Withdraw
, avulla. Vastaavasti saldon arvoa tarkastellaan käyttämällä getBalance
-metodia.
public
-avainsanan käyttöä suositellaan yleensä välttämään, ellei se ole välttämätöntä.
Muistutuksena, jos haluamme pitää kentän saavuttamattomana luokan ulkopuolelta mutta saavutettavana perityissä luokissa, voimme käyttää protected
-näkyvyysmuuttujaa.
1. Mikä rooli näkyvyysmuuttujilla on kapseloinnissa C#:ssa?
2. Mitä seuraavista näkyvyysmääreistä tulisi käyttää vähiten kapseloinnin säilyttämiseksi?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 2.04
Kapselointi
Pyyhkäise näyttääksesi valikon
Kapselointi on pohjimmiltaan tapa järjestää tietoa. Siinä tiedot ja metodit järjestetään luokkien muotoon, jolloin koko ohjelma perustuu luokkiin ja tiedot sekä metodit ovat kapseloituina näihin luokkiin. Tämä kapselointi mahdollistaa tavan hallita olion sisäisen tilan saatavuutta, edistäen ohjelmiston modulaarisuutta, ylläpidettävyyttä ja turvallisuutta.
Kapseloinnissa käytetään näkyvyysmääreitä kuten public
, private
ja protected
piilottamaan suurin osa luokan kentistä ja metodeista ja paljastamaan vain ne, joita tarvitaan ulkopuolelta käytettäväksi.
Koska suurin osa tiedoista ei ole suoraan saavutettavissa luokan ulkopuolelta, käytetään gettereitä ja settereitä tietojen hakemiseen tai muokkaamiseen.
Hyvä esimerkki on Customer
-luokka, joka määrittelee pankin asiakkaan:

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; } }
Yllä olevassa esimerkissä mikään kenttä ei ole suoraan saavutettavissa tai muokattavissa ulkopuolelta. Sen sijaan arvoa muutetaan tarvittaessa metodien, kuten Deposit
ja Withdraw
, avulla. Vastaavasti saldon arvoa tarkastellaan käyttämällä getBalance
-metodia.
public
-avainsanan käyttöä suositellaan yleensä välttämään, ellei se ole välttämätöntä.
Muistutuksena, jos haluamme pitää kentän saavuttamattomana luokan ulkopuolelta mutta saavutettavana perityissä luokissa, voimme käyttää protected
-näkyvyysmuuttujaa.
1. Mikä rooli näkyvyysmuuttujilla on kapseloinnissa C#:ssa?
2. Mitä seuraavista näkyvyysmääreistä tulisi käyttää vähiten kapseloinnin säilyttämiseksi?
Kiitos palautteestasi!