Olio-ohjelmointi on yksi suosituimmista ohjelmointiparadigmoista. Tämä johtuu siitä, että se mallintaa sekä dataa että toimintoja ja antaa sinun ajatella reaalimaailman kohteina. Luokat ovat olennainen osa olio-ohjelmointia, koska ne tarjoavat objektien luomiseen tarvitsemasi suunnitelman.
C# on suosittu moniparadigmaohjelmointikieli, joka käyttää olio-paradigmaa. Tässä artikkelissa opit luomaan ja käyttämään luokkia C#-kielellä.
Luokkailmoituksen luominen
C#:ssa luokka on viitetyyppi, joka sisältää tyhjä arvoa, kunnes luot luokkaan uuden objektin. Uuden luokan luomiseen C#:lla tarvitset useita komponentteja:
- Pääsyn muokkaaja.
- The luokkaa avainsana.
- Nimi, jonka haluat antaa luokalle.
- Pari avointa ja suljettua aaltosuljetta (joka sisältää luokan attribuutit, rakentajat ja menetelmät).
sisäinen luokkaaAsiakas{ }
Yllä oleva koodi luo uuden luokan, joka on muiden saman kokoonpanon (kokoelmatiedoston) luokkien käytettävissä. C#:ssa on täsmälleen kuusi käyttöoikeusmuuttajaa, joilla voit hallita luokkien, muuttujien ja menetelmien saavutettavuustasoja. Kuusi pääsyn muokkaajaa ovat:
- julkinen: jokainen luokka (riippumatta sen kokoonpanosta) voi käyttää julkista luokkaa ja sen julkisia jäseniä (attribuutit, rakentajat ja menetelmät).
- yksityinen: vain yksityinen luokka ja sen jäsenet voivat käyttää sitä.
- suojattu: vain johdetut luokat (lasten ja lastenlasten luokat) voivat käyttää suojattua luokkaa.
- sisäinen: vain saman kokoonpanon luokat voivat käyttää sisäistä luokkaa.
- suojattu sisäinen: vain saman kokoonpanon luokat tai toisesta kokoonpanosta johdettu luokka voivat käyttää suojattua sisäistä luokkaa.
- yksityinen suojattu: vain saman kokoonpanon johdetut luokat voivat käyttää yksityistä suojattua luokkaa.
Attribuuttien ilmoittaminen ja käyttö
Attribuutit ovat luomiesi luokkien rakennuspalikoita. Niillä on arkaluontoisia tietoja, ja niillä on yleensä yksityinen tai suojattu pääsyn muokkaaja. Siksi päästäksesi näihin luokkiin ulkoisista luokista, sinun on käytettävä aksessoreja ja mutaattoreita (getterit ja setterit).
C# antaa sinun ilmoittaa attribuutit, mutaattorit ja aksessorit seuraavasti:
sisäinen luokkaaAsiakas
{
// attribuutit
yksityinenint IdNumber;
yksityinen merkkijono Nimi;
yksityinenkaksinkertainen Kaikki yhteensä;// asettajat
julkinenmitätönAsetaIdNumber(int IdNumber){ Tämä.IdNumber = IdNumber; }
julkinenmitätönAsetaNimi(merkkijonon nimi){ Tämä.Name = Nimi; }
julkinenmitätönSetTotal(kaksinkertainen Kaikki yhteensä){ Tämä.Yhteensä = Yhteensä; }
// saajat
julkinenintGetIdNumber(){ palataTämä.IdNumber; }
julkinen merkkijono HankiName(){ palataTämä.Nimi; }
julkinenkaksinkertainenGetTotal(){ palataTämä.Kaikki yhteensä; }
}
Muita suosittuja oliosuuntautuneita kieliä käytä myös yllä olevaa lähestymistapaa. Itse asiassa, jos haluat luoda Java-luokkia, sinun on käytettävä yllä olevaa rakennetta. C#:lla on kuitenkin nyt helpompi tapa luoda attribuutteja ja aksessoreita. C#:ssa tällä luokalla on sama toiminto kuin yllä olevassa:
sisäinen luokkaaAsiakas
{
julkinen int IdNumber { saada; aseta; }
julkinen merkkijono Nimi { saada; aseta; }
public double Yhteensä { saada; aseta; }
}
Yllä oleva luokka sisältää mitä C# kutsuu ominaisuuksia, joka on attribuuttien (kenttien) ja menetelmien yhdistelmä. Kanssa ominaisuuksia, voit puolittaa attribuuttien, mutaattorien ja aksessorikoodin.
Ilmoittaneet rakentajat
Rakentajat ovat toinen luokan peruselementti. Luodaksesi objektin luokasta sinun on kutsuttava jokin sen rakentajista. Jokaisella rakentajalla on valinnainen käyttöoikeusmuunnin ja sama nimi kuin sen luokassa. Olio-ohjelmointikielissä on yleensä kolmenlaisia rakentajia:
- Oletuskonstruktori: ei ota argumentteja ja antaa jokaiselle attribuutille oletusarvon.
- Ensisijainen rakentaja: ottaa yhden tai useamman argumentin (luokassa olevien muuttujien lukumäärän mukaan).
- Kopioi rakentaja: ottaa toisen konstruktorin argumenttina.
C#:ssa on kattotermi yllä oleville oletus- ja ensisijaisille rakentajille – instanssikonstruktoreille. Tällä ohjelmointikielellä on myös kaksi muuta konstruktoria (yksityinen ja staattinen). Tämä artikkeli keskittyy kolmeen perinteiseen rakentajaan.
Oletuskonstruktori
// oletuskonstruktori
julkinen Asiakas()
{
IdNumber = 0;
Nimi = "tuntematon";
Yhteensä = 0;
}
Ensisijainen rakentaja
// ensisijainen rakentaja
julkinenAsiakas(int IdNumber, merkkijono Nimi, merkkijono CustomerType, kaksinkertainen Kaikki yhteensä)
{
Tämä.IdNumber = IdNumber;
Tämä.Name = Nimi;
Tämä.Yhteensä = Yhteensä;
}
Kopioi rakentaja
// kopiokonstruktori
julkinen Asiakas (asiakas edellinen asiakas)
{
Tämä.IdNumber = edellinenCustomer. IdNumber;
Tämä.Nimi = edellinenCustomer. Nimi;
Tämä.Yhteensä = edellinenAsiakas. Kaikki yhteensä;
}
Luontimenetelmät
Menetelmät eivät ole ratkaiseva luokkakomponentti, mutta ne ovat hyödyllisiä. Luokassa voi olla yksi tai useampi menetelmä. Metodilla on pääsyn muokkaaja, palautustyyppi, nimi ja runko.
// menetelmä
julkinen merkkijono CustomerDetail()
{
palata " ID: " + IdNumber + " Nimi: " + Nimi + " Kaikki yhteensä: " + Yhteensä;
}
Yllä oleva koodi palauttaa asiakasobjektin merkkijonoesityksen.
Objektien luominen
Kun olet luonut täydellisen luokan, varustanut sen attribuutteilla, rakentajilla ja menetelmällä, voit aloittaa objektien luomisen eri konstruktoreilla. Voit luoda objektin ilman attribuutteja käyttämällä oletuskonstruktoria:
Asiakas John = Uusi Asiakas();
Yllä oleva koodirivi luo oletusasiakkaan ja määrittää sen muuttujaan nimeltä John. Kanssa John, voit käyttää kunkin asiakasmääritteen oletusarvoa.
Konsoli.WriteLine(John.Nimi);
Yllä olevan koodin suorittaminen tulostaa konsoliin seuraavan:
Tuntematon
Voit myös käyttää John muuttuja päästäkseen mihin tahansa asiakasluokan menetelmään.
Konsoli.WriteLine(John.CustomerDetail());
Yllä olevan koodirivin suorittaminen tulostaa seuraavan tulosteen konsoliin:
ID: 0 Nimi: tuntematon Yhteensä: 0
Luodaksesi attribuutteja sisältävän objektin, käytä ensisijaista rakentajaa:
Asiakas John = uusi asiakas (1001, "John Doe", 250.20);
Konsoli.WriteLine(John.CustomerDetail());
Yllä olevan koodin suorittaminen tulostaa seuraavan tulosteen konsoliin:
ID: 1001 Nimi: JohnDoeKaikki yhteensä: 250.2
Voit luoda kopion yllä olevasta objektista käyttämällä kopiokonstruktoria:
Asiakas Johnny = Uusi Asiakas (John);
Konsoli.WriteLine(Johnny.CustomerDetail());
Yllä olevan koodin suorittaminen tulostaa seuraavan tulosteen konsoliin:
ID: 1001 Nimi: JohnDoeKaikki yhteensä: 250.2
Kuten näette, kopiokonstruktori on kopio ensisijaisesta rakentajasta. Kopiokonstruktori voi myös ottaa oletuskonstruktorin argumenttina:
Asiakas John = Uusi Asiakas();
Asiakas Johnny = Uusi Asiakas (John);
Konsoli.WriteLine(Johnny.CustomerDetail());
Yllä olevan koodin suorittaminen tulostaa seuraavan tulosteen konsoliin:
ID: 0 Nimi: tuntematon Yhteensä: 0
Nyt voit luoda ja käyttää C#-luokkia
Voit käyttää C#:n olio-paradigmaa luokkien määrittämiseen ja objektien luomiseen niistä. Voit luoda jokaiselle luokalle menetelmiä, jotka voivat sitten toimia niiden objektien määritteillä.
Olio-paradigma ei kuitenkaan ole ainoa, joka sinun on tunnettava. Kolme parasta ohjelmointiparadigmaa ovat välttämättömiä, oliosuuntautuneita ja toiminnallisia.