• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/66

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

66 Cards in this Set

  • Front
  • Back

Was sind Programm-Frameworks?

- wichtige Technik für die Wiederverwendbarkeit von Software


- ein erweiterbares und adaptierbares System aus Modulen oder Klassen, die eine Kernfunktionalität und Kommunikationsmechanismen einer allgemeinen Aufgabe oder Domäne


- Elemente: Klassen, Prozeduren, Module, Interfaces - abhängig von der Programmiersprache

Wie erscheint ein Framework syntaktisch für den Programmierer?

als eine Menge von Bibliotheksklassen

Was ist der Unterschied zwischen einem Framework und einer Menge von Bibliotheksklassen?

- klassische Programmierinterfaces, die den Zugriff auf Dienste des Netzwerks oder des Betriebssystems bieten, gelten nicht als Frameworks


- Klassen eines Frameworks arbeiten zusammen, um die Funktionalität komplexerer Teile von Softwaresystemen zu realisieren, die nicht von einer Klasse ausgedrückt werden können


- Framework ist also ein System aus Klassen, das zusätzlich die Möglichkeit zur Verfügung stellt, eine Menge von konkreten Systemen zu implementieren


- Frameworks legen einige architektonische Entscheidungen fest und stellen Implementierungen für diese zur Verfügung

Wie hängen Frameworks und Architekturmuster zusammen?

- sie basieren oft auf einem Architekturmuster


- sie helfen Softwareteile entsprechend dem Muster für eine bestimmte Aufgabe zu entwickeln

Was sind application frameworks?

- mächtigere Frameworks


- sie bilden die generische Architektur von einer Familie von Anwendungen ab

Welche Nachteile hat es, dass ein Framework generische Architekturen und generische Implementierungen in Form von Bibliotheksklassen in einer Programmiersprache abbildet?

- Programmframeworks basieren auf Whitebox-Wiederverwendbarkeit


- Sie sind an die Mechanismen und Beschränkungen der darunter liegenden Programmiersprache gebunden

Was ist Whitebox-Wiederverwendung?

- Anwendungen, die mit der Hilfe von Frameworks entwickelt wurden, werden häufig durch Spezialisierung der Bibliotheksklassen entwickelt


- Bei Whitebox-Verwendung muss der Programmierer Zugriff auf die Programmteile haben, die wiederverwendet werden sollen

Welche Nachteile hat die Whitebox-Wiederverwendung?

- Änderungen und Weiterentwicklung des Frameworks ist schwieriger


- Da der Benutzer alle Aspekte der Klassenimplementierungen erweitern kann, ist es sehr schwierig die Implementierungen zu ändern, ohne dass die bereits existierenden und mit diesem Framework entwickelten Anwendungen davon betroffen sind

Was ist der Graybox-Ansatz?

- bessere Kapselung und Interface-Spezifikationen werden verwendet


- Ziel ist es, klare Interfaces zwischen den Klassen des Frameworks und den Anwendungsklassen zur Verfügung zu stellen

Was ist der Blackbox-Ansatz?

- Komponenten sind vollständig gekapselt


- sie sind nur über ein klar definiertes Interface zugreifbar


- der Benutzer weiß nicht, wie die Komponenten implementiert sind


- Komponenten können in binärer Form und damit unabhängig von einer Programmiersprache sein und basieren somit nur auf Standards wie die Komponenten an das Programm oder andere Komponenten angebunden werden

Was ist die Aufgabe einer GUI?

sie soll eine benutzerfreundliche und flexible Interaktion zwischen Anwendung und Benutzern ermöglichen

Was sind die Hauptaufgaben einer GUI?

1. Sie erlaubt es, die Anwendung zu kontrollieren


2. Sie ermöglicht die Dateneingabe


3. grafische Repräsentation des Status der Anwendung und der Ergebnisse der durchgeführten Operationen

Was ist das Status-Konzept einer GUI?

- definiert zu jedem Zeitpunkt, welches Fenster und welche Komponente aktiv ist


- definiert, wann der Aktiv-Zustand wechselt


- die aktive Komponente nimmt die Eingabe des Benutzers entgegen

Was sind Aktionen?

- Der Benutzer kann zwischen Aktionen wählen


- Dies sind Mausklicks oder Tastatureingaben


- GUI stellt eine Vielzahl an möglichen Aktionen zur Verfügung


- Aktionen lösen normalerweise Aktionen des darunterliegenden Anwendungskerns aus


- Dies kann zu Konkurrenz führen, wenn z.B. zwei Aktionen gleichzeitig ausgeführt werden und wenn die erste Aktion eine Operation auslöst, bevor die zweite Aktion ausgeführt wird


- Das Ausführungsmodel von GUIs müssen solche Arten von Konkurrenz behandeln können

Aus welchen Komponenten besteht das MVC-Muster?

- Model


- View


- Controller

Was ist das Model?

- repräsentiert den darunterliegenden Anwendungskern und enthält den Status der GUI (z.B. welche Fenster geöffnet sind, der Status der Testfelder, der Status der Anwendung, so weit es wichtig für die Anwendung ist)

Was ist die View?

- Zeigt das Model oder Teile davon auf dem Bildschirm an


- Stellt grafische Repräsentationen für die GUI-Komponenten zur Verfügung und kombiniert diese mit strukturierten Panes und Fenstern


- Dadurch wird das Model sichtbar und zugreifbar für den Benutzer


- Verschiedene Views können verschiedene Perspektiven des Models zeigen

Was ist der Controller?

- kontrolliert die Interaktion zwischen Benutzer und Model


- er führt Benutzeraktionen aus


- normalerweise ist ein Controller genau einer View zugeordnet und meistens wird eine 1:1-Beziehung empfohlen

Was sind Ereignisse?

- Das typische Ausführungsmodell des MVC-Musters ist ereignisbasiert


- Jede Benutzeraktion startet ein oder mehrere Ereignisse


- Jedes Ereignis hat eine Quellkomponente, an welcher es erscheint


- Wenn ein Ereignis an einer Komponente oder einer View auftritt, wird der assoziierte Controller benachrichtigt


- Wenn das Ereignis nur die View betrifft, führt der Controller die Änderung sofort aus (z.B. wird eine Ansicht gescrollt)


- andere Ereignisse starten Operationen auf dem Model und dem darunterliegenden Anwendungskern


- Dadurch kann der Status des Models und der Anwendung geändert werden


- Das Model benachrichtigt View und Controller über solche Änderungen


- als letzten Schritt lesen Views und Controllers die Daten des geänderten Status

Warum ist der Benachrichtigungsmechanismus zwischen Views und Controllers wichtig?

- Er entkoppelt die Implementierung des Models von der der Views und Controller


- Das Model muss nicht wissen wie viele Views mit ihr verknüpft sind und wie diese Views strukturiert sind


- Die Views sind verantwortlich, notwendige Aktualisierungen durchzuführen als Reaktion auf Änderungsbenachrichtungen des Models

Ist das MVC-Muster streng festgelegt?

- Die meisten Autoren beschreiben es, wie es in Smalltalk implementiert ist


- Änderungen sind aber möglich, z.B. kann die Beziehung zwischen View und Controllers davon betroffen sein (gibt es immer eine 1:1-Beziehung?) oder das Ausführungsmodell

Was ist das AWT?

- Abstract window toolkit


- Basis-Programm-Framework von Java für die Entwicklung von GUIs


- Swing ist eine Erweiterung von AWT


- Besteht aus mehr als 100 Klassen


- Enthält eine Hierarchie aus GUI-Komponenten


- Sie werden benutzt, um Ansichten zu bauen, unterstützen Ereignisbehandlung und stellen einen Mechanismus zur Verfügung, um Listener zu registrieren

Was sind Listener?

Listener werden an einer Komponente registriert und werden informiert, wenn Ereignisse an einer Komponente auftreten

Was sind Containerklassen?

- Instanzen der Klasse Container oder dessen Unterklassen


- alle anderen Klassen sind elementare Komponenten


- Container enthalten elementare Komponenten


- wenn Container Komponenten enthalten, enthält die Repräsentation des Containers die Repräsentationen der Container auf dem Bildschirm


- Dadurch wird eine Hierarchie erzeugt

Was sind Fenster?

- Container, die nicht in anderen Containern enthalten sind


- Fenster können durch den Window Manager der Plattform, auf dem die Anwendung läuft, verwaltet werden


- Sie können z.B. vergrößert, verkleinert und verschoben werden

Was ist ein Frame?

- Das Hauptfenster der Anwendung


- Alle anderen Fenster müssen an diesem Fenster registriert werden, um die Ereignisbehandlung koordinieren zu können

Was ist ein Layout-Manager?

- berechnet das Layout einer Container-Repräsentation auf dem Bildschirm von den Layouts der GUI-Komponenten in dem Container


- AWT stellt sechs verschiedene Layout-Manager zur Verfügung

Wie funktioniert der Mechanismus zur Ereignisbehandlung in AWT?

- ist ähnlich zu MVC


- Ereignisse treten an einer GUI-Komponente auf


- Ein Listener-Objekt wird an einer GUI-Komponente registriert


- Ereignisse und Listener sind nach Arten sortiert, z.B. gibt es Mausereignisse und Mauslistener


- Tritt ein Ereignis der Sorte S an den Komponente K auf, K informiert alle Listener-Objekte des Typs S, die an K registriert sind


- Die Listener-Objekte entsprechen den Controllern


- Der Programmierer kann die Methode zur Verfügung stellen, die ausgeführt wird, wenn ein Listener über ein Ereignis informiert wird


- Die Methode kann Operationen des Anwendungskerns aufrufen

Was macht die Flexibilität der Ereignisbehandlung in AWT aus?

- Ein Listener-Objekt kann mehreren Komponenten zugewiesen werden


- mehrere Listener können an derselben Komponente registriert werden

Worüber muss sich der Programmierer bei der Verwendung von AWT keine Gedanken machen?

- Aktualisieren des Fensters


- Rendern von Bildern


- wie Ereignisse mit Komponenten verbunden werden


- wie Container-Layouts designed werden müssen, damit sie korrekt auf Größenänderungen reagieren


- wie man alle Features integrieren kann


- das Wissen über das alles ist in der Architektur und der Implementierung von AWT festgehalten und werden implizit durch den Programmierer verwendet

Wie werden einfache GUIs mit AWT erstellt?

- können meistens ohne Spezialisierungen konstruiert werden


- Programmierer erzeugt die Ansichten mit den GUI-Komponenten


- Dann werden die GUI-Komponenten mit dem Anwendungskern verbunden


- Dazu werden Listener für die GUI-Komponenten, die sie überwachen sollen, implementiert


- Dann werden die Listener bei den Komponenten registriert


- einfache GUIs werden also durch den Blackbox-Mechanismus verwendet

Wozu wird die Whitebox-Wiederverwendung benötigt?

- dazu gehört z.B. Spezialisierung der bereits existierenden Komponenten


- wird benötigt, um die Kernfunktionalität von AWT anzupassen


- Typischer Fall: Realisierung spezialisierter GUI-Komponenten oder Verfeinerung des Ereignismechanismus

Was sind Komponenten-Frameworks?

- unterstützen die Zusammensetzung von Softwaresystemen aus konkreten Softwarekomponenten


- sind wohldefinierte Entitäten, die von anderen Entwicklergruppen oder -firmen zur Verfügung gestellt werden

Was sind die Hauptziele von Komponenten-Frameworks?

- Wiederbenutzung von Software-Komponenten


- Eine Basis für einen Markt für Software-Komponenten zur Verfügung zu stellen


- Trennung von Rollen

Was bedeutet Trennung von Rollen?

Prozess des Entwickelns, des Deployens und der Verwaltung der Software kann früh in verschiedene Rollen unterteilt werden

In welche Rollen unterteilen Komponenten-Frameworks die Verantwortlichkeit des Entwickelns und Verwaltens eines Softwaresystems?

- Componenten-Provider


- Framework-Provider


