Luokat vs rakenteet
Jotkut Object Oriented (OO) -ohjelmointikielten pääkäsitteistä ovat kapselointi, periytyminen ja polymorfismi. Luokka ja rakenne ovat kaksi OO-rakennetta/työkalua, jotka auttavat ohjelmoijia saavuttamaan nämä käsitteet useimmissa poistuvissa OO-ohjelmointikielissä (Java ei tarjoa rakenteita). Luokat ovat abstrakteja reaalimaailman esineitä. Rakenteet ovat hyvin samank altaisia kuin luokkia, joilla on samanlainen käyttö, mutta niillä on vähän rajoituksia luokkiin verrattuna. Sekä luokkia että rakennetta käytetään samantyyppisten tietojen ryhmittelyyn.
Mitä luokat ovat?
Luokat kuvaavat reaalimaailman esineiden abstraktia esitystä, kun taas suhteet kuvaavat, miten kukin luokka on yhteydessä muihin. Sekä luokilla että suhteilla on ominaisuuksia, joita kutsutaan attribuuteiksi. Luokkien menetelmät edustavat tai määrittelevät näiden luokkien käyttäytymistä. Luokkien menetelmiä ja attribuutteja kutsutaan luokan jäseniksi. Tyypillisesti kapselointi saavutetaan tekemällä attribuuteista yksityisiä, samalla kun luodaan julkisia menetelmiä, joita voidaan käyttää näiden määritteiden käyttämiseen. Objekti on luokan esiintymä. Perinnön avulla käyttäjä voi laajentaa luokkia (jota kutsutaan alaluokiksi) muista luokista (kutsutaan superluokiksi). Polymorfismin avulla ohjelmoija voi korvata luokan objektin sen superluokan objektin tilalle. Tyypillisesti ongelmanmäärittelystä löytyvistä substantiivista tulee suoraan ohjelman luokkia. Ja samoin verbeistä tulee menetelmiä. Julkinen, yksityinen ja suojattu ovat tyypillisiä luokkien käyttöoikeuksia. Luokkakaavio näyttää järjestelmien luokat, luokkien väliset suhteet ja niiden attribuutit.
Mitä ovat rakenteet?
Kuten edellä mainittiin, rakenteet ovat hyvin samanlaisia kuin luokat, joilla on samanlainen käyttö, mutta niiden ominaisuudet ovat hieman rajalliset kuin luokat. Itse asiassa luokkia voidaan pitää rakenteiden laajennuksina. Esimerkiksi rakenteet ovat samat kuin C++:n luokat, mutta niissä on oletuksena julkisia jäseniä. Käyttäjä voi määrittää rakenteen edustamaan yhdistelmätyyppiä. Kuten luokat, rakenteet sisältävät jäseniä, jotka voivat kuulua useisiin tyyppeihin. Avainsanaa struct käytetään rakenteen määrittämiseen C- ja C++-kielissä, kun taas avainsanaa Structure käytetään samaan. NET-ohjelmointikielissä.
Mitä eroa on luokilla ja rakenteilla?
Vaikka sekä luokat että rakenteet ovat samanlaisia ohjelmointikielistä löytyviä rakenteita, niillä on hienoisia eroja. Tyypillisesti luokka on rakenteen jatke, ja siksi rakenteilla on joitain suhteellisia rajoituksia. Esimerkiksi rakenteita voidaan pitää samoina kuin C++:n luokkia, mutta jäsenet eivät ole oletuksena julkisia luokissa (toisin kuin rakenteissa). Tämä tarkoittaa itse asiassa sitä, että voit määrittää luokan ja rakenteen, joilla on täsmälleen samat ominaisuudet, käyttämällä asianmukaisia C++:n pääsymuutoksia. C:ssä rakenteet eivät kuitenkaan voi sisältää toimintoja tai ylikuormitettuja operaatioita. Avainsanoilla class ja struct määritellään C++:ssa luokka ja rakenne. NET-kielissä (C, VB. NET jne.) luokka on viitetyyppi, kun taas rakenne on arvotyyppi. Ja yleensä rakenteita käytetään pienemmille objekteille, mutta luokkia käytetään suuremmille objekteille, jotka säilyvät muistissa pidempään.