Algorithmen und Datenstrukturen 06

Ähnliche Dokumente
Algorithmen und Datenstrukturen 07

Software Engineering Klassendiagramme Einführung

Java Einführung Methoden in Klassen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

3 Objektorientierte Konzepte in Java

Einführung in die Programmierung mit Java. Hörsaalübung

Javakurs 2013 Objektorientierung

4. AuD Tafelübung T-C3

Aufgabe 1: Strukturmodellierung mittels Klassendiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm beschäftigt.

Klassendiagramm. (class diagram)

3. Konzepte der objektorientierten Programmierung

Repetitorium Informatik (Java)

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Javakurs für Anfänger

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Objekt-Orientierte Programmierung

Kapitel 6. Vererbung

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Von der UML nach C++

Java Einführung Klassendefinitionen

3 Objektorientierte Konzepte in Java

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

3 Klassen, Attribute, Methoden

5.6 Vererbung. Vererbung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Software Engineering Klassendiagramme weiterführende Konzepte

Programmieren in Java

Theorie zu Übung 8 Implementierung in Java

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Java. Prof. Dr. Stefan Enderle NTA Isny

Prof. W. Henrich Seite 1

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Algorithmen und Datenstrukturen

Vererbung & Schnittstellen in C#

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Software Engineering. 6. Klassendiagramme. Franz-Josef Elmer, Universität Basel, HS 2012

Einstieg in die Informatik mit Java

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Einführung in die Informatik

Modellieren mit der Unified Modeling Language: Klassen- und Objektdiagramme. 11. November 2014

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Informatik II Prüfungsvorbereitungskurs

Abschnitt 15: Unified Modeling Language (UML)

Klassenbeziehungen & Vererbung

Code-Erzeugung aus UML-Klassendiagrammen

5.5.8 Öffentliche und private Eigenschaften

Java Einführung Methoden. Kapitel 6

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Objektorientierte Programmierung

Java Schulung (Java 2 Java Development Kit 5 / 6)

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Javakurs für Anfänger

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz

Zusammenfassung Modul 226

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Programmierkurs Java

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

C# im Vergleich zu Java

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Innere Klassen in Java

Unified Modeling Language (UML)

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Klassen mit Instanzmethoden

Objektorientierte Modellierung (1)

Objektorientierte Programmierung. Kapitel 12: Interfaces

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Tutorium zu Programmieren

Java: Vererbung. Teil 3: super()

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

WhiteStarUML Tutorial

Entwicklungsrichtlinien. 6. Mai 2015

Java - Klassen und Objekte

Probeklausur: Programmierung WS04/05

Datenbankanwendungsprogrammierung Crashkurs Java

Probeklausur: Programmierung WS04/05

Große Übung Praktische Informatik 1

01. Grundprinzipien der Vererbung

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Analyse und Modellierung von Informationssystemen

5. Abstrakte Klassen

Vererbung. Was versteht man unter dem Begriff Vererbung?

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

JAVA - Methoden

Grundbegriffe der Objektorientierung

Java für Computerlinguisten

Transkript:

31. Mai 2012

1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 6 Anmerkungen

Fragen Fragen zu Blatt 5?

Allgemein Warum Klassen? umso mehr (unstrukturierter) Code, desto weniger Überblick Projekte aus überschaubaren Klassen zusammensetzen beim Verwenden einer Klasse interne Umsetzung ausblenden beim Erstellen einer Klasse externen Code ausblenden Spätere Korrekturen ohne detaillierter Kenntnis des gesamten Programms möglich

Allgemein Bestandteile einer Klasse 1 Variablen 2 Methoden 3 Konstruktoren Wie hängt das zusammen?

Allgemein Zugehörigkeit zu Klasse oder Instanz Zuordnung Instanz Klasse ist eindeutig (genau eine Klasse) Zuordnung Klasse Instanz nicht (beliebig viele Instanzen) statische Variablen gehören zur Klasse zur Übersicht [Klasse].statischeVariable verwenden!

Allgemein Zugehörigkeit zu Klasse oder Instanz static: Klassenzugehörig sonst: Instanzzugehörig (Instanzeigenschaften) Instanzmethoden können auf statische Variablen und Methoden zugreifen. (eindeutig) Aber nicht umgekehrt! Beispiele für Variablen: Instanzzähler static Objekteigenschaften instance Konstanten static