- Anwendungs-Provider (entwickelt eine Anwendung auf Basis eines Frameworks)


- Anwendungsdeployer (installiert eine Anwendung auf einer Plattform)


- Systemadministrator

Warum ist die Trennung von Rollen wichtig?

wichtig für die Arbeitsteilung, Spezialisierung und einen besseren Wettbewerb auf dem Softwaremarkt

Welches Architekturmuster bietet die konzeptuelle Grundlage für Komponentenframeworks?

compound object pattern

Was bedeutet es, dass das Ziel von Komponentenframeworks die Blackbox-Benutzung ist?

Der Programmierer kann die Implementierung der Komponenten nicht einsehen und sie spielt auch keine Rolle

Was ist ein Kompositionsmechanismus?

Komponenten können kombiniert werden und die Infrastruktur für die Kommunikation zwischen den Komponenten wird zur Verfügung gestellt

Was ist ein Komponentenframework genau?

- eine Sammlung aus Regeln und Interfaces, welche die Interaktion von Komponenten leiten, welche im Framework zusammengesteckt werden


- umfasst Implementierungsteile wie Bibliotheken, Dienste und bestimmte Werkzeuge bzw Spezifkationen von Werkzeugen

Was ist das Komponentenmodell?

- besteht aus Regeln, die spezifizieren, welche Arten von Komponenten unterstützt werden, woraus eine Komponente besteht und welche Eigenschaften Komponenten haben


- viele Regeln sind syntaktisch (z.B. legen sie fest, dass eine Komponente aus einer Javaklasse besteht, die bestimmte Namenskonventionen erfüllt, oder dass eine Komponente ein bestimmtes Interface implementieren muss)


- es kann auch semantische Regeln geben

Woraus bestehen Komponenten?

- aus konkreten Programmteilen und Daten


- werden in einer Programmiersprache beschrieben

Was ist die Komponenteninfrastruktur?

- erklärt, wie Komponenten zusammengesetzt und deployt werden


- beschreibt die Regeln, wie eine Komponente eine andere anhand ihres Namens findet, wie Komponenten miteinander verbunden sind und wie sie kommunizieren können


- legt Interfaces fest, die es erlauben, Komponenten während der Laufzeit zu inspizieren.


- kann Mechanismen zur Verfügung stellen, um entfernte Komponenten zu starten und zu initialisieren


- kann Bibliothekscode enthalten, den Komponenten benötigen, um sich mit anderen Komponenten zu verbinden

Welche weiteren Funktionen können die Component Frameworks z.B. noch anbieten?

- Persistenz


- Sicherheitsmechanismen

Was ist RMI?

Der Mechanismus für entfernte Methodenaufrufe in Java

Warum ist RMI kein Komponentenframework?

- es stellt Bibliotheksklassen, Interfaces und Dienste zur Verfügung, mit denen Verbindungen zu entfernten Objekten möglich sind, um deren Methoden aufzurufen


- Es kann verwendet werden, um eine Komponenteninfrastruktur aufzubauen


- es ist aber kein Komponenten-Framework, weil ein Komponentenmodell fehlt

Warum ist AWT ein typisches Programmframework?

- ihm fehlt eine Komponenteninfrastuktur, die Regeln und Techniken für Komposition und Deployment zur Verfügung stellt


- der Programmierer hat nur die rohen Klassendeklarationen, um die Interfaces neu entwickelter AWT-Komponenten zu verstehen


- Deswegen entwickelte Sun EJB, das auf AWT aufbaut

Was ist ein wichtiger Unterschied zwischen AWT und EJB?

EJB definiert Regeln und Konventionen, die Komponenteninterfaces spezifizieren und stellt einen ereignisgesteuerten Kompositionsmechanismus zur Verfügung

Was ist EJB?

- Ein Komponentenframework von Sun


- Es unterstützt die Realisierung von Applikationsservern nach dem Dreischichten-Architekturmuster


- stellt kein Programmframework mit vorgefertigten Komponenten zur Verfügung wie AWT


- spezifiziert Interfaces der verschiedenen Teile des Frameworks und wie sie zusammenarbeiten

