Abstraktiokerros on yksi tapa piilottaa tietyn toimintojoukon toteutustiedot. Sitä käytetään ohjaamaan suunnitellun järjestelmän monimutkaisuutta hajotuksen aikana , kun järjestelmä esitetään abstraktiotasojen hierarkiana .
Esimerkkejä abstraktiokerroksia käyttävistä ohjelmistomalleista ovat tietokoneverkkojen tietoliikenneprotokollien seitsemän kerroksen OSI-malli , OpenGL - grafiikkaprimitiivinen kirjasto, Unix - tavuvirran I/O - malli , jota käytetään MS DOS :issa , Linuxissa ja monissa muissa nykyaikaisissa käyttöjärjestelmissä. .
Unix-käyttöjärjestelmässä useimpia I/O-toimintotyyppejä käsitellään tavuvirroina, jotka luetaan laitteesta tai kirjoitetaan laitteelle . Tätä tavuvirtamallia käytetään tiedostolle , pistokkeelle ja tietokonepääte I/O:lle, jotta I/O:lle saadaan laiteriippumattomuus. Sovellustason laitteelta lukemista ja siihen kirjoittamista varten ohjelma kutsuu laitteen auki -toimintoa, joka voi vastata todellista laitetta, kuten päätelaitetta, tai virtuaalista laitetta , kuten verkkoporttia tai tiedostoa tiedostojärjestelmässä. . Laitteen fyysiset ominaisuudet välitetään käyttöjärjestelmälle, joka puolestaan tarjoaa abstraktin käyttöliittymän , jonka avulla ohjelmoija voi lukea ja kirjoittaa tavuja laitteeseen. Tämän jälkeen käyttöjärjestelmä suorittaa tietyn laitteen kanssa toimimiseen tarvittavat toimenpiteet.
Useimmat grafiikkakirjastot , kuten OpenGL, tarjoavat käyttöliittymänä abstraktin grafiikkamallin. Kirjasto vastaa ohjelmakomentojen kääntämisestä erityisiksi laitekomentoiksi, joita tarvitaan graafisten elementtien ja objektien piirtämiseen. Piirturikohtaiset komennot eroavat valvontakomennoista , mutta grafiikkakirjasto piilottaa laitekohtaiset toteutustiedot tarjoamalla abstraktin käyttöliittymän, joka sisältää joukon primitiiviä , jota käytetään yleisesti grafiikkaobjektien piirtämiseen.
Toimialuesuuntautuneessa suunnittelussa laajamittainen rakenne (aihealue ) voi käyttää vastuukerrosmallia . Esimerkiksi verkkotunnusmalli voidaan jakaa tasoihin (ylhäältä alas) "Päätöksen tuki", "Toiminto" ja "Tuotantokyky", joissa korkeamman tason entiteetit luottavat alemman tason entiteeteihin, mutta alemmalla tasolla ei. riippuu ylemmästä [1 ] .
David Wheelerin kuuluisa aforismi sanoo: Kaikki tietojenkäsittelytieteen ongelmat voidaan ratkaista toisella tasolla kiertävällä tavalla ; [2] Tämä lainataan usein väärin siten, että "kiertotie" korvataan sanalla "abstraktio". Kevlin Henneyn jatkossa lukee "... lukuun ottamatta ongelmia, jotka liittyvät laajaan epäsuoraan."
Usein abstraktiotasot on järjestetty abstraktiotasojen hierarkiaan. OSI-verkkomalli sisältää seitsemän abstraktiotasoa. Jokainen ISO OSI -mallin kerros ottaa huomioon erillisen osan viestintävaatimuksista, mikä vähentää niihin liittyvien suunnittelupäätösten monimutkaisuutta.
Ihannetapauksessa abstraktio suojaa ylemmän kerroksen kokonaan alemman kerroksen toteutusyksityiskohtilta. Siitä huolimatta enemmän tai vähemmän monimutkaisissa tapauksissa on lähes mahdotonta saavuttaa ihannetta, jonka Joel Spolsky ilmaisi vuotavien abstraktioiden lain muodossa[3] [4] :
Kaikki ei-triviaalit abstraktiot ovat täynnä reikiä.
Tietokonearkkitehtuurin osalta järjestelmä esitetään usein viiden abstraktiotason mallina: tietokonelaitteisto (katso laitteiston abstraktiokerros ), laiteohjelmisto , kokoonpanokieli , käyttöjärjestelmän ydin ja sovellukset . [5]