Schnittstelle (Computing)

Im Computer, eine Schnittstelle ist eine gemeinsame Grenze, über die zwei oder mehr separate Komponenten von a Computersystem Informationen austauschen. Der Austausch kann dazwischen sein Software, Computerhardware, peripher Geräte, Menschenund Kombinationen davon.[1] Einige Computerhardwaregeräte wie a Berührungssensitiver Bildschirm, kann sowohl Daten über die Schnittstelle senden als[2]

Hardware -Schnittstellen

Hardware -Schnittstellen von a Laptop Computer: Ethernet Netzwerkbuchse (Mitte) links einen Teil der VGA Port, rechts (obere) a Anstellanschluss Sockel nach rechts (niedriger) a USB 2.0 Sockel.

Hardware -Schnittstellen existieren in vielen Komponenten, wie z. B. den verschiedenen Busse, Speichergeräte, Sonstiges I/o Geräte usw. Eine Hardware -Schnittstelle wird von den mechanischen, elektrischen und logischen Signalen an der Grenzfläche und dem Protokoll für die Sequenzierung (manchmal als Signalisierung bezeichnet) beschrieben.[3] Eine Standardschnittstelle, wie z. Scsientkoppelt das Design und die Einführung von Computerhardware wie z. I/o Geräte aus der Gestaltung und Einführung anderer Komponenten eines Computersystems, wodurch Benutzer und Hersteller eine große Flexibilität bei der Implementierung von Computersystemen ermöglichen.[3] Hardware -Schnittstellen können sein parallel mit mehreren elektrischen Verbindungen, die Teile der Daten gleichzeitig tragen oder Serie wo Daten eins gesendet werden bisschen zu einer Zeit.[4]

Software -Schnittstellen

Eine Software -Schnittstelle kann sich auf eine Vielzahl verschiedener Grenztypen auf verschiedenen "Ebenen" beziehen: Ein Betriebssystem kann mit Hardware -Teilen der Schnittstelle geführt werden. Anwendungen oder Programme Das Ausführen auf dem Betriebssystem muss möglicherweise über Daten interagieren Ströme, Filter und Pipelines;[5] und in objektorientierte Programme, Objekte in einer Anwendung müssen möglicherweise über die Interaktion über die Übernahme übertragen werden Methoden.[6]

In der Praxis

Ein Schlüsselprinzip des Designs besteht darin, standardmäßig den Zugriff auf alle Ressourcen zu verbieten und nur über genau definierte Einstiegspunkte, d. H. Schnittstellen, den Zugriff zu ermöglichen.[7] Software -Schnittstellen bieten Zugriff auf Computerressourcen (wie Speicher, CPU, Speicher usw.) des zugrunde liegenden Computersystems. Direkter Zugriff (d. H. Nicht durch gut gestaltete Schnittstellen) auf solche Ressourcen durch Software kann erhebliche Auswirkungen auf die Funktionalität und Stabilität haben-manchmal katastrophale.

Schnittstellen zwischen Softwarekomponenten können bereitstellen Konstanten, Datentypen, Arten von Verfahren, Ausnahme Spezifikationen und Methodensignaturen. Manchmal öffentlich Variablen werden auch als Teil einer Schnittstelle definiert.[8]

Die Schnittstelle eines Softwaremoduls A wird absichtlich getrennt von der definiert Implementierung von diesem Modul. Letzteres enthält den tatsächlichen Code der in der Schnittstelle beschriebenen Verfahren und Methoden sowie andere "private" Variablen, Prozeduren usw. Ein anderes Softwaremodul Bzum Beispiel die Klient zu A, das interagiert mit A ist dazu gezwungen, dies nur durch die veröffentlichte Schnittstelle zu tun. Ein praktischer Vorteil dieser Vereinbarung besteht darin, das Ersetzen der Implementierung von zu ersetzen A mit einer anderen Implementierung derselben Schnittstelle sollte nicht verursacht werden B zu scheitern - wie A intern erfüllt die Anforderungen der Schnittstelle nicht relevant für B, die ist nur besorgt mit den Spezifikationen der Schnittstelle. (Siehe auch Liskov -Substitutionsprinzip.))