Was ist ein Applikationsserver?

- Ein Softwaresystem, das Dienste für (entfernte) Clients zur Verfügung stellt


- persistente Daten werden normalerweise von Datenbanken verwaltet

Welche Aufgaben haben Applikationsserver?

- Akzeptieren und Führen von Verbindungen zu Clients


- Dazu müssen Authorizierungs- und Sicherheitsmechanismen angeboten werden


- kontrolliert die Client-Sitzungen


- Liest aus einer Datenbank und schreibt hinein


- Diese Zugriffe müssen mit Zugriffen anderer Clients synchronisiert werden


- Transaktionsmechanismen


- Benachrichtigungsdienste für asynchrone Kommunikation


- verwaltet auch die sog. Entities, welche benutzt werden, um persistente Daten zu verwalten, die normalerweise in Datenbanken gespeichert sind.

Woraus besteht die Serverseite?

aus EJB-Container und einigen Diensten

Was ist der EJB-Container?

enthält und verwaltet die Komponenten des EJB-Frameworks, die Enterprise Java Beans

Was sind Enterprise Java Beans?

- Die Komponenten, aus denen ein application assembler eine serverseitige Anwendung erzeugt


- die resultierende Anwendung wird in einem EJB-Container deployt


- nach dem Deployen ist die Anwendung für die Clients verfügbar


- Anwendung und damit die Beans können auf die Mechanismen des darunterliegenden Containers zugreifen

Was sind bean instances?

Die Bean-Objekte zur Laufzeit

Welche Arten von destinations gibt es?

- Queue


- Topic

Was sind Topics?

erlauben es eine Nachricht an mehrere Empfänger zu senden

Was ist ein Persistence Provider?

- Wird vom Applikationsserver verwendet, um das Laden und Speichern von Objekten zu realisieren und dabei das Mapping vor dem Benutzer zu verstecken


- Beispiele: Hibernate, TopLink Essentials

Was ist die Hauptaufgabe des EJB Containers?

- kontrollieren des Lebenszyklus der Bean und Entity Instanzen


- er ist verantwortlich für eine effiziente Verwaltung der Bean Instanzen


- löscht und erzeugt Instanzen


- Wenn ein Container mit vielen Clients gleichzeitig arbeiten muss, kann er nicht alle Instanzen gleichzeitig im Hauptspeicher behalten


- Deswegen stellen viele Container Mechanismen bereit, um Instanzen passiv zu schalten, indem sie temporär auf die Festplatte geschrieben werden, und um sie zu reaktivieren

Was kann ein Container tun, um die Anzahl der benötigten Instanzen möglichst klein zu halten?

- Pooling


- Load balancing zwischen verschiedenen Containern

Was ist Load balancing zwischen verschiedenen Containern?

Wenn ein Container sehr beschäftigt ist, wird ein weniger benutzter Container benutzt. Dieser Vorgang muss natürlich für den Client transparent sein

Zwischen welchen Transaktionsarten kann der Programmierer wählen?

bean oder containerverwaltete Transaktionen

Warum erzeugt ein Container oft Hüllenklassen beim Deployen?

Er erzeugt diese, weil er die Geschäftsmethoden mit zusätzlichen Features bereichern muss (z.B. Transaktionen und Sicherheitsmechanismen)

Welche Vorteile bringt die Kapselung durch Hüllenklassen mit sich?

- der Container hat die Kontrolle über Bean Instanzen und kann nicht korrekte oder schädliche Zugriffe auf die Beans verhindern


- bilden Basis, um die Komponenten Infrastruktur mit den Komponenten zu verbinden


- Befreit den Bean-Entwickler in großem Umfang davon, sich um Probleme der Infrastruktur kümmern zu müssen

Welche Möglichkeiten hat der Client, auf Beans zuzugreifen?

- Client ist ein Standalone-Java-Client oder der Client wird nicht durch den Applikationsserver inspiziert: Zugriff ist nur über den JNDI-Namen der Bean möglich


- Sonst kann der Client Dependency Injection verwenden