Az interfész meghatározza a kommunikációs határt két entitás között, például szoftverek, számítógépes hardver alkatrészek vagy felhasználó között . Általában egy absztrakt képre utal, amelyet az entitás önmagának nyújt a külseje felé. Ez lehetővé teszi a külsővel folytatott kommunikáció és a belső műveletek megkülönböztetését, és lehetővé teszi a belső műveletek módosítását anélkül, hogy befolyásolná a külső entitások vele való interakcióját, ugyanakkor több absztrakciót biztosít. Interfésznek nevezzük azokat az eszközöket is, amelyek fordítási eszközt biztosítanak olyan entitások között, amelyek nem ugyanazt a nyelvet használják, például emberi lény és számítógép között . Mivel ezek az interfészek fordításokat és adaptációkat hajtanak végre, a közvetlen kommunikációhoz képest további fejlesztési költségekkel járnak.
Fajták:
Ez a cikk a különböző szoftverkomponensek közötti szoftverinterfészeket tárgyalja, és programozási módot biztosít, amelyen keresztül ezek az összetevők kommunikálni tudnak.
Egy szoftver hozzáférést biztosít számítási erőforrásokhoz (például memória, processzor, tároló stb.) Az alapul szolgáló számítógépes rendszer révén ; Ha ezeket az erőforrásokat más szoftverrel hozzáférhetővé teszik, funkcionalitása és stabilitása jelentős - néha katasztrofális - következményekkel jár. A kulcsfontosságú tervezési elv az, hogy alapértelmezés szerint az összes erőforráshoz való hozzáférést megtiltja , csak jól meghatározott belépési pontokon, azaz interfészeken keresztül engedélyezve a hozzáférést (lásd a kapszulázást ).
A hozzáférési típus, amely interfészeket biztosít a szoftver komponensek lehetnek: állandók , az adatok típusát, eljárás típusok , kivétel leírások, és a módszer az aláírásokat. Bizonyos esetekben hasznos lehet a változók meghatározása az interfészen . A mellékelt eljárások és módszerek funkcionalitását gyakran meg is határozzák, akár megjegyzésekkel, akár (egyes kísérleti nyelveken) formális logikai állításokkal.
A szoftver modul interfészét szándékosan szigorúan elkülönítik a megvalósítástól . Ez utóbbi tartalmazza az interfészben leírt eljárások és módszerek tényleges kódját (a „privát” változók és eljárások kódja mellett). Egy szoftver modul , amely felhasználásra (más szóval a kliens az A ) nem fér el közvetlenül, csak hozzáfér át a felület . Használata felületek előnye tehát, hogy a csere megvalósításának másik, találkozó azonos előírásokat a felület, nem okozhat hibát a kliens modul - mindaddig, amíg ez természetesen. Használata megfelel az interfész-specifikációk (lásd is Liskov helyettesítési elvet ).
Az interfész koncepció a moduláris programozás sarokköve, az objektumorientált programozás előfutára és standard része . Objektumorientált programozásnál az objektum interfésze olyan módszerekből áll, amelyeket az objektumnak követnie kell. Ez az alkatrész „szolgáltatási szerződése”. Az objektumpéldány-változók nem részei az interfésznek - kifejezetten hozzáférőkön keresztül érhetők el.
Néhány objektumorientált nyelv megköveteli, hogy külön határozza meg az interfészt és a megvalósítást. Például az Objective-C alkalmazásban az interfészt egy fejlécfájlban, a megvalósítást pedig egy forrásfájlban határozzák meg. Például az Objective-C tipizálásával és dinamikus betöltésével üzenetet küldhetünk bármely objektumra, az interfész meghatározva, hogy melyik módszerre kell válaszolni (az l objektum osztály metódusai és a szülő osztályok módszerei között). .
Az interfészek történelmileg a korlátozott kontextusú és tartalmú C fejlécfájlokból származnak, és a nyelv szemantikájának részévé válnak (szemben a C előfeldolgozó funkcionalitásával ).
A Java nyelv más megközelítést alkalmaz, mint a többi objektumorientált nyelvben általában létező interfész fogalma (vagyis hogy a megadott interfész az interfész az osztályhoz), annyiban, hogy az interfész olyan metóduskészletet határoz meg, amely speciális osztályok együttes funkciói. Lásd a protokollt (objektumorientált programozás) .
Néhány programozási nyelv (pl. D , Java , Logtalk ) lehetővé teszi az interfész hierarchiák meghatározását . Ez lehetővé teszi például az interfész minimális és kiterjesztett változatának meghatározását.
Néhány programozási nyelv (pl. Logtalk ) támogatja az interfész privát és védett megvalósítását . Így az interfészen deklarált (nyilvános) módszerek könnyen válhatnak az interfészt megvalósító osztály privát vagy védett módszereivé.
A Eiffel nyelv magában foglalja a felület egy osztály invariáns és pre- és poszt-feltételeket az osztály módszerek. Ez elengedhetetlen a szerződésenkénti tervezés módszertanához , és az érvetípusok által előírt feltételek kiterjesztésének tekinthető. Ezeket a szabályokat meg lehet adni egy osztály implementációban vagy egy olyan elődben, amely végrehajtatlan metódusokat hagyhat meg.
Ezeket a szabályokat a fejlesztő kibonthatja a fejlesztői környezetben annak érdekében, hogy a felhasználó betekintést nyerjen ezen osztályok felületébe. Összeállítási szinten lehetővé teszik az állítások, azaz a kivételeket kiváltó feltételek definiálását; módszeres szerződésről beszélünk.
Példa egy "osztás (számláló, osztó)" függvény szerződésére, amely paramétereket kap az számlálóra és az osztóra: ha az osztó nulla, akkor állítást indítok, különben osztást hajtok végre.Az állításoknak a viselkedése a hibakeresés vagy a kioldás módjától függően eltérő lehet: általában hibakeresési módban az alkalmazás leáll, ami lehetővé teszi a hiba azonosítását, ellentétben a kiadás módjával, amely a szolgáltatás folyamatosságát támogatja.
A felosztás példáján az állítás hibakeresési módban a program leállítását eredményezi, a kiadás pedig nulla értéket ad vissza.A nyelv azt is biztosítja, hogy a származtatott osztályok betartsák őseik szerződését.
Egyes programozási nyelvek eltérő módszertanúak az interfészek megvalósításához. Általában bármely programozási nyelv képes interfészt megvalósítani, de a következő programozási nyelvek ilyen vagy olyan módon biztosítanak speciális interfész-lehetőségeket:
ActionScript Flash , Ada , C # , C (nyelv) , D , Delphi , Eiffel , Java , Logtalk , Mesa , ML , Modula , Modula-2 , Modula-3 , Oberon , Objective-C , PHP , Ocaml , Python , REALbasic , egységes modellezési nyelv , Visual Basic
A programozási felület ( Application Programming Interface vagy API) meghatározza a szoftverkönyvtár által közzétett funkciókat, amelyeket az ügyfélalkalmazások használhatnak.
Az információs és kommunikációs tudományokban az interfész egy rakás réteg, az információ fizikai közegétől kezdve a társadalomban történő terjesztéséig.
Az elektronika esetében hasznos részletezni a korábban leírt fizikai réteget, és kényelmes a következők kombinálása. Az interfészt ezután négy rétegben definiálhatjuk: