Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm.

Ähnliche Präsentationen


Präsentation zum Thema: "1 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm."—  Präsentation transkript:

1 1 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Zustandsautomat Paketdiagramm Aktivitätsdiagramm Use-Case-Diagramm Sequenzdiagramm Kommunikationsdiagramm Verteilungsdiagramm UML-Diagramme Unterschiede zwischen UML 1.x und UML 2.0: hoch mittel gering Timingdiagramm Interaktionsübersichtsdiagramm

2 2 DigInf 05/06 Java-Praxiskurs I: Themenüberblick Objektorientierte Analyse und Design Modellierung in UML und Java Java-Programmiertechniken Datentypen, Kontrollstrukturen, Interfaces, Exception Handling,... Ein-/Ausgabe-Operationen Datei-System-Zugriffe, Streams,... Grafische Benutzungsoberflächen Swing, Model-View-Controller-Paradigma,...

3 3 DigInf 05/06 Java-Praxiskurs I: Organisatorisches zweiwöchige Kompaktveranstaltung 20.03.-31.03.2006 (letzte zwei Wochen der Semesterferien) montags-freitags jeweils von 9-12 Uhr Vorlesung und Globalübung Ort: Hörsaal KH 2-07 (städtisches Kaufhaus) freie Übungsbearbeitung in Pools oder auf eigenem Rechner Anmeldung durch Eintragen auf der Mailingliste „javakurs06i“: http://ebus.informatik.uni-leipzig.de/mailman/listinfo/javakurs06i weitere Informationen www.lpz-ebusiness.de  Lehre  Sommersemester 2006 Malte Hülder (huelder@ebus.informatik.uni-leipzig.de) Vincent Wolff-Marting (wolff@ebus.informatik.uni-leipzig.de)

4 4 DigInf 05/06 Use-Case-Diagramm Problem: Das externe Verhalten des Systems soll aus Nutzersicht dargestellt werden. Diese zentrale Frage beantwortet das Diagramm: Was leistet mein System für seine Umwelt (Nachbarsysteme, Stakeholder)? Diese Stärken hat das Diagramm: a.präsentiert die Außensicht auf das System b.geeignet zur Kontextabgrenzung c.hohes Abstraktionsniveau, einfache Notationsmittel Quelle: Jeckle et al.: UML 2 - glasklar

5 5 DigInf 05/06 Notationselemente I Ein Use-Case beschreibt eine Menge von Aktionen, die zu einem fachlichen Ergebnis führen. Ein Use-Case ist eine abgeschlossene Einheit, seine innere Struktur ist zunächst nicht relevant. Das System ist diejenige Einheit, die durch die Use-Cases beschrieben wird. Ein Use-Case wird immer von einem Akteur ausgelöst.

6 6 DigInf 05/06 Notationselemente II Die >-Beziehung zeigt an, dass ein Use-Case erweitert werden kann (durch A). Der erweiterbare Use-Case wird mit einer Linie in der Ellipse und dem Namen unter der Ellipse dargestellt. Generalisierung: B und C erben das Verhalten von A, das auch überschrieben werden kann. Import: A importiert die Use- Cases B und C (während der Ausführung von A werden B und C aufgerufen).

7 7 DigInf 05/06 Anwendungsbeispiel

8 8 DigInf 05/06 Use-Case-Diagramm Änderungen gegenüber früheren UML-Versionen Akteure müssen benannt werden Die >-Beziehung kann Vorbedingungen und extension points besitzen. Besondere Hinweise Use-Cases sollten nicht zur detaillierten Beschreibung von Operationen oder Funktionen verwendet werden. Es sollten keine nicht-funktionalen Anforderungen beschrieben werden. Use-Cases sollten immer die Anwendersicht, nie die Entwicklersicht widerspiegeln.

9 9 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Zustandsautomat Paketdiagramm Aktivitätsdiagramm Use-Case-Diagramm Sequenzdiagramm Kommunikationsdiagramm Verteilungsdiagramm UML-Diagramme Unterschiede zwischen UML 1.x und UML 2.0: hoch mittel gering Timingdiagramm Interaktionsübersichtsdiagramm

10 10 DigInf 05/06 Zustandsautomaten Diese zentrale Frage beantwortet das Diagramm: Welche Zustände kann ein Objekt, eine Schnittstelle, ein Use-Case etc. bei welchen Ereignissen annehmen? Diese Stärken hat das Diagramm: a.präzise Abbildung eines Zustandmodells mit Zuständen, Ereignissen, Nebenläufigkeiten, Bedingungen, Ein- und Austrittsaktionen b.Schachtelung möglich Quelle: Jeckle et al.: UML 2 - glasklar

11 11 DigInf 05/06 Annahmen Das System befindet sich zu einem bestimmten Zeitpunkt genau in einem Zustand. Eine Transition ist der Übergang von einem Ausgangs- zu einem Zielzustand. Der Übergang (Transition) von einem Zustand in den nächsten erfolgt ohne zeitlich Verzögerung. Vorteile Es können parallel Abläufe modelliert werden.

12 12 DigInf 05/06 Anwendung Beschreibung des Verhaltens von Use-Cases Die formale Modellierung von Use-Cases hat folgende Vorteile: Sie sind eindeutig und weniger interpretierbar. Es können Testfälle abgeleitet werden. Beschreibung des Verhaltens von Klassen Dem Attribut einer Klasse wird im Allgemeinen ein Datentyp zugeordnet. Wenn der Datentyp eine endliche Menge von gültigen Werten besitzt, dann ergeben sich die verschiedenen Zustände der Klasse aus allen möglichen Kombinationen dieser Zustandsvariablen. Protokollzustandsautomaten Unter einem Protokoll versteht man hier die erlaubte Abfolge von Aufrufen der Operationen, die von einem Classifier angeboten werden.

13 13 DigInf 05/06 Notationselemente I Ein einfacher Zustand wird durch ein Rechteck mit abgerundeten Ecken dargestellt. Ein Zustandsautomat hat immer genau einen Start- und einen Endzustand. Ein Zustand wird durch ein Rechteck mit abgerundeten Ecken dargestellt. Die Bezeichnung des Zustands steht über der horizontalen Linie. Es sind Aktivitäten mit ihren Auslösern definiert: entry  Eintrittsaktivität exit  Austrittsaktivität do  Andauernde Aktivität

14 14 DigInf 05/06 Notationselemente II Zustandsautomaten sind in einem Rahmen mit Angabe des Namens untergebracht (sm = state machine). Trigger sind Auslöser von Transitionen. Der Guard ist eine Bedingung, die wahr sein muss, damit die Transition ausgelöst wird. Aktivität ist die Aktivität, die beim Durchlaufen der Transition ausgelöst wird. Startzustand Endzustand

15 15 DigInf 05/06 Notationselemente III Pseudozustände werden genutzt, um komplexe Beziehungen zwischen Zuständen einfach darzustellen. Das System kann sich nicht im Pseudozustand aufhalten (kein Zeitverbrauch). Eine Entscheidung ermöglicht es, die Auswahl der nächsten Transition von einem aktuellen Ergebnis abhängig zu machen. Eine Kreuzung ermöglicht es, Zustände hintereinander zu schalten (im Gegensatz zur Entscheidung steht der Weg der Ausführung von Beginn an fest). Eine Gabelung teilt ein eingehende Transition auf mehrere parallel Ziele auf (Guards/Trigger an ausgehenden Verbindungen nicht erlaubt). Eine Vereinigung dient dazu, um aufgeteilte Transitionen wieder zusammenzuführen (Guards/Trigger an eingehenden Verbindungen nicht erlaubt).

16 16 DigInf 05/06 Anwendungsbeispiel

17 17 DigInf 05/06 Zustandsautomaten Änderungen gegenüber früheren UML-Versionen verbesserte Verknüpfung von statischen Elementen und dahinter liegenden Zustandsmodellen Protokollzustandsautomaten wurden zur präzisen Definition von Schnittstellen und Ports eingeführt. Besondere Hinweise Es sollten niemals Zustände existieren, die nur eingehende, aber keine ausgehenden Transitionen besitzen (ansonsten ist das Modell unvollständig).

18 18 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Zustandsautomat Paketdiagramm Aktivitätsdiagramm Use-Case-Diagramm Sequenzdiagramm Kommunikationsdiagramm Verteilungsdiagramm UML-Diagramme Unterschiede zwischen UML 1.x und UML 2.0: hoch mittel gering Timingdiagramm Interaktionsübersichtsdiagramm

19 19 DigInf 05/06 Sequenzdiagramm Diese zentrale Frage beantwortet das Diagramm: Wer tauscht mit wem welche Informationen in welcher Reihenfolge aus? Diese Stärken hat das Diagramm: a.stellt detailliert den Informationsaustausch zwischen Kommunikationspartnern dar b.sehr präzise Darstellung der zeitlichen Abfolge auch mit Nebenläufigkeiten c.Schachtelung und Flusssteuerung (Bedingungen, Schleifen, Verzweigungen) möglich Quelle: Jeckle et al.: UML 2 - glasklar

20 20 DigInf 05/06 Sequenzdiagramm Bedeutung des Diagramms Das Sequenzdiagramm ist das meistverwendeste unter den Interaktionsdiagrammen. Gegenstand des Diagramms Es zeigt den zeitlichen Verlauf der Interaktion zwischen mehreren Kommunikationspartnern (2 Dimensionen). Häufige Anwendungsfälle Die Abfolge der Nachrichten ist wichtig. Die durch Nachrichten verursachten Zustandsübergänge sind kaum relevant. Die Interaktionen sind kompliziert. Die strukturelle Verbindung zwischen den Kommunikationspartner ist nicht relevant. Es stehen Ablaufdetails im Vordergrund.

21 21 DigInf 05/06 Notationselemente I Das Sequenzdiagramm (sd) ist in einem Rahmen gefasst, in der Kopfzeile wird der Name des Diagramms angegeben. Ein Kommunikationspartner wird durch einen Kasten mit dessen Namen und einer angeschlossenen Lebenslinie dargestellt. Auf der Lebenslinie werden Aktionssequenzen eingezeichnet, die eine Tätigkeit des Kommunikationspartners beschreiben. Eine Aktionssequenz wird durch ein Startereignis ausgelöst, schließt mit einem Endereignis ab und kostet Zeit.

22 22 DigInf 05/06 Notationselemente II Eine Lebenslinie verläuft immer bis an das Ende des Sequenzdiagramms. Soll der Kommunikationspartner vorher gelöscht werden, kann das durch ein Kreuz an der Lebenslinie ausgedrückt werden (Destruktion). Eine asynchrone Nachricht wird versendet, ohne auf die Antwort des Empfängers zu warten. Eine synchrone Nachricht (durchgehende Linie) wird versendet, die Abarbeitung stoppt solange, bis eine Antwort vom Empfänger (gestrichelte Linie) eintrifft.

23 23 DigInf 05/06 Notationselemente III Eine Zustandsinvariante ist eine Bedingung für eine Interaktion. Sie wird zur Laufzeit unmittelbar vor einem Ereignis ausgewertet. Gilt sie nicht (Lebenslinie nicht in angegebenem Zustand), ist die Interaktion fehlerhaft implementiert. Diese Bedingung wird durch das entsprechende oder durch geschweifte Klammern angegeben. Innerhalb der Sequenzdiagramms können andere Interaktionen referenziert werden (Interaktionsreferenzen), es handelt sich dabei um einen Interaktionsaufruf.

24 24 DigInf 05/06 Notationselemente IV Kombinierte Fragmente können verwendet werden, um für einen Teil der Interaktion besondere Regeln anzugeben. Interaktionsoperatoren werden durch Interaktionsbedingungen (eckige Klammern) gesteuert. Interaktionsoperatoren sind z.B.: alt  alternative Ablaufmöglichkeiten, par  nebenläufige Interaktionen, opt  optionale Interaktionsteile...und viele mehr.

25 25 DigInf 05/06 Anwendungsbeispiel

26 26 DigInf 05/06 Sequenzdiagramm Änderungen gegenüber früheren UML-Versionen ist strukturier- und zerlegbar Sequenzen können damit beliebig ineinander verschachtelt werden. viele Möglichkeiten zur Steuerung von Kontrollflüssen und Nebenläufigkeiten Alle wesentlichen Konstrukte aus den beliebten Message Sequence Charts (MSC) wurden übernommen. Besondere Hinweise Es sollten häufig Interaktionsreferenzen genutzt werden, um das Diagramm übersichtlich zu gestalten. Es sollten an kritischen Stellen auch die falschen Abläufe mit den entsprechenden kombinierten Fragmenten modelliert werden.

27 27 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Zustandsautomat Paketdiagramm Aktivitätsdiagramm Use-Case-Diagramm Sequenzdiagramm Kommunikationsdiagramm Verteilungsdiagramm UML-Diagramme Unterschiede zwischen UML 1.x und UML 2.0: hoch mittel gering Timingdiagramm Interaktionsübersichtsdiagramm

28 28 DigInf 05/06 Kommunikationsdiagramm Problem: Es soll modelliert werden, wie Interaktionspartner in einem komplexen System miteinander kommunizieren. Diese zentrale Frage beantwortet das Diagramm: Wer kommuniziert mit wem? Wer arbeitet im System zusammen? Diese Stärken hat das Diagramm: a.stellt den Informationsaustausch zwischen Kommunikationspartnern dar b.Überblick steht im Vordergrund (Details und zeitliche Abfolge sind weniger wichtig) Quelle: Jeckle et al.: UML 2 - glasklar

29 29 DigInf 05/06 Notationselemente Das Kommunikationsdiagramm wird mit einem rechteckigen Rahmen gefasst und mit dem Interaktionsnamen versehen (irreführenderweise steht sd für sequence diagramm). Eine Nachricht wird als durchgezogene Linie dargestellt, ein Pfeil kennzeichnet die Richtung der Nachricht. Die zeitliche Reihenfolge der Nachrichten wird durch eine Gliederungshierarchie abgebildet (Sequenzbezeichner). Kommunikationspartner werden als Rechteck dargestellt.

30 30 DigInf 05/06 Anwendungsbeispiel

31 31 DigInf 05/06 Kommunikationsdiagramm Änderungen gegenüber früheren UML-Versionen war früher das Kollaborationsdiagramm sonst keine wesentlichen Änderungen Besondere Hinweise Die Modellierung sollte nie aus Sicht eines bestimmten Kommunikationspartners erfolgen, sondern immer aus der „Vogelperspektive“. Für nebenläufige und iterative Nachrichten sollte lieber das Sequenzdiagramm verwendet werden.

32 32 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Zustandsautomat Paketdiagramm Aktivitätsdiagramm Use-Case-Diagramm Sequenzdiagramm Kommunikationsdiagramm Timingdiagramm Interaktionsübersichtsdiagramm Verteilungsdiagramm UML-Diagramme Unterschiede zwischen UML 1.x und UML 2.0: hoch mittel gering

33 33 DigInf 05/06 Timingdiagramm Problem: Das exakte zeitliche Verhalten eines Systems soll beschrieben werden. Diese zentrale Frage beantwortet das Diagramm: Wann befinden sich verschiedene Interaktionspartner in welchem Zustand? Diese Stärken hat das Diagramm: a.visualisiert das exakte zeitliche Verhalten von Klassen, Schnittstellen etc. b.geeignet für Detailbetrachtungen, bei denen es wichtig ist, zu welchem Zeitpunkt ein Ereignis eintritt Quelle: Jeckle et al.: UML 2 - glasklar

