Graphical User Interface — Änderungen 3340 → 4575

Zeile 1: Zeile 1:
−
Ein GUI ('''G'''raphical '''U'''ser '''I'''nterface) ist eine grafische Oberfläche, die zumeist mit der Maus bedienbar ist. Ein [[Windows]]desktop ist ein typisches Beispiel für eine grafische Oberfläche. [[Linux]] z.B. bietet zwar grafische Oberflächen an, das Grundsystem ist jedoch eine Kommandozeile, und ein GUI ist nur optional (aber für viele Nutzer unentbehrlich).
+
Ein '''Graphical User Interface''' (GUI, dt.: grafische Benutzeroberfläche) zeichnet sich im Gegensatz zum [[Command Line Interface|CLI]] dadurch aus, dass der Benutzer seine Befehle nicht durch Texteingabe, sondern durch Aktionen mit grafischen Elementen gibt. Besonders im Desktop-Bereich haben sich GUIs durchgesetzt, und daher unterstützt auch fast jedes große Betriebssystem die Bedienung über ein GUI. Es ist also verständlich, wenn sich auch beim Hobby-OS-Entwickler der Wunsch entwickelt, eine GUI anzubieten.
  
−
== Vorteile eines GUI ==
+
== Merkmale ==
−
*Für die meisten [[Windows]]-gewöhnten Nutzer ist ein GUI bequemer zu bedienen als eine Commandline (Kommandozeile). Man klickt einfach auf das Browsericon, anstatt irgendeinen Textbefehl einzutippen, der den Textbrowser aufruft
+
Prägende Merkmale eines modernen GUI sind die Nutzung der [[Maus]] als primäres Eingabegerät und die Nutzung von Fenstern, welche sich auf einer oder mehreren Arbeitsflächen befinden (Stichwort: Virtuelle Desktops). Weitere (beinah) allgegenwärtige Features von GUIs sind Drag'n'Drop und eine Zwischenablage, um zu vermeiden, dass jedes Fenster von den anderen abgeschottet ist.
−
*Es ist bei mehreren, auf einmal laufenden Programmen übersichtlicher. In der Kommandozeile sind rein vom Aufbau her mehrere Fenster, zwischen denen man per simplem Klick wechselt, nicht möglich. Man kann in der Kommandozeile eigentlich nur ein Programm gleichzeitig laufen haben, das konkret Eingaben vom Benutzer entgegennimmt
 
−
*Die Darstellung von Bildern ist möglich
 
  
−
== Vorteile einer Kommandozeile ==
+
== Vorteile ==
−
*Man hat mehr Kontrolle über das System. Im File Explorer von [[Windows]] kann man Rechtsklick>Löschen auswählen. Eine genauere Spezifizierung der Anweisung, zum Beispiel, ob rekursiv alle Unterordner mit gelöscht werden sollen, oder nicht, ist nicht möglich. In der Kommandozeile können an einen Befehl aber problemlos beliebige Parameter angehängt werden, und damit die gewünschte Wirkung genauer angegeben werden
+
* Auch vollkommen unerfahrene Benutzer können mithilfe eines GUI oftmals Funktionen "erraten", sei es durch das Design der Icons oder auch durch Tooltips. Die Lernkurve durch "Learning-by-doing" verläuft viel steiler als bei Einsteigern in die Konsole.
−
*Eine Kommandozeilendarstellung verbraucht viel weniger Ressourcen. Auf Servern ist ein GUI reine Ressourcenverschwendung, da man an diesen nicht wie an gewöhnlichen Arbeitscomputern arbeitet, sondern sie fast nur zur Programmausführung verwendet, und man sich damit den Luxus eines GUIs zugunsten der Performance sparen sollte
+
* Die Bedienung erfolgt durch konkrete, sichtbare Objekte intuitver, der Benutzer muss sich weniger Gedanken machen.
−
*Ein GUI ist für Programmieranfänger im OS-Entwicklungsbereich viel anspruchsvoller (Grafiktreiber bzw. Nutzung von [[VESA]]/[[VGA]] oder Ähnlichem, Anzeigen aller Fenster in der richtigen Ordnung, Zugriff auf die Maus, etc.), und es empfiehlt sich für das Erstprojekt ein System, das erst einmal nur eine Kommandozeile bietet
+
:* ''Beispiel: Auf zwei virtuellen Konsolen laufen unterschiedliche Programme. Um zwischen diesen zu wechseln muss der Benutzer wissen, auf welchem tty das Programm läuft und dann per Tastenkombination wechseln. Bei einem GUI kann der Benutzer das zweite Programm in der Fensterleiste, oder direkt unter dem ersten, sehen, und muss es einfach nur anklicken.''
−
== GUI-Entwicklung ==
+
 
−
Mit der Entwicklung einer GUI sollte erst begonnen werden, wenn man bereits einen grundlegenden, robusten [[Kernel]] mit einer hinreichenden [[Speicherverwaltung]] und dergleichen hat.
+
== Nachteile ==
 +
* Das Hinzufügen neuer Programmfunktionen erhöht unweigerlich die Komplexität des GUI. Daher ist das Design eines komplexen GUI allein schon ein enormer Aufwand.
 +
:* ''Beispiel: In einem Dateimanager können alle Funktionen zu einer Datei in einem Kontextmenü untergebracht werden. Jedoch braucht jede Funktion auch einen eigenen Eintrag. Bei ausreichend vielen Einträgen wird das Menü vielleicht zu groß oder zu unübersichtlich. Bei einer Konsole ist es egal, wie viele Befehle verfügbar sind, da jeder Befehl direkt eingegeben werden kann.''
 +
* GUIs verbrauchen viele Ressourcen. Daher wird insbesondere auf Servern nur ein einfaches GUI eingesetzt oder oft auch ganz auf ein GUI verzichtet.
 +
* Last but not least ist der Aufwand der Entwicklung oder Portierung eines GUI enorm. Desweiteren braucht eine GUI besonders viel Infrastruktur, wie z.B. Grafik- oder Maustreiber. Von der Entwicklung eines GUI ohne einen stabilen und relativ ausgereiften [[Kernel]] ist also abzuraten.
  
−
== Techniken ==
 
−
Hier wird erklärt, was eine GUI ausmacht
 
−
=== Fenster ===
 
−
Meistens ist ein Fenster ein Rechteck. Dieses kann verschoben werden.
 
−
Ein Fenster kann geschlossen, minimiert oder die Größe kann verändert werden.
 
−
Meistens stellt ein Fenster ein Programm dar. Es können mehrere Fenster von einem Programm abstammen.
 
−
=== Drag and Drop ===
 
−
Bei Drag and Drop wird ein Bild verschoben.
 
−
=== Maus ===
 
−
Die Maus wird meistens als Zeiger dargestellt und wird mit einem speziellen Gerät
 
−
bedient. Diese Technik hat sich zum De-facto-Standard von GUIs gemausert.
 
 
== Links ==
 
== Links ==
−
*[http://osnews.com/story/20287/Common_Usability_Terms_part_IX_the_Menu Common Usability Terms]
+
[http://osnews.com/story/20287/Common_Usability_Terms_part_IX_the_Menu Common Usability Terms]
−
[[Category:Glossar]]
+
 
−
[[Kategorie:Betriebsystemkomponente]]
+
[[Kategorie:Glossar]]
−
[[Kategorie:Lizenz ungeklärt]]
+
[[Kategorie:Betriebssystemkomponente]]