InfoC-Fragen Antworten (c) 2002-01 Fabian M. Suchanek http://www.mpi-inf.mpg.de/~suchanek/personal/texts/summaries/infoc.txt Dieses sind die Fragen zur Klausurvorbereitung des Kurses "Informatik C" von Dr. Juergen Schoenwaelder im WS 2001 an der Universitaet Osnabrueck. Die Antworten habe ich aus dem Skript zusammengesucht. Durch das Weiterlesen akzeptiert der Leser, dass der Autor keinerlei Verantwortung fuer die Richtigkeit oder Vollstaendigkeit dieser Zusammenfassung uebernimmt. Wenn jemand einen Fehler gefunden hat, so waere ich fuer eine Mail dankbar. Nur so habe auch ich etwas von der Veroeffentlichung dieser Antworten. Meine E-Mail-Adresse ist f.m.suchanek@zweb.de, wobei das 'z' aus der Adresse geloescht werden muss. 1. Einfuehrung (a) Nennen Sie Eigenschaften von Software und erlaeutern Sie inwiefern sich Software von anderen technischen Produkten unterscheidet. * immatriell * kein Verschleiss * keine physikalischen Grenzen * leicht aenderbar * alternd * schwer vermessbar (b) Definieren Sie den Begriff Software-Engineering (Software-Technik). Das ingenieursmaessige Entwerfen, Herstellen und Implementieren von Software. (c) Was versteht man unter der Softwarekrise Die Zeit, in der viele Softwareprojekte so gross wurden, dass sie mit den damaligen Methoden nicht mehr zufriedenstellend fertig gestellt werden konnten. (c2) und was sind die typischen Problemquellen? * Groesse und Komplexitaet * Integration mit anderen Systemen * Steigende Qualitaetsanfordrungen * Portabilitaetsforderungen * Organisation der Entwicklung und Wartung (d) Was sind fehlertolerante Systeme? Systeme, die versuchen, auch im Fehlerfall korrekte Ergebnisse zu liefern. (d2) Was ist der Unterschied zwischen einem Fehler und einem Ausfall? Ein Ausfall ist Funktionsunfaehigkeit. (e) Erlaeutern Sie den Begriff Software-Qualitaet. Welche Qualitaetsmerkmale kennen Sie? Software-Qualitaet: Die Gesamtheit der Eigenschaften, die sich auf die Eignung zu den Erfordernissen beziehen. Anwendersicht: * Funktionalitaet * Zuverlaessigkeit * Benutzbarkeit * Effizienz * Robustheit * Korrektheit * Kompatibilitaet * Sicherheit * Ergonomie * Erlernbarkeit Entwicklersicht: * Aenderbarkeit * Uebertragbarkeit * Wartbarkeit * Erweiterbarkeit * Wiederverwendbarkeit 2. Prozessmodell Organisatorischer Rahmen zur Entwicklung und Wartung von Softwaresystemen. (a) Wozu dient das Capability Maturity Model (CMM)? Einschaetzung der Qualitaet der Softwareentwicklung von Initial Level (Kosten, Termine und Qualitaet unkontrolliert) ueber Repeatable Level (Termine kontrolliert), Defined Level (Termine und Kosten kontrolliert), Managed Level (Termine, Kosten und Qualitaet kontrolliert) bis zum Optimized Level (Entwicklungsprozess selbst kann kontrolliert werden). (b) Erlaeutern Sie den wesentlichen Unterschied zwischen dem Wasserfallmodell und dem V-Modell. Beide Prozessmodelle sehen eine Folge von Planungsschritten mit moeglichem Backtracking vor. Bei V-Modell wird jedoch nach jedem Planungsschritt ein Test durchgefuehrt. (c) Beschreiben Sie den Unterschied zwischen einem horizontalen und einem vertikalen Prototyp und zwischen einem Demontrationsprototyp und einem Pilotsystem. * horizontaler Prototyp: Eine Ebene des Systems ohne Tiefgang (z.B. Oberflaeche) * vertikaler Prototyp: Eine Funktion des Systems * Demonstrationsprototyp: Dient der Auftragsakquisation und ist mit Hilfe von Generatoren implementiert * Pilotsystem: Prototyp mit eingeschraenkter Stabilitaet und Einsatzfaehigkeit Sprialmodell: Evolutionaeres Modell, bei dem zuerst die Kernkomponenten implementiert werden und in weiteren Umlaeufen weitere Komponenten hinzu kommen. Jedes Teilprojekt wird mit einem passenden Prozessmodell entwickelt. Transformationelles Modell: Durch semantikerhaltende Transformationen wird eine abstrakte Spezifikation in ein ausfuehrbares Programm ueberfuehrt. (d) Nennen Sie die wesentlichen Techniken des extremen Programmierens. 1. kleine Releases 2. Planungsspiel 3. Tests 4. Systemmetapher 5. Wahl des einfachsten Entwurfes 6. Refaktorisierung 7. Programmieren zu zweit 8. Gemeinsames Eigentum 9. Kontinuierliche Integration 10. 40-Stunden-Woche 11. Kundenvertreter im Team 12. Programmierrichtlinien (e) Welches Prozessmodell wuerden Sie bei der Entwicklung einer Software zur Verwaltung von Bibliotheksbestaenden inklusive einer Web-basierten Ausleihfunktion einsetzen? V-Modell 3. Unified Modeling Language (a) Nennen Sie mindestens 5 Diagrammarten der Unified Modeling Language. * Klassendiagramme: Struktur und Abhaengigkeiten von Klassen * Objektdiagramme: Schnappschuss eines Systems * Sequenzdiagramme: Menge von Nachrichten, die Objekte ueber einen Zeitraum austauschen * Kollaborationsdiagramme: Plattgeklopfte Sequenzdiagramme * Zustandsdiagramme: wie endlicher Automat * Aktivitaetsdiagramme: Ablaufdiagramm letzere beide haben einen gefuellten Kreis als Ausgang und einen gefuellten Kreis mit Ring rumherum als Ende (!) * Anwendungsfalldiagramm: Aktivitaten aus Sicht der Anwender * Komponentendiagramme: Beziehung zwischen physischen Programmcode-Teilen * Verteilungsdiagramme: Zeigt physische Komponenten mit ihrem Ort zur Laufzeit (b) Wie werden in Klassendiagramme Sichtbarkeiten und Gueltigkeitsbereiche notiert? Sichtbarkeit: Mit +, -, # Gueltigkeitsbereich: Unterstrichen heisst static, sonst objektbezogen (c) Was versteht man unter Generalisierung, Spezialisierung, Aggregation und Komposition? Welche Darstellungsformen werden benutzt? Assoziation: Beziehung zwischen Klassen Generalisierung: Beziehung Unterklasse-Oberklasse, schraffierter Pfeil in lila mit hohlem Kopp Spezialisierung: Beziehung Oberklasse-Unterklasse Aggregation: Teil-Ganzes-Beziehung, Pfeil mit Raute auf Seite des Ganzen Komposition: Spezielle Aggregation, bei der die Teile vom Ganzen existenzabhaengig sind Pfeil mit gefuellter Raute auf Seite des Ganzen (d) Was versteht man unter einer rekursiven Assoziation? Eine Assoziation einer Klasse mit sich selbst. (d2) Geben Sie ein Beispiel fuer eine rekursive Assoziation an. Wenn eine Person fuer eine andere Person arbeitet. (e) Erlaeutern Sie den Begriff der Multiplizitaet. Die Multiplizitaet gibt an, mit wievielen Objekten der anderen Klasse eine Klasse assoziiert sein kann. (f) Was sind Assoziationsklassen? Klassen, die eine Assoziation zwischen anderen Klassen beschreiben. (g) Entwerfen Sie ein Klassendiagramm und ein passendes Objektdiagramm fuer eine sehr einfache Bibliothek. Buch, Bibo, UserInterface, MitarbeiterInterface (h) Entwerfen Sie ein Sequenzdiagramm fuer den Vorgang Auto tanken. Benutzer, Benzinklappe, Saugrohr, Benzinautomat (i) Was ist ein Kollaborationsdiagramm? In welchem Verhaeltnis steht es zu einem Sequenz-diagramm? Beide druecken dasselbe aus, nur von unterschiedlichen Gesichtspunkten: Das Sequenzdiagramm zeigt die Objekte als Aktionsteilnehmer in der Zeit wohingegen das Kollaborationsdiagramm der zeitliche Abfolge nur durch Zahlen an den Nachrichtenpfeilen Rechnung traegt. (j) Beschreiben Sie in einem Aktivitaetsdiagramm die Zubereitung einer [Tiefkuehl-]Pizza. Backofen vorheizen, warten, Pizza aus der Tiefkuehlkiste holen, Pizza auspacken, Pizza in den Ofen packen, warten, Tischdecken, Ofen runtertakten, Pizza rausholen, Pizza essen. (j2) Welche Aktivitaeten koennen nebenlaeufig ausgefuehrt werden? Jeweils das Warten. (j3) Wozu kann man Swimlanes benutzen? Um Aktionen Akteuren zuzuordnen. (k) Erklaeren Sie die Begriffe Komponenten- und Verteilungsdiagramm. Komponentendiagramm: zeigt die Beziehungen zwischen physischen Programmcodeteilen Verteilungsdiagramm: zeigt, welche Programme auf welchem Node (rechner/CPU) Programme installiert sind. 4. Entwurfsmuster (Design Patterns) (a) Was versteht man unter einem Entwurfsmuster und in welcher Form werden Entwurfs-muster beschrieben? Ein Entwurfsmuster ist eine Standardloesung fuer eine Klasse von Programmierproblemen. Es wird charakterisiert durch: Name, Aufgabe, Synonyme, Motivation, Anwendbarkeit, Struktur ,Teilnehmer, Zusammenarbeit, Konsequenzen, Implementation, Beispiel, Anwendungen und verwandte Entwurfsmuster. (b) Beschreiben Sie das Entwurfsmuster Composite. Ein Ganzes enthaelt Teile und verhaelt sich wie ein Teil. (c-f) Design Patterns Factory: Ein Creator stellt eine Schnittstelle zur Erzeugung eines Objektes bereit und entscheidet im Anwendungsfall, welches Unterobjekt er liefert. Iterator: Ein Aggregat kann einen Iterator liefern, der ueber die Methoden "next" und "isDone" verfuegt. Mit ihm kann man nacheinander alle Elemente des Aggregats durchlaufen. Composite: Sowohl einLeaf als auch ein Composite sind von Component abgeleitet, wobei aber das Composite selber wieder Components enthalten kann. Operationen auf Composites leiten die Operationen lediglich an alle enthaltenen Components weiter. Observer: Ein Subject verwaltet eine Liste von Observern (attach und detach), die ihrerseits ueber eine Update-Methode verfuegen. Wannimmer das Subject geaendert wird, wird (vom Subject oder extern) die Update-Methode der Observer aufgerufen, die ihrerseits wieder das Subject nach seinem Zustand fragen. Strategy: Ein Interface stellt die Methode "doActions" o.ae. zur Verfuegung, die in verschiedenen Klassen unterschiedlich implementiert ist. Chain of Responsibility: Potentielle Empfaenger einer Nachricht bekommen nacheinander die Moeglichkeit, eine Nachricht zu verarbeiten. Das zugehoerige Handler-Interface hat die Methode "handleRequest()". Model View Controller: Aufteilung eines Softwaresystems in Controller (Interaktion mit Benutzer), View (Anzeige) und Model (Daten). 5. Qualitaetssicherung (a) Nennen Sie typische Klassen von Softwarefehlern. * Berechnungsfehler * Schnittstellenfehler * Kontrollflussfehler * Initialisierungsfehler * Datenflussfehler (b) Was ist eine Programminspektion? Ein formales Vorgehen, beoi dem ein Programm durch andere Personen kontrolliert wird. Review: Weniger formale Programminspektion, genauso erfolgreich. Walkthru: Der Autor stellt das Produkt vor und die Gutachter stellen Fragen. (c) Erklaeren Sie den Unterschied zwischen Black Box und White Box Testverfahren. Testverfahren: Blackbox: Interne Struktur der Komponente ist unbekannt Whitebox: Interne Struktur bildet Testgrundlage Greybox: Mittelding (!) (d) Was versteht man unter funktionalen Testverfahren? Funktionale Testverfahren testen die Spezifikation ohne interne Struktur. Sie brauchen eine vollstaendige Spezifikation und ein Orakel, was die richtigen Antworten weiss. (d2) Wozu dienen die Aequivalenzklassen? Man teilt die Wertebereiche von Ein- und Ausgaben in Aequivalenzklassen, fuer gueltige und ungueltige Werete. Getestet wird dann mit jeweils einem Repraesentanten jeder Klasse. Jeder Eingabebereich erhaelt mindestens eine Aequivalenzklasse, jede Teilmenge gueltiger Werte bestimmt eine weitere gueltige und eine ungueltige Aequivalenzklasse. Repraesentanten werden zufaellig ausgewaehlt oder an den Raendern der Klassen. (e) Erklaeren Sie anhand eines kleinen Beispiels den Begriff des Kontrollflußgraphen. Kontrollflussgraph: Knoten stellen Anweisungen oder Bedingungen dar, Kanten den Kontrollfluss. Kontrollflussorientierte Verfahren fordern, dass jedes Element mindestens einmal erreicht wird. (f) Im Zusammenhang mit Kontrollfluß-orientierten Verfahren spielen die Begriffe Anwei-sungs¨ uberdeckung, Zweigueberdeckung, Bedingungsueberdeckung und Pfadueberdeckung eine wichtige Rolle. Erklaeren Sie die Begriffe sowie das Verhaeltnis zueinander. Anweisungsueberdeckung: Jeder Knoten muss einmal ausgefuehrt werden. Zweigueberdeckung: Jede Kante muss einmal durchlaufen werden. Bedingungsueberdeckung: Jede Bedingung muss einmal true und einmal false sein. Pfadueberdeckung: Jeder Pfad muss einmal durchlaufen sein. Theoretisches Kriterium, da oft unendlich viele Pfade. Mutationstesten: Es werden kleine Modifikationen am Programm vorgenommen und geprueft, ob die Tests sie erkennen. (g) Wozu dienen Regressionstests? Regressionstest: Testen der Software mit allen vorherigen Tests. Damit soll sich die Qualitaet der Software uber laengere Zeit verbessern. 6. Werkzeuge (a) Welche Werkzeuge zur Programmentwicklung kennen Sie? Debugger: Werkzeug, mit dem man ein Programm in Eimzelschritten ablaufen lassen kann. Programmkonstruktion: Werkzeuge zur Programmkonstruktion kennen die Abhaengigkeiten zwischen Programmkomponenten und updaten abhaengige Komponenten, sobald eine geaendert wurde (make). (b) Was versteht man unter Versionsmanagement? Versionsmanagement: Verwalten von unterschiedlichen Versionen eines Programmes. (c) Im Zusammenhang mit den Systemen RCS und CVS spricht man von Revisionen, Vari-anten und Konfigurationen. Erlaeutern Sie diese Begriffe an einem geeigneten Beispiel. Revision: Update Variante: Parallel entwickelte Version Konfiguration: Ein Schnitt durch die Versionen der verschiedenen Dateien. Versionsgraph: Graph zur Darstellung von Revisionen und Varianten. (d) Nennen Sie die wesentlichen Unterschiede zwischen RCS und CVS. RCS (Revision Control System): Versionsverwaltung, die alle Aenderungen in einer Datei speichert. Mehrere Programmierer duerfen nicht gleichzeitig an derselben Datei arbeiten. CVS (Concurrent Version System): Unterstuetzt Versionierung ganzer Dateibaeume, auch Hinzufuegen und Loeschen von Dateien. Mehrere Entwickler koennen gleichzeitig an derselben Datei arbeiten. (e) Wozu dienen Testwerkzeuge? Nennen Sie Beispiele. Testwerkzeuge: Fuehren automatisch Komponententests und Regressionstests durch. Beispiel: JUnit: TestCases bilden eine TestSuite, die testXXX()-Methoden haben. (f) Was versteht man unter einer integrierten Entwicklungsumgebung? Welche Vorteile be-sitzen integrierten Entwicklungsumgebungen? IDE: Programmierumgebung, bei der viele Werkzeuge integriert sind. 7. Ergonomische Aspekte (a) Was versteht man unter einem Benutzermodell? Eine Modellierung des Benutzers. Meist unterscheiden Softwaresystemne jedoch nur Benutzergruppen (Anfaenger, Gelegenheitsnutzer, Experten) (b) Was sind modale Dialoge und wann sollte man modale Dialoge verwenden? Dialogarten: * Modaler Dialog: Blockiert Primaerdialog, moeglichst vermeiden (c) Erklaeren Sie die Begriffe Primaerdialog und Sekundaerdialog. * Primaerdialog: Hauptdialog, der erst bei Aufgabenfertigstellung endet * Sekundaerdialog: Kurzzeitdialog (d) Was ist der Unterschied zwischen einer funktionsorientierten und einer objektorientier-ten Bedienung? Funktionsorientiert: Erst Funktion, dann Objekt waehlen Objektorientiert: andersrum (e) Erklaeren Sie die Begriffe Aufgabenangemessenheit, Selbstbeschreibungsfaehigkeit, Steu-erbarkeit, Erwarungskonformitaet, Fehlertoleranz, Individualisierbarkeit und Lernfoerder-lichkeit. Grundsaetze zur Dialoggestaltung: Aufgabenangemessenheit: Der Dialog tut, was er soll. Selbstbeschreibungsfaehigkeit: Jeder Schritt ist dem Benutzer verstaendlich oder kann erklaert werden. Steuerbarkeit: Benutzer kann Richtung und Geschwindigkeit kontrollieren (Undo/Redo, Sicherheitsabfragen, Back/Forward, Unterbrechen). Erwartungskonformitaet: Einheitliches Aussehen und Verhalten. Fehlertoleranz: Ergebnis wird trotz fehlerhafter Eingaben mit nur minimalem Korrekturaufwand erreicht (kein Absturz). Individualisierbarkeit: Anpassbarkeit an Beduerfnisse und Kenntnisse des Benutzers. Lernfoerderlichkeit: Unterstuetzt den Benutzer beim Erlernen des Dialogsystems. (f) Welche Regeln sollte man bei der Gestaltung von Dialogen beachten? * Konsistenz * Shortcuts * Feedback * Dialoge sollten Ende haben * Fehlerbehandlung * Undo * Benutzergesteuertheit * Keine Kurzzeitgedaechtnisueberstrapazierung 8. Java Abstract Windowing Toolkit (AWT) (a) Was versteht man unter ereignisorientierter Programmierung? Programm wartet in Hauptschleife auf Ereignis und leitet das dann an Handler weiter. (b) Erlaeutern Sie an einem kleinen Beispiel, wie ein Java Programm auf den Eintritt eines Ereignisses reagieren kann. Chain of Responsibility an die Listener eines Events. (c) Was versteht man unter containment und durch welche Klassen wird dieses Konzept realisiert? Containment bedeutet die Relation des Enthaltenseins einer graphischen Komponente in einer anderen. In Java realisiert durch Container, die eine Liste von Components enthalten. 9. Java Foundation Classes (Swing) (a) Wodurch unterscheiden sich Top-Level-Container von anderen Containern in der Swing Klassenbibliothek? Top-Level-Container (JFrames) haben einen Titel und Close-Button. (b) Welche Aufgaben erledigt ein Layout Manager? Er ordnet die Components in einem Container. (b2) Was ist der Zusammenhang zwischen minimumLayoutSize, preferredLayoutSize und maximumLayoutSize? minimum: Minimum, Komponente wird nicht kleiner gemacht maxinum: Maximum, Komponente wird nicht groesser gemacht preferred: lieblingsgroesse Look-and-Feel: Aussehen einer Komponente, kann ueber den UIManager global per String gesetzt werden. Panes: Anzeigeschicht. RootPane zerfaellt in Glaspane, Contentpane und layeredpane. Threads: Der in einem ereignisbasierten Programm laufende Thread ist der Eventdispatchthread, der Eingaben an die Listener weiterleitet. Nur der EDT darf Swingkomponenten aktualisieren (nicht threadsafe). Mit SwingUtilities.invokeLater koennen zeitkritische Tasks ausgelagert werden. (c-e) Layoutmanager: Interface mit minimumLayoutSize etc. und Methode zur Layoutberechnung (layoutContainer). BorderLayout: Himmelsrichtungen und Center BoxLayout: Haut Komponenten uebereinander oder nebeneinander, Ausrichtung bestimmbar, rigid areas machen leeren Platz, glue areas machen dehnbaren leeren Platz, fillers machen min,max,pref Platz CardLayout: Mehrere Komponenten sind gestapelt, nur die oberste ist sichtbar FlowLayout: Dere Reihe nach rein GridLayout: Tabelle, Zeilen, Spalten und Zwischenraum definierbar GridBagLayout: Tabelle, Zeilen, Spalten, Groessen bestimmbar, Komponenten koennen Zellen ueberspannen. Fuer jede Komponente bestimmt ein GridBagConstraints-Objekt die Position und Groesse. Internal/External Padding: Abstand. Insets bestimmt Rand des Containers. Anchor bestimmt ausrichtung in Zelle. weightx/y bestimmen, wie freier Platz verteilt wird. AbsoluteLayout: Absolute Positionierung (f-h) Komponenten JComponent: Mutter aller Swing-Komponenten JApplet: Applets JDialog JFrame JMenuBar: Sammlung von JMenus, jedes Sammlung von J[Radiobutton|CheckBox]MenuItems, dann JFrame.addMenuBar oder einfach add JToolBar: Sammlung von JButtons, kann verschoben werden Actions: anonyme Klasse wird von AbstractAction mit Name und Icon abgeleitet, hat Methode ActionPerformed. Kann in ToolBar und Menu geadded werden. JScrollpane: Nimmt Scrollable Komponente auf, zeigt JViewPort JSplitPane: Besteht aus 2 Panes, zeigt sie nebeneinander mit bewegbarem Trenner (i) Nach welchem Prinzip erfolgt die Darstellung von Dokumenten in Java? Wie werden aenderungen an einem Dokument propagiert? Document: Interface zur Darstellung von aus Elements bestehenden Texten. StyledDocument: Unterklasse davon DocumentListener: Haengt am Document (j) Welche Standard-Dialoge und -Komponenten sind Ihnen bekannt und wof uer kann man sie benutzen? JEDitorPane: Editor fuer strukturierte Dokumente EditorKits: Stellt Actions zum Editieren bereit KeyMaps: Binden Actions an Tasten UndoManager: Ermoeglicht Undo JFileChooser: Fragt Benutzer nach Dateien, kriegt FileFilter JTree: Stellt Baeume dar, Modell in TreeModel JTable: Tabelle, Modell in TableModel TableModelListener: Verfolgt Aendrungen am Modell TableCellRenderer: Zeigt Zelle an TableCellEditor: Editiert Zelle (k) Bei der Darstellung von Graphiken wird ein User Space Koordinatensystem und ein Device Space Koordinatensystem benutzt. Erklaeren Sie den Unterschied. UserSpace: Geraeteunabhaengiges Koordinatensystem mit Ursprung links oben DeviceSpace: Geraeteabhaengiges Koordinatensystem (Drucker, Bildschirm) (l) Was versteht man unter einem rendering context? Rendering Context: PenStyle, FillStyle, CompositionStyle, TransformStyle, clip, font Shape: Interface fuer geometrische Formen Raster: Rechteckiges Feld von Pixeln ColorModel: Abbildung von PIxelwerten auf Farbkomponentwerte 10. Verteilte Anwendungen (a) Erlaeutern Sie den Begriff Client/Server-Modell und nennen Sie einige Beispiele. Client: Fragt an Server: Beantwortet (b) Was versteht man unter einem Remote Procedure Call (RPC)? Wozu dienen die Stub-Prozeduren? RPC: Aufruf einer lokalen Funktion, die den Aufruf an einen ClientStub weiterleitet, der die Daten zu einem ServerStub uebertraegt, der die Funktion tatsaechlich aufruft. (c) Nennen Sie Ihnen bekannte RPC-Semantiken und erklaeren Sie die Unterschiede. Atleatsonce, atmostonce, exactlyonce, maybe. (d) Was versteht man unter N-Tier Architekturen? Geben Sie jeweils ein Beispiel fuer eine 2-Tier, eine 3-Tier und eine 4-Tier Architektur an. Sinn: Skalierbarkeit, Sicherheit Beispiel: Bestellsystem Praesentation, Zugriff, Ablauflogik, Datenspeicher 2-Tier: Client: Praesentation; Server: Rest 3-Tier:Client: Praesentation; Access & Logic; Daten 4-Tier: alles separat 11. Java Beans (a) Was versteht man unter einer Software-Komponente? Wie verwendet man Software-Komponenten effektiv? JavaBean: Softwarekomponente, Klasse, die Properties und setXXX und getXXX hat (b) Erklaeren Sie an einem kleinen Beispiel was Properties von Java Beans sind. Was versteht man unter einer Zugriffsmethode? (c) Erlaeutern Sie die Begriffe Simple Property, Indexed Property, Bound Property und Constrained Property. Simple: Einfach INdexed: Array Bound: benachrichtigen Listener Constrained: Fragen Listener um Erlaubnis BoundBeans: Haben PropertyChangeSupportObj, das Listener verwaltet, dann firePropChange(Name, old, new) (d) Wie werden Constrained Properties implementiert? Erklaeren Sie den Ablauf beim Veraendern von Constrained Properties. ConstrainedBeans: Haben zusaetzlich VetoableChangeListener, der bei fireVetoableChange(name,old, new) PropertyVetoException wirft. Ohne Exception sodann property aendern, firePropChange (e) Welche Aufgabe hat eine BeanInfo Klasse? XXXXBeanInfo: hat Propertydescriptors aus name und accessormethoden, EventSetdescriptor (Klasse, name, action, listenerverwaltungsmethoden) Manifestdatei: Beschreibt aufbau eines JAR Archives in der Form Name: Wert 12. Servlets (a) Erklaeren Sie die Begriffe Uniform Resource Locator (URL), Uniform Resource Name (URN) und Uniform Resource Identifier (URI). URI: URL (ort) oder URN (name) MIME: Kennzeichnung von Daten mit Laenge und Typ (b) Nennen Sie die wichtigsten Methoden des HTTP Protokolls und erlaeutern Sie, wie die Statuscodes aufgebaut sind. HTTP: Get, post, head, put, delete, trace, options ErrorCodes: 1xx INformation, 2xx OK, 3xx Redirection, 4xx Client error, 5xx Servererror HTML: Seitenbeschreibungssprache XHTML: Neue version auf Basis von XML (c) Erlaeutern Sie den Begriff Servlet. Was ist der Unterschied zwischen einem generischen Servlet und einem HTTP Servlet? Servlet: JavaProgramm, was dynamisch HTMLcode erzeugt. GenbericServlet: Mutterklasse aller Servlets, hat service(ServletRequest,ServletResponse) HTTP-Servlet extends GenericServlet: aehnlich, hat aber HTTP-Methoden doGet, doPost etc. ServletLebenszyklus: init, Arbeit, destroy (d) Was versteht man im Zusammenhang mit Servlets unter einer Session? Nennen Sie mindestens zwei Methoden mit denen Sessions bei mehreren HTTP-Methodenaufrufen identifiziert werden koennen. Session: Persistente Name/Wert-Tabelle HttpServeltRequest.getSession(True/false) (e) Wie koennen Zustandsinformationen an eine Session gebunden werden und wielange existieren Sessions im Web-Server? Bis TimeOut. Binden: Mit HttpSessionBindingListener/Event (f) Was sind JavaServer Pages? Welche Vor- und Nachteile haben JavaServer Pages ge-genueber einfachen Java Servlets? OK JSP-Direktiven: decl;, , , , , (g) Durch den Einsatz von Beans laesst sich die Trennung der Anwendungslogik von der Darstellung der Information in HTML weiter verbessern. Welche wichtige Rolle spielen in diesem Zusammenhang die Properties einer Bean? 13. CORBA (a) Skizzieren sie die Object Management Architecture (OMA). Was ist der unterschied zwischen Common Object Services und Common Facilities? OMG: Hersteller, die Objektorierntiertes Programmieren standardisieren wollen OMA: Grundlegende Architektur von Corba aus ORB, COS, AppObjs, CommonFacs ORB: Ermoeglicht anfragen an entfernte Objekte COS: Allgemein nuetzliche CORBA-Funktionen Namingservice: mapping von namen auf Objs EventService ComFacs: Problembezogene Funktionen AppObjs: frei hinzugefuegte Objekte (b) Aus welchen Komponenten besteht ein Object Request Broker (ORB) und welche Funktionen haben sie? * Dynamic invokation interface: Aufrufe zur Laufzeit * IDL stubs: statische Stub-Prozeduren auf Client seite * ORB interface: genrelle Infrastruktur * Static IDL skeleton: Sub-Procs auf Serverseite * Objektadapter: Starten und Loeschen von Objekten * Interface repository: Bekannte Schnittstellensammlung * Implementation repository: Bekannte Implementationssammlung (c) Welche primaere Funktion erfuellt die Interface Definition Language (IDL)? Abstrakte Definition der Faehigkeiten eines Objekts, programmiersprachenunabhaengig Modul: Sammlung aus Exceptions, Declarations und Interfaces. Definiert Namensraum, kann geschachtelt werden Interfaces: Beschreibung eines Objektes mit Attributen und Operationen, Mehrfachvererbung Typen: * Object references * basic types (long long, [w]char|string, enum, octet (byte), any) * constructed types (struct, sequence, union, array) Operationen: Signatur von Methode, kann "oneway" sein, kann exceptions raisen, kann Context haben Attribute: Zustand, der gelesen und geschriben werden kann (d) Was versteht man unter einer discriminated union? Unterscheidungsmerkmal muss benannt werden (e) Welche Bedeutung haben in, out und inout Parameter in IDL-Operationen? IN: rein, OUT: raus, INOUT: Rein und raus (f) Erlaeutern Sie den Begriff Objekt-Referenz. Wozu dienen Objekt-Referenzen? Sie dienen dem Client dazu, ein Objekt zu benutzen. Javamapping: Alles wird zu Klassen, IDL wird zu InterfaceXXXOperations, von dem dann das Interface XXX abgeleitet ist, was zusaetzlich noch Object und IDLEntity extendet. XXXStub und XXXImplBase implementieren XXX. XXXHelper: Hat Funktion .narrow, die eine CORBA-ObjektReferenz bekommt und den JavaTyp XXX zurueckgibt. (g) Welche Aufgabe hat der Naming Service? Wie ist der Namensraum oganisiert? Namingservice liefert Objektreferenz zu Namen. Client: 1. ein orb besorgen 2. den orb nach der initial reference fuer "NameService" fragen 3. diese initial reference auf einen NamingContext runtercasten 4. den NamingContext mit einem einstelligen NameComponent[] nach dem gewuenschten Objekt fragen (resolve) 5. das Objekt narrowen 6. Funktion ausfuehren Server: 1. ein orb besorgen 2. den orb nach der initial reference fuer "NameService" fragen 3. diese initial reference auf einen NamingContext runtercasten 4. ein Objekt erzeugen 5. Objekt mit NameComponent[] beim namingservice anmelden (rebind) Namensraum ist hierarchisch organisiert: NamingContext= NamingContext | NameBinding, namen heissen NameComponents (String+Typ) BindingIterator: Kann vom Server geloescht werden! Stringified name: Pfad als String mit / (h) Skizzieren Sie ein Java Programm zum Durchlaufen eines kompletten Namensraums. (i) Welche Aufgabe haben Holder- und Helper-Klassen, die bei der IDL-uebersetzung nach Java erzeugt werden? Holder: OUTparams Helper: narrowing 14. Enterprise Java Beans (a) Welche Aufgabe erfuellt ein EJB-Objekt und auf welchem Design Pattern basiert es? Es repraesentiert die EJB nach draussen (Facade Design Pattern) Container: beherbergt EJBs und nimmt Aufrufe entgegen. Zusaetzliche Dienste wie Transaktion & Sicherheit, koennen EJBs ein-und auslagern (jede EJB muss serializabe sein), Lebenszyklusmanagement, Zustandsverwaltung, remote access auf die EJBs, Helferwerkzeuge, Session Bean: Ablauflogik, lebt eine Session lang, ist immer einem Client zugordnet (akiv) oder keinem (inaktiv). Zustandsbehaftete EJBs muessen serialisiert werden, um einem andern Client zugeordent zu werden, zustandslose leben in einem Pool. Entity Bean: Daten, oft objektorientierte Sicht auf Datenbank Komponenten einer EJB: Implementation, EJBObj samt remote interface, homeobj samt homeinterface, Verwaltungsinfos, Jardatei. (b) Erlaeutern Sie an einer Skizze, wie ein Client eine EJB-Instanz lokalisiert und mit ihr kommuniziert. 1. JNamingService fragen 2. EJBHomeObj fragen (erzeugt EJBObj) 3. mit EJBObj kommunizieren (c) Erklaeren Sie den Unterschied zwischen Entity und Session Beans. (d) Nennen Sie mindestens fuenf Aufgaben, die durch einen Container unterstuetzt werden..