In objektorientierten Sprachen

In einigen objektorientierter Sprachen, insbesondere die ohne vollständigen Mehrfacherbe, der Begriff Schnittstelle wird verwendet, um eine zu definieren Zusammenfassung Typ Das enthält keine Daten, definiert jedoch Verhaltensweisen als Methode Unterschriften. EIN Klasse Code und Daten für alle Methoden, die dieser Schnittstelle entsprechen, und erklärt dies zu implementieren diese Schnittstelle.[9] Darüber hinaus kann man selbst in Single-Inheritance-Sprachen mehrere Schnittstellen implementieren und daher kann sein von verschiedenen Typen gleichzeitig.[10]

Eine Schnittstelle ist also a Typ Definition; Überall überall kann ein Objekt ausgetauscht werden (z. B. in a Funktion oder Methode Ruf den Typ des ausgetauschten Objekts können in Bezug auf einen seiner implementierten definiert werden SchnittstelleS oder Basisklassen, anstatt die spezifischen anzugeben Klasse. Dieser Ansatz bedeutet, dass jede Klasse, die diese Schnittstelle implementiert, verwendet werden kann. Zum Beispiel a Dummy -Implementierung Kann verwendet werden, um die Entwicklung vor dem Fortschritt zu ermöglichen, bevor die endgültige Implementierung verfügbar ist. In einem anderen Fall a Fälschung oder Mock Die Implementierung kann während des Tests ersetzt werden. Eine solche Stummel Implementierungen werden später im Entwicklungsprozess durch den realen Code ersetzt.

Normalerweise enthält eine in einer Schnittstelle definierte Methode keinen Code und kann daher nicht selbst aufgerufen werden. Es muss mit dem nicht abstrakten Code implementiert werden, der ausgeführt werden soll, wenn es aufgerufen wird. Eine Schnittstelle namens "Stapel"könnte zwei Methoden definieren: drücken() und Pop(). Es kann beispielsweise auf unterschiedliche Weise implementiert werden, Faststack und Generikum- Das erste ist schnell, arbeitet mit einer Datenstruktur mit fester Größe und der zweite unter Verwendung einer Datenstruktur, die sich geändert werden kann, aber auf Kosten einer etwas geringeren Geschwindigkeit.

Obwohl Schnittstellen viele Methoden enthalten können, können sie möglicherweise nur einen oder gar keine enthalten. Zum Beispiel die Java Sprache definiert die Schnittstelle Readable Das hat die Single read() Methode; Verschiedene Implementierungen werden für verschiedene Zwecke verwendet, einschließlich BufferedReader, FileReader, InputStreamReader, PipedReader, und StringReader. Markierungsschnittstellen wie Serializable enthalten überhaupt keine Methoden und dienen dazu, Informationen zur allgemeinen Verarbeitung zu liefern Betrachtung.[11]

Programmierung an der Schnittstelle

Die Verwendung von Schnittstellen ermöglicht einen Programmierstil, der genannt wird Programmierung an der Schnittstelle. Die Idee hinter diesem Ansatz besteht darin, die Programmierlogik auf den Schnittstellen der verwendeten Objekte zu basisch und nicht auf internen Implementierungsdetails. Die Programmierung an der Schnittstelle verringert die Abhängigkeit von Implementierungsspezifikationen und macht den Code wiederverwendbarer.[12]

Diese Idee auf das Äußerste zu bringen, Kontrollinversion Verlässt die Kontext Um den Code mit den spezifischen Implementierungen der Schnittstelle zu injizieren, die zur Ausführung der Arbeiten verwendet werden.

Benutzeroberflächen

A Benutzeroberfläche ist ein Interaktionspunkt zwischen einem Computer und Menschen; Es enthält eine beliebige Anzahl von Anzahl von Modalitäten von Interaktion (wie Grafiken, Klang, Position, Bewegung usw.) Wenn Daten zwischen dem Benutzer und dem Computersystem übertragen werden.

Siehe auch

Verweise

  1. ^ Hookway, B. (2014). "Kapitel 1: Das Thema der Schnittstelle". Schnittstelle. MIT Press. S. 1–58. ISBN 9780262525503.
  2. ^ IEEE 100 - Das maßgebliche Wörterbuch der IEEE -Standardbegriffe. NYC, NY, USA: IEEE Press. 2000. S. 574–575. ISBN 9780738126012.
  3. ^ a b Blaauw, Gerritt A.; Brooks, Jr., Frederick P. (1997), "Kapitel 8.6, Geräteschnittstellen", Computerarchitekturkonzepte und Evolution, Addison-Wesley, S. 489–493, ISBN 0-201-10557-8 Siehe auch: Patterson, David A.; Hennessey, John L. (2005), "Kapitel 8.5, Schnittstellen -E/A -Geräte für Prozessor, Speicher und Betriebssystem", Computerorganisation und Design - Die Hardware/Software -Schnittstelle, dritte Ausgabe, Morgan Kaufmann, pp.588–596, ISBN 1-55860-604-1
  4. ^ Govindarajalu, B. (2008). "3.15 periphere Schnittstellen und Controller - OG". IBM PC und Klone: ​​Hardware, Fehlerbehebung und Wartung. Tata McGraw-Hill Publishing Co. Ltd. S. 142–144. ISBN 9780070483118. Abgerufen 15. Juni 2018.
  5. ^ Buyya, R. (2013). Mastering Cloud Computing. Tata McGraw-Hill Education. p. 2.13. ISBN 9781259029950.
  6. ^ Poo, D.; Kiong, D.; Ashok, S. (2008). "Kapitel 2: Objekt, Klasse, Nachricht und Methode". Objektorientierte Programmierung und Java. Springer-Verlag. S. 7–15. ISBN 9781846289637.
  7. ^ Bill Venners (2005-06-06). "Leitkante -Java: Designprinzipien von Designmustern: Programm zu einer Schnittstelle, keine Implementierung - Ein Gespräch mit Erich Gamma, Teil III.". Artima -Entwickler. Archiviert vom Original am 2011-08-05. Abgerufen 2011-08-03. Sobald Sie nur von Schnittstellen angewiesen sind, sind Sie von der Implementierung entkoppelt. Das bedeutet, dass die Implementierung variieren kann, und das ist eine gesunde Abhängigkeitsbeziehung. Zum Beispiel können Sie zu Testzwecken eine starke Datenbankimplementierung durch eine leichtere Scheinimplementierung ersetzen. Glücklicherweise müssen Sie mit der heutigen Refactoring -Unterstützung nicht mehr eine Schnittstelle mehr einfallen lassen. Sie können eine Schnittstelle von einer konkreten Klasse destillieren, sobald Sie die vollständigen Einblicke in ein Problem haben. Die beabsichtigte Schnittstelle ist nur eine 'Extrahierende Schnittstelle' refactoring weg. ...
  8. ^ Patterson, D.A.; Hennessy, J. L. (7. August 2004). Computerorganisation und Design: Die Hardware-/Software -Oberfläche (3. Aufl.). Elsevier. p. 656. ISBN 9780080502571.
  9. ^ "Was ist eine Schnittstelle". Die Java -Tutorials. Orakel. Archiviert vom Original am 2012-04-12. Abgerufen 2012-05-01.
  10. ^ "Schnittstellen". Die Java -Tutorials. Orakel. Archiviert vom Original am 2012-05-26. Abgerufen 2012-05-01.
  11. ^ "Leistungsverbesserungstechniken in der Serialisierung". Präzise Java. Archiviert vom Original am 2011-08-24. Abgerufen 2011-08-04. Wir werden zunächst über eine serialisierbare Schnittstelle sprechen. Dies ist eine Markierungsschnittstelle und hat keine Methoden.
  12. ^ Gamma; Helm; Johnson; Vlissides (1995). Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software. Addison Wesley. pp.17–18. ISBN 9780201633610.