Herzlich willkommen zur heutigen Vorlesung, bei der es darum geht,
wie wir grafische Benutzerschnittstellen bauen werden.
Wir haben wieder eine Reihe von Fragen,
durch die wir dann gehen werden,
aber starten wollen wir nochmal mit einer Wiederholung vom letzten Mal,
auch übrigens wundern Sie sich nicht über die Benennung der Folien.
Wir haben eine Vorlesung übersprungen. Wir haben zwei zusammengelegt.
Also wir sind jetzt bei Nummer 9. Aber wir hatten
über Entwurfsregeln für interaktive Systeme nach dem Wamm-Einsatz gesprochen.
Und dabei gab es dieses Bildchen mit den vier Elemententypen
Materialienfachwerte, Werkzeuge und Services. Und wir wollen,
wenn wir heute heute darüber sprechen, wie wir Werkzeuge bauen,
nämlich das sind die Teile mit den Benutzeroberflächen.
Dann werden wir auch drüber sprechen, welche Abhängigkeiten hier sind.
Deswegen interessiert uns diesmal die Pfeilrichtung. Wir gehen Sie kurz
erst mal durch. Materialien sind die Sachen, die wir bearbeiten.
Deswegen werden die verändert und es sind deswegen Gegenstände.
Fachwerte sind auch Dinge, die dabei eine Rolle spielen,
aber die Senden werden nicht bearbeitet.
Die sind unveränderlich. Werkzeuge ist das, was wir,
was eine grafische Oberfläche hat. Damit werden wir uns
heute vor allen Dingen beschäftigen. Und wenn wir,
wenn die eine größere Leistung haben, fachliche Dienstleistungen benutzen,
dann benutzen sie meistens die in Form von Services.
Die Services sind hinter den Werkzeugen sozusagen,
die werden von uns,
die machen die Arbeit
Und wir sehen, das Werkzeug selber benutzt den Service,
benutzt das Material, benutzt den Fachwert,
aber niemand benutzt das Werkzeug, außer wir Menschen.
Wir hatten soweit gesprochen, wie man Werkzeuge baut. Ja,
die Werkzeugklasse greift auf Material zu und wie macht sie das,
indem sie das bei der Konstruktion, bei der Erzeugung behält,
bei der Erhält als Konstruktorparameter. Und die Setterklasse,
auf diese die Services, auf die sie zugreifen soll,
das war ja auch noch so ein Pfeil hier,
ja, also das Werkzeug greift auf die Services zu,
wie bekommt sie das,
auch mit als dem Konstruktor
Und dann benutzt sie eine UI-Klasse, auch ebenfalls in einem Konstrukto.
Da guckt die UI-Klasse ist ja nicht dargestellt.
Wir haben verschiedene Bilder, wo wir sagen,
das Werkzeug besteht aus zwei Klassen und eine davon ist die UI-Klasse.
Zum Bild kommt gleich noch. Und diese UI-Klasse verwaltet letztlich
die grafischen Benutzeroberflächen. Verwalten heißt dabei, es steuert die
Anordnung, steuert die Aktivierung, übergibt den Sachen.
Und das, was wir dazu brauchen, sind zum einen
die Entwurfsmuster. Wir hatten ja schon das Beobachtermuster und
grafische Benutzeroberschnittstellen
Ja. Lassen Sie uns damit anfangen, warum machen wir das Ganze?
Zum einen, Sie erinnern sich, ich komme Ihnen immer
mit großen Systemen. Bei großen Systemen arbeiten viele Leute mit,
bei großen Systemen braucht man eine Struktur, bei großen Systemen
muss man eine Arbeitsteilung hinbekommen und deswegen braucht man eine Gliederung.
Außerdem ist es so,
dass Softwaresysteme immer über längere Zeit leben und deswegen haben wir
häufig eine Reihe von Änderungen zu erwarten oder die Änderungen passieren in sehr naher Zeit.
Das ist ja das, womit die Informatiker ihr Geld verdienen,
die ganze Welt ändert sich und die Softwaresysteme muss entsprechend
auch angepasst werden,
damit sie
diese Änderungen machen zu können
Solche Änderungen können sein, man tauscht mal die Plattform-Version,
weil technischer Fortschritt ist, aber ganz häufig ist es so,
dass fachliche Änderungen passieren, Geschäftsprozesse werden geändert,
fachliche Objekte bekommen neue Parameter,
Regeln, fachliche Regeln werden geändert oder man möchte einfach,
dass das User-Interface anders aussieht,
damit man mehr bessere Arbeitsteilung der Bearbeiter hinbekommt,
sei es nun in einer Fabrik,
wo Stoffe sortiert werden oder in einer Bank,
wo mein Vorgänger bearbeitet oder wo man aus Daten was auswerten möchte.
Also entsprechend die Darstellung spielt eine große, wichtige Rolle dafür,
was man mit der Software machen kann.
All diese Änderungen sollen möglichst nur eine kleine Auswirkung haben.
Und deswegen versuchen wir, das Werkzeug zu clevern.
Deswegen arbeiten wir immer mit Modularität, mit Verkommien ständig,
mit Modularisierung, Gliederung, Kapselung.
Das ist ja das, weswegen Objektorientierung erfunden worden ist.
Und eine gute Idee, etwas zu trennen, zu kapseln,
ist eine Trennung zwischen fachlichen und technischen Teil und fachlichen und Gui-Teil.
Weil Änderungen sich dann nicht nur für einen Teil auswirken.
Also wenn wir eine Änderung einer Technologie haben,
sollte bitte nicht der Teil mit den fachlichen Regeln betroffen werden,
weil der Programmierer,
der die fachlichen Regeln kennt,
vielleicht nicht so viel von Technologie weiß
Aber wir haben Leute, die sehr technologieaffin sind,
die sollen sich um die technischen hinterher kümmern. Deswegen,
die Trennung, fachlich, technisch, vor allen Dingen,
weil wir solche unterschiedlichen Bearbeiter haben wollen oder haben.
Das Gleiche, die Trennung fachlich und grafische Benutzerschnittstelle.
Fachliche Reh Änderungen wie Geschäftsregeln, ab wann gebe ich jemandem Kritik,
ab wann nehme ich welchen,
ab welcher Geschäftspaketgröße und Gewicht nehme ich welchen Paketdienst.
Oder wie laste ich ein Parkhaus aus,
wann schicke ich die Leute auf das nächste Parkdeck.
Solche fachlichen Regeln, die sind ja unabhängig davon,
wie ich es darstelle. Beziehungsweise die Darstellung hat manchmal
ganz andere Sachen, ganz andere Hintergründe und ganz andere
Frequenzen, also Häufigkeiten von Änderungen. Deswegen wäre es gut,
eine Beänderung der Gui, nur für die Gui-Klassen,
eine Änderung der fachlichen Klassen nur für die geilen Fachlichen entlassen.
Deswegen wollen wir diese Trennung haben. Und die Werkzeug,
die warmentwurfsregeln, sind genau deswegen so aufgebaut.
Ja, die Werkzeuge sind zuständig für die Repräsentation,
für die Handhabung durch den Menschen. Die Services,
Materialien, Fachwerte sind das, was das Fachliche macht,
die Funktionalität. Ja, und jetzt kommt das,
was ich eben schon ankündigte, die Werkzeug,
Werkzeuge bestehen typischerweise aus zwei Klassen,
nämlich der Werkzeugklasse und der User-Interface-Klasse
Dass die Werkzeugklasse macht die Verarbeitung, während die und die Steuerung und die Ereignisse,
wenn die User-Interface-Klasse die Darstellung allein tut. So,
wenn wir über die Darstellung reden,
und das ist ja heute unser Thema,
dann versucht man das nicht alles zu halten,
von Hand zu programmieren, die alten Kerle erzählen dann manchmal von Zeiten,
als man noch Pixel zählte und die fest in das rein programmierte,
wie groß ist jetzt ein Kasten und wie dick ist der Rand und wie dick ist der Schatten und wie geneigt ist das Druckersymbol.
Das machen wir heute alles gar nicht mehr, wir nutzen vorgefertigte Werkzeuge.
Und diese Diese vorgefertigten Werkzeuge haben natürlich irgendwie mit dem Betriebssystem
zu tun, weil das Betriebssystem viel für die Darstellung leistet.
Und da müssen die dazu passen. Und deswegen gibt es
für Windows und Mac-Enttäusche und Antroide und so weiter,
gibt es jeweils spezifische Werkzeuge, die dafür am besten geeignet sind,
dafür angepasst sind.
Tatsächlich ist es so, dass nicht mal alle objektorientiert sind,
manche arbeiten sehr stark mit Funktionen.
Aber das soll uns jetzt gar nicht unser Thema sein.
Wir kümmern uns vorrangig um Werkzeuge,
die für Java passen,
weil Java
unsere Plattform ist
Wenn man dafür ja war, nachschaut, was gibt es da für Werkzeuge,
so gibt es zum Beispiel das AWT, ausgesprochen,
Abstract Windowing Toolkit, das bietet Dienste relativ einfache Dienste,
um Windows, um Fenster zu bauen.
Swing ergänzt und erweitert das, um viel weitere Elemente.
Wir werden uns damit beschäftigen, AWT und zwingen,
das stehen Sie hier schon auf der Folie,
ist das, was wir in SE2 vorrangig verwenden.
Außerdem gibt es noch weitere Werkzeuge, das ist zum Beispiel QT,
Jumby, das hat eine Java-ABI,
auch wenn es in CMC plus geschrieben ist, oder Java-FX,
etwas muss moderner, es würde manchmal als Zwingen-Nachfolger gehandhabt.
Lassen Sie mich bei der Gelegenheit gleich sagen,
es könnte durchaus sein, dass, wenn Sie jemanden erzählen,
Sie arbeiten in SE2 bezwingen, dass der sagt, altmodisch,
ja, aber Java FX als der Nachfolger ist nicht so verbreitet.
Swing ist nach wie vor ein sehr verbreitetes Werkzeug.
Viele Systeme arbeiten damit und deswegen ist es durchaus nicht falsch, sich damit zu beschäftigen.
Wichtig ist jedenfalls, dass wir für diese Gui-Werkzeuge,
dass wir die benutzen können, um Hilfe zu haben,
um viele Sachen vorgefertigt zu haben und damit uns nicht mehr darum kümmern zu brauchen.
Wir können uns mehr darum kümmern, dass wir die Funktionalität aussieht,
weil die Präsentation sehr weitgehend davon schon gemacht wird.
Wir brauchen nur sagen, ich möchte da einen Watten haben
oder ich möchte da ein Snyder haben oder so etwas
Hinzu kommt noch, dass, indem wir uns nur konzentrieren,
wir brauchen den Slider und wofür brauchen wir den,
sind wir nicht mehr so stark von Plattformen abhängig.
Und es wird leichter, mal eine Anwendung umzubauen,
dass sie auf einer anderen Plattform läuft.
Und was natürlich auch noch gut ist bei diesen Reframeworks,
wir können in der Objektorientierung bleiben, wir müssen nicht jetzt auf Funktionen aufnehmen,
sondern wir können weiter mit Objekten arbeiten.
Wenn wir eine Swing-Applikation bauen, so sollte man durchaus mit was Einfachem anfangen,
ja, also so hellow-world-mäßig, ja,
wir machen einfach einen Knopf und da passiert etwas.
Ja, ein Knopf mit dem Text bitte drücken,
ein Ausgabefeld und wenn der Knopf gedrückt wird,
dann soll das Ausgabefeld jedes Mal eins
weiter zählen
Und dann ist jetzt so, was wir vor den Fragen,
vor denen sie dann stehen,
wenn sie sowas einfaches bauen wollen, wo sie dann fangen,
so ein Tutorial vielleicht zu lesen, sagen sie,
was haben wir denn für Komponenten in Gui,
die wir nehmen, in Zwingen, die wir nehmen können,
um so etwas zu bauen.
Und dann, wie können wir die,
wie es mit etwas Fachlichem verbinden, Gründer überwundert,
das riesige Fachliche ist hier, wir zählen.
Und wie können wir das Low Layout bauen?
Dabei sind wir gleich bei der Frage,
bei der ersten Frage angekommen, ja,
das erste haben wir jetzt hier mal übergangen mit der Änderbarkeit
Welche Teile grafischer Systeme können mit einem Goui-Framework wie Swing realisiert werden?
Also wir sehen schon hier die Goui-Gi-grafischen Komponenten und die vorgehende Folie
sagte das auch, nämlich das, was Präsentation wird,
die grafischen Komponenten können wir damit machen.
Und das werden wir gleich weiter anschauen. Doch gehen wir
nochmal weiter und zeigen, was für Elemente da für uns kommen.
Also wir haben zum Beispiel etwas, was nur etwas darstellt.
Nur eine blanke Darstellung, die nichts tut,
da können Sie ein Symbol reintun, ein Bild reintun,
was auch immer Sie wollen,
das heißt Label
Dann gibt es einen Knopf oder verschiedene Knöpfe. Die Checkbox,
die Radiobox und so ein ganz normaler Button. Die gibt es,
dann gibt es Textfelder, die man mit verschiedenen Sachen formatieren kann,
die aber im Wesentlichen so klein sind.
Und es gibt noch Textgefelder, Text Area,
nachdem ich da, mit dem ich arbeiten könnte.
Außerdem möchte ich manchmal eine Liste haben zum Auswählen,
eine Combo-Box ist das, was man aufklappen kann.
Das heißt, sie sehen eigentlich hier oben nur dieses Element.
Und wenn sie auf das Dreieck wählen, dann können sie eine Auswahl machen.
Das spart uns ein bisschen Platz. Dann gibt es solche,
Möglichkeit, ein Fenster zu verkleinern,
indem man hier leider einordnet und damit einen größeren Bereich auf einem kleinen Ausschnitt darstellt,
den Slider um einen Wert stufenlos einzustellen,
dann gibt es sowas wie einen Tooltipp, das können Sie machen,
Sie können eigentlich ins so eine Toolbar zusammenordnen, es gibt vorgefertigte,
solche Fortschrittsbalken, die brauchen Sie auch nicht selber bauen,
Baumdarstellungen, die brauchen Sie nicht selber bauen.
Solche Tabs, die man sehr gut verwenden kann,
wenn man nebenläufig, wenn man den Nutzer freistellen will,
ob er das das oder das machen will und dann eine gemeinsame,
gemeinsame okaye Platten hat,
Tabellen,
gesplittete Fenster und im Menüs
Das ist die erste Auswahl, aber wenn Sie erst einsehen,
gibt es noch eine zweite. Es gibt den Rahmen drumherum,
ein Dialog, wo mein Eingabefeld hat und eine Frage und ein Eingabefeld,
nochmal die Möglichkeit, einen Rahmen zu machen,
einen ganzen Dialog mit verschiedenen, also die Nachrichtendialog,
Warnungsdialog, Eingabedialoge und Bestätigungsdialoge, dann ein Fenster,
um Dateien zu wählen und ein Fenster,
um Farben zu wählen.
Das sind jetzt eine Auswahl, es gibt noch mehr,
das zeigt ihnen aber schon, Swingen ist sehr mächtig,
viele Sachen brauchen sie nicht selbst zu machen
Natürlich kann es immer noch passieren,
dass sie mal ein Fenster haben wollen mit Mehrfachauswahl
verschiebbare Größen und dann noch Farbattribute von Text dabei,
was ihnen zwingend dann nicht erlaubt,
das können sie dann immer noch selbst bauen.
Damit haben wir
vieles über Swing
erstmal gezeigt