34 34 DigInf 05/06 Notationselemente I Das gesamte Timing-Diagramm wird von einem Rahmen umschlossen. Der Name des Diagramms und eine Zeitskala können angegeben werden. Eine Lebenslinie steht für einen Teilnehmer der Interaktion. Die Zeitachse beginnt links und endet rechts. Jede Lebenslinie trägt den Namen des Interaktionspartners (es kann auch nur die Klasse oder beides angegeben werden).

35 35 DigInf 05/06 Notationselemente II Die Zeitverlaufslinie zeigt die Zustandsänderungen einer Lebenslinie an. Die Zustände werden links untereinander notiert. Die Zeitverlauslinie gibt die zeitliche Reihenfolge der Zustände an. Ein waagerechter Verlauf zeigt einen ruhenden Zustand an. Ein senkrechter Verlauf zeigt einen Zustandswechsel an. Semantik und Syntax der Nachrichten wie im Sequenzdiagramm Sprungmarken können an Nachrichtenlinien benutzt werden, um die Lesbarkeit zu verbessern.

36 36 DigInf 05/06 Anwendungsbeispiel

37 37 DigInf 05/06 Timing-Diagramm Änderungen gegenüber früheren UML-Versionen Das Timing-Diagramm wurde in UML 2.0 neu eingeführt. Besondere Hinweise Dieses Diagramm ist besonders für sicherheitskritische und technische Systeme geeignet (z.B. ABS-System, Auto- Waschstraße). Vor der Anwendung des Timing-Diagramms sollten Use-Case-, Klassen-, Aktivitäts- oder Zustandsdiagramme angefertigt werden, damit die notwendigen Klassen, Objekte oder Aktionen bekannt sind.

38 38 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Zustandsautomat Paketdiagramm Aktivitätsdiagramm Use-Case-Diagramm Sequenzdiagramm Kommunikationsdiagramm Verteilungsdiagramm UML-Diagramme Unterschiede zwischen UML 1.x und UML 2.0: hoch mittel gering Timingdiagramm Interaktionsübersichtsdiagramm

39 39 DigInf 05/06 Interaktionsübersichtsdiagramm Problem: Interaktionsdiagramme liegen oft in großer Zahl vor und werden schnell unübersichtlich. Diese zentrale Frage beantwortet das Diagramm: Wann läuft welche Interaktion ab? Wie behalte ich die Übersicht über meine Interaktionen? Diese Stärken hat das Diagramm: a.verbindet Interaktionsdiagramme auf Top-Level-Ebene b.hohes Abstraktionsniveau Quelle: Jeckle et al.: UML 2 - glasklar

40 40 DigInf 05/06 Interaktionsübersichtsdiagramm Idee Die leicht lesbare Notation der Aktivitätsdiagramme wird mit der von kommunikationsorientierten Interaktionen kombiniert. Alternativen Das Diagramm kann auch komplett als Sequenzdiagramm dargestellt werden. Das Diagramm kann auch komplett als Aktivitätsdiagramm dargestellt werden.

41 41 DigInf 05/06 Notationselemente Das Interaktionsübersichtsdiagramm wird in einem Rahmen dargestellt. Auch hier wird irreführenderweise die Bezeichnung sd verwendet. Interaktionen können geschachtelt werden. Innerhalb der Interaktionsübersichtsdiagramms können andere Interaktionen referenziert werden (Interaktionsreferenzen), es handelt sich dabei um einen Interaktionsaufruf. Kontrollelemente (Verzweigung, Synchronisation etc.) werden wie bei Aktivitätsdiagrammen verwendet.

42 42 DigInf 05/06 Anwendungsbeispiel

