Luokat vs. rakenteet
Jotkut Object Oriented (OO) -ohjelmointikielen pääkäsitteistä ovat kapselointi, periminen ja polymorfismi. Luokka ja rakenne ovat kaksi OO-rakennetta / työkalua, jotka auttavat ohjelmoijia saavuttamaan nämä konseptit suurimmassa osassa nykyisiä OO-ohjelmointikieliä (Java ei tarjoa rakenteita). Luokat ovat abstrakti esitys todellisen maailman esineistä. Rakenteet ovat hyvin samankaltaisia luokkien kanssa, joilla on samanlainen käyttö, mutta niillä on vähän rajoituksia luokkiin verrattuna. Sekä luokkia että rakennetta käytetään ryhmittelemään samanlaista dataa yhdessä.
Mitkä ovat luokat?
Luokat kuvaavat todellisen maailman esineiden abstraktia esitystä, kun taas suhteet kuvaavat kuinka kukin luokka on kytketty muihin. Sekä luokilla että suhteilla on ominaisuuksia, joita kutsutaan attributeiksi. Luokkien menetelmät edustavat tai määrittelevät näiden luokkien käyttäytymistä. Luokkien menetelmiä ja ominaisuuksia kutsutaan luokan jäseniksi. Kapselointi saadaan tyypillisesti tekemällä attribuutit yksityisiksi, samalla kun luodaan julkisia menetelmiä, joita voidaan käyttää näiden ominaisuuksien käyttämiseen. Kohde on luokan esiintymä. Perintö antaa käyttäjälle mahdollisuuden laajentaa luokkia (joita kutsutaan alaluokiksi) muista luokista (joita kutsutaan superluokiksi). Polymorfismi antaa ohjelmoijalle mahdollisuuden korvata luokan esine sen superluokan kohteen sijasta. Tyypillisesti ongelmanmäärittelystä löytyvät substantiivit muuttuvat suoraan luokkiksi ohjelmassa. Ja samoin verbeistä tulee menetelmiä. Julkiset, yksityiset ja suojatut ovat tyypillisiä luokkien käyttömuokkaimia. Luokkakaavio näyttää järjestelmien luokat, luokkien väliset suhteet ja niiden ominaisuudet.
Mitkä ovat rakenteet?
Kuten edellä mainittiin, rakenteet ovat hyvin samankaltaisia luokkien kanssa, joilla on samanlainen käyttö, mutta niiden ominaisuudet ovat hiukan rajoitetut kuin luokkien. Itse asiassa luokkia voidaan pitää laajennuksena rakenteisiin. Esimerkiksi rakenteet ovat samoja kuin C ++ -luokat, mutta niissä on oletuksena julkisia jäseniä. Käyttäjä voi määritellä rakenteen edustamaan yhdistelmätyyppiä. Kuten luokissakin, rakenteet sisältävät jäseniä, jotka voivat kuulua monentyyppisiin. Avainsanarakennetta käytetään määrittelemään rakenne C: ssä ja C ++: ssa, kun taas avainsanaa Structure käytetään samaan .NET-ohjelmointikielellä..
Mikä on ero luokkien ja rakenteiden välillä??
Vaikka sekä luokat että rakenteet ovat samanlaisia konstruktioita, joita löytyy ohjelmointikielistä, niillä on hienoisia eroja. Tyypillisesti luokka on rakenteen jatke, ja siksi rakenteilla on joitain suhteellisia rajoituksia. Esimerkiksi rakenteita voidaan pitää samoina kuin luokkia C ++: ssa, mutta jäsenet eivät ole oletuksena julkisia luokissa (toisin kuin rakenteissa). Tämä tarkoittaa itse asiassa, että voit määritellä luokan ja rakenteen, jolla on täsmälleen samat ominaisuudet, käyttämällä asianmukaisia pääsymuuntajia C ++: ssa. Kuitenkin C: ssä rakenteet eivät voi sisältää mitään toimintoja tai ylikuormitettuja toimintoja. Avainsanoja class ja struct käytetään luokan ja rakenteen määrittelemiseen vastaavasti C ++: ssa. .NET-kielten (C #, VB.NET jne.) Osalta luokka on viitetyyppi, kun taas rakenne on arvotyyppi. Ja yleensä rakenteita käytetään pienemmille kohteille, mutta luokkia käytetään suurille kohteille, joita pidetään muistissa pidempään.