software rozhraní může označovat široké spektrum různých typů rozhraní v různých „úrovní“: operační systém může rozhraní s kousky hardwaru. Aplikace nebo programy spuštěné v operačním systému mohou potřebovat interakci prostřednictvím datových toků, filtrů a potrubí; a v objektově orientovaných programech mohou objekty v aplikaci potřebovat interakci pomocí metod.
V praxeeditovat
klíčovým principem návrhu je zakázat přístup ke všem zdrojům ve výchozím nastavení, což umožňuje přístup pouze prostřednictvím dobře definovaných vstupních bodů, tj. rozhraní. Softwarová rozhraní poskytují přístup k počítačovým prostředkům(jako je paměť, CPU, úložiště atd. ne prostřednictvím dobře navržených rozhraní) k těmto zdrojům pomocí softwaru může mít velké důsledky—někdy katastrofální-pro funkčnost a stabilitu.
rozhraní mezi softwarovými komponentami mohou poskytovat konstanty, datové typy, typy procedur, SPECIFIKACE výjimek a podpisy metod. Někdy jsou veřejné proměnné také definovány jako součást rozhraní.
rozhraní softwarového modulu a je záměrně definováno odděleně od implementace tohoto modulu. Ten obsahuje skutečný kód postupů a metod popsaných v rozhraní, jakož i další“ soukromé “ proměnné, postupy atd. Jiný softwarový modul B, například klient do A, který interaguje s A, je k tomu nucen pouze prostřednictvím publikovaného rozhraní. Jednu praktickou výhodu tohoto uspořádání je, že výměna provedení s další implementace téhož rozhraní by nemělo způsobit B fail—jak interně, splňuje požadavky rozhraní není relevantní B, která se týká pouze specifikací rozhraní. (Viz také princip substituce Liskov.)
v objektově orientovaných jazycícheditovat
V některých objektově orientovaných jazyků, zejména těch bez plné vícenásobné dědičnosti, termín rozhraní je použito pro definování abstraktní typ, který neobsahuje data, ale definuje chování jako metoda podpisy. Třída, která má kód a data pro všechny metody odpovídající tomuto rozhraní a deklaruje tak, že implementuje toto rozhraní. Navíc i v jazycích s jednou dědičností lze implementovat více rozhraní, a proto mohou být různých typů současně.
rozhraní je tedy definice typu; kdekoliv objekt lze vyměnit (například funkce nebo volání metody) typ objektu, které mají být vyměněny mohou být definovány z hlediska jeden z jeho implementována rozhraní nebo základní třídy, spíše než s uvedením konkrétní třídy. Tento přístup znamená, že lze použít jakoukoli třídu, která implementuje toto rozhraní. Například fiktivní implementace může být použita k tomu, aby vývoj mohl pokračovat dříve, než bude k dispozici konečná implementace. V jiném případě může být během testování nahrazena falešná nebo falešná implementace. Takové implementace pahýlu jsou později ve vývojovém procesu nahrazeny skutečným kódem.
obvykle metoda definovaná v rozhraní neobsahuje žádný kód, a proto nemůže být sama volána; musí být implementována neabstraktním kódem, který má být spuštěn, když je vyvolán. Rozhraní nazvané „Stack
„může definovat dvě metody: push()
a pop()
. To může být realizováno různými způsoby, například FastStack
GenericStack
—první je rychlý, práce s datovou strukturu, z pevné velikosti, a druhý pomocí datové struktury, které mohou být zvětšena, ale za cenu o něco nižší rychlosti.
ačkoli rozhraní může obsahovat mnoho metod, mohou obsahovat pouze jednu nebo dokonce vůbec žádnou. Například jazyk Java definuje rozhraní Readable
, které má jedinou metodu read()
; různé implementace se používají pro různé účely, včetně BufferedReader
FileReader
InputStreamReader
PipedReader
StringReader
. Rozhraní značek jako Serializable
neobsahují žádné metody a slouží k poskytování informací o běhu generického zpracování pomocí reflexe.
Programování na interfaceEdit
použití rozhraní umožňuje pro programování stylu tzv. programových rozhraní. Myšlenkou tohoto přístupu je založit logiku programování na rozhraních použitých objektů, spíše než na interních implementačních detailech. Programování na rozhraní snižuje závislost na implementačních specifikách a činí kód opakovaně použitelnějším.
Tlačí tuto myšlenku do extrému, inverze kontroly listy kontextu aplikovat kód s konkrétní implementací rozhraní, které budou použity k provedení práce.