43 43 DigInf 05/06 Zusammenfassung Änderungen gegenüber früheren UML-Versionen Das Interaktionsübersichtsdiagramm wurde in UML 2.0 neu eingeführt. Besondere Hinweise Dieses Diagramm dient zur Wahrung von Klarheit und Kontrolle. Es sollte daher immer mit möglichst wenig Elementen und viel mit Schachtelung gearbeitet werden. Zur Erhöhung der Lesbarkeit sollten besser Referenzierungen anstatt Inline-Interaktionen verwendet werden.

44 44 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm Objektdiagramm Zustandsautomat Paketdiagramm Aktivitätsdiagramm Use-Case-Diagramm Sequenzdiagramm Kommunikationsdiagramm Timingdiagramm Interaktionsübersichtsdiagramm Verteilungsdiagramm UML-Diagramme Unterschiede zwischen UML 1.x und UML 2.0: hoch mittel gering

45 45 DigInf 05/06 Methodik Vom Klassenmodell und den wichtigsten Anwendungsfällen zu Ergänzungen

46 46 DigInf 05/06 Datenstrukturen und Algorithmen Komplexität und Effizienz

47 47 DigInf 05/06 Datenstrukturen und Algorithmen Bestandteile von Programmen: Benutzerschnittstelle (Presentation Layer) Verarbeitungs- / Bearbeitungsteile / Business Logik (Application oder Business Layer) Persistenzteil (Persistence Layer) 2 wichtige Faktoren: Qualität der Ergebnisse Laufzeit

48 48 DigInf 05/06 Überlegungen zur Laufzeit Typisches Problem: Datenmigration / Anwendung auf relevante Menge von Daten und/oder echte Daten. Häufig ist die Laufzeit auf echten Daten zunächst völlig inakzeptabel. Von mitentscheidender Bedeutung sind dabei die passenden Zugriffe auf gespeicherte Daten und das Einfügen in Datenmengen. Damit wird deutlich: Algorithmen müssen zur gewählten Datenstruktur passen! Für viele Standardprobleme sind geeignete Algorithmen und passende Datenstrukturen bekannt.

49 49 DigInf 05/06 Wichtige Klasse von Algorithmen: Suchen und Sortieren Beispiel: Suchen im Telefonbuch Zur raschen Suche nutzen wir aus, dass die Einträge alphabetisch sortiert sind nach „Name, Vorname, Adresse“. Intuitiv sucht man binär. Bei 1000 Einträgen Umfang, brauchen wir höchstens 10 Schritte, bei 2000 Einträgen auch nur 11. Nehmen wir mal an, dass wir feststellen wollen, ob in einem Telefonbuch eine Telefonnummer vorkommt. Dann muss linear gesucht werden. Im Schnitt benötigen wir bei 1000 Einträgen 500 Schritte. Im schlimmsten Fall sogar 1000. Wenn man öfter Telefonnummern sucht, macht es wohl Sinn, nach Telefonnummern zu sortieren.

50 50 DigInf 05/06 Allgemeine Formulierung des Suchproblems Suchproblem: In einem Behälter A befinden sich viele Elemente. Prüfe, ob ein Element e in A existiert, das eine bestimmte Eigenschaft P(e) erfüllt. Behälter steht dabei ganz allgemein für unterschiedliche Datenstrukturen wie: Array Datei Menge Liste Baum Graph Stack Queue

51 51 DigInf 05/06 Allgemeine Suche in Behältern Entferne der Reihe nach Elemente aus dem Behälter, bis dieser leer ist oder ein Element mit der gesuchten Eigenschaft gefunden wurde. Programmähnlich: Prüfen, ob Behälter leer ist: istLeer Ergreifen und Entfernen eines Elements aus dem Behälter: nimmEines


Herunterladen ppt "1 DigInf 05/06 Diagrammtypen der UML 2.0 StrukturdiagrammeVerhaltensdiagramme Interaktionsdiagramme Klassendiagramm Komponentendiagramm Kompositionsstrukturdiagramm."

Ähnliche Präsentationen


Google-Anzeigen