Katsaus C#-ohjelmointikieleen
Löppönen, Tapio (2020)
Löppönen, Tapio
2020
Tietojenkäsittelytieteiden kandidaattiohjelma - Bachelor's Degree Programme in Computer Sciences
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-05-15
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202004294317
https://urn.fi/URN:NBN:fi:tuni-202004294317
Tiivistelmä
Tässä tutkimuksessa perehdytään Microsoftin kehittämään C#-ohjelmointikieleen ja sen käyttämään ajoympäristöön, joka on osa .NET Framework-ohjelmistokomponenttikirjastoa. C# on korkean tason oliopohjainen ohjelmointikieli ja tämän tutkimuksen tarkoituksena on perehtyä ohjelmointikielen syvällisempään toimintaan. Kirjallisuutena on pääsääntöisesti käytetty ohjelmointikielestä ja ajoympäristöstä tehtyjä tutkimuksia, jonka lisäksi on käytetty ohjelmointiparadigmoista tehtyä tutkimusta.
Ohjelmointikieli tarjoaa oletuksena automaattisen muistinhallinnan roskankeräysmenetelmällä, missä muistia varataan ja vapautetaan automaattisesti. Tämän lisäksi voidaan kuitenkin puhua viite- ja arvotyypeistä, missä tyyppi määrittelee sen arvon sijainnin muistissa. Näistä tyypeistä voidaan puhua olioiden ja metodien yhteydessä, jolloin tyypin avulla saadaan parempi ymmärrys niiden käyttäytymisestä. Tämä on erityisen tärkeää, sillä ohjelmointikielen oliopohjaisuudesta seuraa, että kaikki toiminnallisuus täytyy toteuttaa olioiden avulla.
Tutkimuksessa perehdytään myös muutamaan ohjelmointikielen tarjoamaan toiminnallisuuteen. Näihin toiminnallisuuksiin kuuluvat ominaisuudet, delegaatit ja geneeriset tyypit. Ominaisuudet tarjoavat tavan muodostaa aksessorin muuttujalle, missä muodostettu aksessori näyttää koodissa muuttujalta, mutta koostuu kuitenkin erillisestä luku- ja kirjoitusmetodista. Tämän avulla voidaan helposti toteuttaa tiedon kapselointi, joka on hyvin kirjoitetun olion ominaisuus. Delegaattien avulla voidaan muodostaa tyyppiturvallinen osoitin metodiin, tämän avulla voidaan luoda pohja metodin kutsumiselle niin että kutsuttu metodi voidaan liittää myöhemmin toteutukseen. Geneeriset tyypit mahdollistavat abstraktien tietorakenteiden, algoritmien ja uudelleenkäytettävien komponenttien kirjoittamisen ilman, että niiden käyttämää tyyppiä on tarkasti määritelty. C#-ohjelmointikielen tarjoama geneerisyys on kuitenkin rajoitetumpaa verrattuna sitä edeltävään C++-ohjelmointikieleen.
Ohjelmointikieli tarjoaa oletuksena automaattisen muistinhallinnan roskankeräysmenetelmällä, missä muistia varataan ja vapautetaan automaattisesti. Tämän lisäksi voidaan kuitenkin puhua viite- ja arvotyypeistä, missä tyyppi määrittelee sen arvon sijainnin muistissa. Näistä tyypeistä voidaan puhua olioiden ja metodien yhteydessä, jolloin tyypin avulla saadaan parempi ymmärrys niiden käyttäytymisestä. Tämä on erityisen tärkeää, sillä ohjelmointikielen oliopohjaisuudesta seuraa, että kaikki toiminnallisuus täytyy toteuttaa olioiden avulla.
Tutkimuksessa perehdytään myös muutamaan ohjelmointikielen tarjoamaan toiminnallisuuteen. Näihin toiminnallisuuksiin kuuluvat ominaisuudet, delegaatit ja geneeriset tyypit. Ominaisuudet tarjoavat tavan muodostaa aksessorin muuttujalle, missä muodostettu aksessori näyttää koodissa muuttujalta, mutta koostuu kuitenkin erillisestä luku- ja kirjoitusmetodista. Tämän avulla voidaan helposti toteuttaa tiedon kapselointi, joka on hyvin kirjoitetun olion ominaisuus. Delegaattien avulla voidaan muodostaa tyyppiturvallinen osoitin metodiin, tämän avulla voidaan luoda pohja metodin kutsumiselle niin että kutsuttu metodi voidaan liittää myöhemmin toteutukseen. Geneeriset tyypit mahdollistavat abstraktien tietorakenteiden, algoritmien ja uudelleenkäytettävien komponenttien kirjoittamisen ilman, että niiden käyttämää tyyppiä on tarkasti määritelty. C#-ohjelmointikielen tarjoama geneerisyys on kuitenkin rajoitetumpaa verrattuna sitä edeltävään C++-ohjelmointikieleen.
Kokoelmat
- Kandidaatintutkielmat [10747]