Allgemein Initialisierung, das new-schlüsselwort Klassen werden mit ihren statischen Variablen direkt beim Programmstart angelegt. Sie können auch dann aufgerufen werden, wenn keine Instanz existiert (main-methode, Math-Klasse,...) Instanzen müssen während der Ausführung erstellt werden class Beispiel { public static void main(string[] args) { // Neue Instanz der Klasse Beispiel erstellen Beispiel b = new Beispiel(); } } Mit dem new-schlüsselwort wird auch ein Konstruktor aufgerufen.

Allgemein Konstruktoren Ist kein Konstruktor im Code vorhanden, ist automatisch ein public-zugreifbarer, parameterloser Konstruktor verfügbar Sobald irgendein Konstruktor geschrieben wird, ist der automatische nicht mehr verfügbar! (Man kann ihn natürlich wieder von Hand hinzufügen) class Beispiel { // so sieht der default-konstruktor aus: public Beispiel() { } } Konstruktoren können auch private sein! z.b. Math

Sichtbarkeit Sichtbarkeitsmodifikatoren Schützen Klassen vor ungewollten Eingriffen meist interessiert der innere Aufbau gar nicht Klasse Package Unterklassen alle private + - - - default + + - - protected + + + - public + + + + geschützte Variablen können möglicherweise über öffentliche Getter und Setter doch erreicht werden diese ermöglichen kontrollierten Zugriff und Wertebereiche

Konstanten Konstanten Keyword final vor den Variablennamen zum Sicherstellen (oder Klarstellen) der Unveränderlichkeit nur einmal zuweisbar final-instanzvariablen müssen am Ende jedes Konstruktors initialisiert sein (bei der Deklaration oder im Konstruktor) bei final-referenzen ist nur die Referenz konstant, nicht das referenzierte Objekt! Anmerkung: Das Keyword final existiert auch bei Methoden und Klassen

Klassendiagramme Aufbau einer Klassenbox <<stereotyp>> Klassenname Variablen Methoden Stereotypen (mehr dazu nächste Woche): <<interface>> Interface <<abstract>> Abstrakte Klasse Abstrakte Klassen / Methoden können auch durch kursiv-schreiben des Namens verdeutlicht werden.

Klassendiagramme Inhalt von Klassen UML-Darstellung var : final float blubb() bla(blubb : int) : int Repräsentiert Variable Funktion Funktion mit Parameter und Rückgabetyp <<abstract>> Kuh - milch : float + melken() : float + schlachten() : void

Klassendiagramme (Sichtbarkeits-)Modifikatoren in UML-Diagrammen Modifikator UML-Repräsentation private - default (nichts) protected # public + final (beim Typ dazuschreiben) abstract kursiv static unterstrichen instanz (nicht unterstrichen) Bei final-funktionen ohne Rückgabewert final void verwenden

Klassendiagramme Assoziationen 3 Typen: 1 (normale) Assoziation (Linie): normale Beziehung 2 Aggregation (unausgefüllte Raute beim Behälter): Teil-Ganzes-Beziehung (Teil kann auch unabhängig existieren) 3 Komposition (ausgefüllte Raute beim Behälter): strenge Teil-Ganzes-Beziehung (immer genau ein Behälter, nicht null) Beispiele: Assoziation: Beziehung zwischen Konto und Kunde Aggregation: Ein Student ist Teil einer Vorlesung - kann aber auch ohne diese existieren Komposition: Raum ist immer Bestandteil von genau einem Gebäude, Gebäude weg Raum auch weg

Klassendiagramme Assoziationen Konto -konto Vorlesung -vorlesung Gebaeude -gebaeude -kunde Kunde -student Student -raum Raum Variablen von Typen, die im Diagramm als Klasse auftauchen, werden an der entsprechenden Assoziation notiert Die Variable, mit der die Klasse referenziert wird, an die Klasse. Die in der Klasse enthaltenen Variablen stehen am anderen Ende!

Klassendiagramme Gerichtete Assoziationen Mitgliederliste Mitglied Enthält eine Klasse eine Referenzvariable (oder Liste) zum assoziierten Objekt, ist die Assoziation in dieser Richtung navigierbar navigierbar in eine Richtung: unidirektional Pfeilspitze zur referenzierten Klasse navigierbar in beide Richtungen: bidirektional Pfeilspitzen werden weggelassen

Klassendiagramme Multiplizitäten an Assoziationen werden auch die Multiplizitäten angegeben diese geben an, wie viele Objekte einer Beziehung zugeordnet werden (und daher in der anderen Klasse gespeichert werden) Darstellung x..y x Unter-, y Obergrenze; * beliebig

Klassendiagramme Multiplizitäten Konto Vorlesung Gebaeude 0..* -konto 0..* -vorlesung 1 -gebaeude 1 -kunde Kunde 1..* -student Student 1..* -raum Raum navigierbare Beziehungen werden in Java zu Variablen für Kardinalitäten >1 benötigt man Arrays oder Listenklassen

Anwendungsfalldiagramme Komponenten eines Anwendungsfalldiagramms Systemkontext Akteur Anwendungsfall Merke: Menschliche Akteure links, Systemkomponenten rechts

Anwendungsfalldiagramme Beispiel: Flughafen Flugbuchung Buchen Kunde Stornieren Kundenbetreuer Administrieren Buchungssystem

Anmerkungen UML-Tools und -Dokumente Erstellen von UML-Diagrammen Dia (live.gnome.org/dia, im CIP installiert) Google Text & Tabellen (docs.google.com) Papyrus UML (eclipse.org/papyrus) Nützlich, da Boxen noch verschoben werden können! Dokumentation des UML-Standards de.wikipedia.org/wiki/unified Modeling Language uml.org

Anmerkungen Zips werden nicht auf unerlaubte Zeichen geprüft! Sofern nicht anders verlangt, dürfen Instanzvariablen verwendet werden! Trotzdem bitte nur dann, wenn sie auch nötig sind