a software interface may referred to a wide range of different types of interface at different ”levels”: a operating system may interface with pieces of hardware. Käyttöjärjestelmässä toimivat sovellukset tai ohjelmat saattavat joutua vuorovaikutukseen tietovirtojen, suodattimien ja putkistojen kautta; ja oliopohjaisissa ohjelmissa sovelluksen sisällä olevat objektit saattavat joutua vuorovaikutukseen menetelmien kautta.
käytännössä edit
suunnittelun keskeinen periaate on kieltää oletusarvoisesti pääsy kaikkiin resursseihin ja sallia pääsy vain tarkoin määriteltyjen sisääntulopisteiden eli rajapintojen kautta. Ohjelmistorajapinnat tarjoavat pääsyn tietokoneen resursseihin (kuten muistiin, suorittimeen, tallennustilaan jne.) taustalla olevasta tietokonejärjestelmästä; ohjelmistojen suora pääsy (eli ei hyvin suunniteltujen rajapintojen kautta) tällaisiin resursseihin voi aiheuttaa merkittäviä-joskus tuhoisia—vaikutuksia toiminnallisuuteen ja vakauteen.
ohjelmistokomponenttien väliset liitännät voivat tarjota vakioita, tietotyyppejä, toimintatyyppejä, poikkeusmäärittelyjä ja metodien allekirjoituksia. Joskus myös julkiset muuttujat määritellään osaksi rajapintaa.
ohjelmistomoduulin a käyttöliittymä on tarkoituksella määritelty erillään kyseisen moduulin toteutuksesta. Jälkimmäinen sisältää rajapinnassa kuvattujen menettelyjen ja menetelmien varsinaisen koodin sekä muut ”yksityiset” muuttujat, menettelyt jne. Toinen ohjelmistomoduuli B, esimerkiksi asiakas A: han, joka on vuorovaikutuksessa A: n kanssa, pakotetaan tekemään niin vain julkaistun käyttöliittymän kautta. Yksi käytännön etu tässä järjestelyssä on se, että A: n käyttöönoton korvaaminen saman rajapinnan toisella toteutuksella ei saa aiheuttaa B: n epäonnistumista—se, miten a sisäisesti täyttää rajapinnan vaatimukset, ei ole relevanttia B: lle, joka koskee vain rajapinnan eritelmiä. (Katso myös Liskovin korvausperiaate.)
oliopainotteisilla kielillä
eräissä olio-orientoituneissa kielissä, erityisesti niissä, joissa ei ole täyttä moniperimää, termillä interface tarkoitetaan abstraktia tyyppiä, joka ei sisällä tietoa, mutta määrittelee käyttäytymismallit metodien allekirjoituksina. Luokan, jolla on koodi ja tiedot kaikista kyseistä rajapintaa vastaavista menetelmistä ja joka ilmoittaa näin, sanotaan toteuttavan kyseisen rajapinnan. Lisäksi yksiperinteisissäkin kielissä voidaan toteuttaa useita rajapintoja, ja näin ollen niitä voi olla erityyppisiä yhtä aikaa.
rajapinta on siis tyyppimääritelmä; missä tahansa objektia voidaan vaihtaa (esimerkiksi funktio-tai menetelmäkutsussa) vaihdettavan objektin tyyppi voidaan määritellä jonkin sen toteutetun rajapinnan tai perusluokan perusteella sen sijaan, että yksilöitäisiin tietty luokka. Tämä lähestymistapa tarkoittaa, että mitä tahansa luokkaa, joka toteuttaa kyseisen rajapinnan, voidaan käyttää. Esimerkiksi valetoteutusta voidaan käyttää, jotta kehitys voi edetä ennen kuin lopullinen toteutus on käytettävissä. Toisessa tapauksessa väärennös tai valetoteutus voidaan korvata testauksen aikana. Tällaiset tynkätoteutukset korvataan reaalikoodilla myöhemmin kehitysprosessissa.
yleensä rajapinnassa määritelty menetelmä ei sisällä koodia, joten sitä ei voida itse kutsua, vaan se on toteutettava ei-abstraktilla koodilla, joka ajetaan, kun siihen vedotaan. Rajapinta ”Stack
”saattaa määritellä kaksi menetelmää: push()
ja pop()
. Se voidaan toteuttaa eri tavoin, esimerkiksi FastStack
ja GenericStack
—ensimmäinen on nopea, toimii kiinteän kokoisella tietorakenteella ja toinen käyttää tietorakennetta, jonka kokoa voidaan muuttaa, mutta hieman pienemmän nopeuden kustannuksella.
vaikka rajapinnat voivat sisältää monia menetelmiä, ne voivat sisältää vain yhden tai jopa ei lainkaan. Esimerkiksi Javan kieli määrittelee rajapinnan Readable
jolla on yksittäinen read()
menetelmä; eri toteutuksia käytetään eri tarkoituksiin, muun muassa BufferedReader
FileReader
InputStreamReader
PipedReader
ja StringReader
. Merkkiliitännät, kuten Serializable
, eivät sisällä lainkaan menetelmiä ja tarjoavat ajonaikaista tietoa yleiselle prosessoinnille heijastuksen avulla.
ohjelmointi interfaceEdit
rajapintojen käyttö mahdollistaa ohjelmointityylin, jota kutsutaan ohjelmoinniksi rajapintaan. Tämän lähestymistavan ideana on perustaa ohjelmointilogiikka käytettyjen olioiden rajapintoihin eikä sisäisiin toteutuksen yksityiskohtiin. Käyttöliittymän ohjelmointi vähentää riippuvuutta toteutuksen yksityiskohdista ja tekee koodista uudelleenkäytettävämpää.
tämän idean vieminen äärimmilleen, ohjauksen kääntäminen pois kontekstista pistää koodiin sen käyttöliittymän erityiset toteutukset, jota käytetään työn suorittamiseen.