Grundlagen der Informatik

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Informatik"

Transkript

1 Grundlagen der Informatik Prof. Dr. Stefan Böcker Labor für mobile Technologien Fachhochschule Südwestfalen Campus Hagen Sommersemester / 195

2 Inhaltsverzeichnis Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 2 / 195

3 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 3 / 195

4 Dozenten Prof. Dr. Stefan Böcker Raum: H.114 Telefon: Hendrik Schmidt Raum: H.112 Telefon: Robert Schweda Raum: H.112 Telefon: / 195

5 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 5 / 195

6 Vorlesung und Übungen Vorlesung (AudiMax) Zeit: Mittwoch 09:45h - 11:15h Übungen (Raum H.115) Gruppe A: Dienstag 15:45h - 17:15h Gruppe B: Dienstag 12:15h - 13:45h Gruppe C: Mittwoch 12:15h - 13:45h Gruppe D: Dienstag 14:00h - 15:30h Gruppe E: Montag 14:00h - 15:30h Gruppe F: Montag 09:45h - 11:15h Gruppe H und ISBAEN: Montag 15:45h - 17:15h 6 / 195

7 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 7 / 195

8 Prüfungsleistungen Prüfungsleistung durch zwei semesterbegleitende Teilprüfungen (SBT) mit je 50 erreichbaren Punkten. Ihre Punkte aus dem 1. Semester und die von Ihnen erreichten Punkte am Ende dieses 2. Semesters bestimmen Ihre Modul-Note. Termine für die SBTs: Mai 2012 in der Vorlesung Juni 2013 in der Vorlesung 8 / 195

9 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 9 / 195

10 Skripte Folien zur Vorlesung 10 / 195

11 Online-Dokumente Sun Dokumentation Handbuch der Java-Programmierung Java ist auch eine Insel 11 / 195

12 Literatur Java Jochen Seemann, Jürgen Wolff von Gudenberg Software-Entwurf mit UML 2 Guido Krüger Handbuch der Java-Programmierung Christian Ullenboom Java ist auch eine Insel Dietmar Ratz, Jens Scheffler, Detlef Seese, Jan Wiesenberger Grundkurs Programmieren in Java Dietmar Abts Java Grundkurs Masterkurs Client/Server-Programmierung mit Java 12 / 195

13 Literatur UML / Softwareentwicklung Dirk Hardy UML für IT-Berufe Heide Balzert UML 2 in 5 Tagen Patrick Grässle, Henriette Baumann, Philippe Baumann UML 2 projektorientiert Peter Forbig Objektorientierte Sofwareentwicklung mit UML Karl-Heinz Rau Objektorientierte Systementwicklung 13 / 195

14 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 14 / 195

15 Entwicklungsumgebung I JDK von Sun Eclipse BlueJ 15 / 195

16 Entwicklungsumgebung II Java Compiler (javac) javac HalloWelt. java Java Interpreter (java) java HalloWelt 16 / 195

17 Werkzeuge für UML Violet UML-Editor astah* community astah-community.html ArgoUML 17 / 195

18 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 18 / 195

19 Der Software-Entwicklungszyklus 19 / 195

20 Anforderungsanalyse / Problemanalyse Was will der Auftraggeber konkret? 20 / 195

21 Anforderungsanalyse / Problemanalyse Was will der Auftraggeber konkret? Wer sind die Benutzer (Rollen, Zugriffsrechte, Sicherheitsmaßnahmen)? 20 / 195

22 Anforderungsanalyse / Problemanalyse Was will der Auftraggeber konkret? Wer sind die Benutzer (Rollen, Zugriffsrechte, Sicherheitsmaßnahmen)? Welche Daten sollen verwaltet werden? 20 / 195

23 Anforderungsanalyse / Problemanalyse Was will der Auftraggeber konkret? Wer sind die Benutzer (Rollen, Zugriffsrechte, Sicherheitsmaßnahmen)? Welche Daten sollen verwaltet werden? Welche Dienste sollen bezüglich der Daten ausgeführt werden? 20 / 195

24 Anforderungsanalyse / Problemanalyse Was will der Auftraggeber konkret? Wer sind die Benutzer (Rollen, Zugriffsrechte, Sicherheitsmaßnahmen)? Welche Daten sollen verwaltet werden? Welche Dienste sollen bezüglich der Daten ausgeführt werden? Welche Schnittstellen zu anderen Systemen sollen genutzt werden? 20 / 195

25 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) 21 / 195

26 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme 21 / 195

27 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) 21 / 195

28 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme 21 / 195

29 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme Plattform: Hardware, Betriebssystem, Datenbanksystem, Netzwerk 21 / 195

30 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme Plattform: Hardware, Betriebssystem, Datenbanksystem, Netzwerk Komponentenentwurf 21 / 195

31 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme Plattform: Hardware, Betriebssystem, Datenbanksystem, Netzwerk Komponentenentwurf Festlegung der Komponenten der Teilsysteme 21 / 195

32 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme Plattform: Hardware, Betriebssystem, Datenbanksystem, Netzwerk Komponentenentwurf Festlegung der Komponenten der Teilsysteme Analyse der Datenstrukturen 21 / 195

33 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme Plattform: Hardware, Betriebssystem, Datenbanksystem, Netzwerk Komponentenentwurf Festlegung der Komponenten der Teilsysteme Analyse der Datenstrukturen Ermittlung der Objekte / Klassen (Attribute / Methoden) 21 / 195

34 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme Plattform: Hardware, Betriebssystem, Datenbanksystem, Netzwerk Komponentenentwurf Festlegung der Komponenten der Teilsysteme Analyse der Datenstrukturen Ermittlung der Objekte / Klassen (Attribute / Methoden) Prozesse bzw. Algorithmen 21 / 195

35 Designphase / Entwurfsphase Systementwurf (Systemarchitektur) Zerlegung des Gesamtsystems in Teilsysteme Definition von Schnittstellen zwischen den Teilsystemen (und evtl. externen Systemen) Verteilung der Teilsysteme Plattform: Hardware, Betriebssystem, Datenbanksystem, Netzwerk Komponentenentwurf Festlegung der Komponenten der Teilsysteme Analyse der Datenstrukturen Ermittlung der Objekte / Klassen (Attribute / Methoden) Prozesse bzw. Algorithmen Verwendung von Klassenbibliotheken 21 / 195

36 Programmierphase / Codierungsphase Umsetzung des Entwurfs in Software Codierung der identifizierten Komponenten / Klassen 22 / 195

37 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 23 / 195

38 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort 24 / 195

39 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN 24 / 195

40 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer 24 / 195

41 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer ausgeliehen werden (wenn es nicht schon ausgeliehen ist!) 24 / 195

42 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer ausgeliehen werden (wenn es nicht schon ausgeliehen ist!) zurückgegeben werden (wenn er es ausgeliehen hatte!) 24 / 195

43 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer ausgeliehen werden (wenn es nicht schon ausgeliehen ist!) zurückgegeben werden (wenn er es ausgeliehen hatte!) reserviert werden (aber auch von mehreren Nutzern!) 24 / 195

44 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer ausgeliehen werden (wenn es nicht schon ausgeliehen ist!) zurückgegeben werden (wenn er es ausgeliehen hatte!) reserviert werden (aber auch von mehreren Nutzern!) Bibliotheksmitarbeiter können 24 / 195

45 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer ausgeliehen werden (wenn es nicht schon ausgeliehen ist!) zurückgegeben werden (wenn er es ausgeliehen hatte!) reserviert werden (aber auch von mehreren Nutzern!) Bibliotheksmitarbeiter können neue Nutzer für die Bibliothek einrichten (die entweder Student mit Matrikelnummer oder Angestellter mit Titel und Telefonnummer sind) 24 / 195

46 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer ausgeliehen werden (wenn es nicht schon ausgeliehen ist!) zurückgegeben werden (wenn er es ausgeliehen hatte!) reserviert werden (aber auch von mehreren Nutzern!) Bibliotheksmitarbeiter können neue Nutzer für die Bibliothek einrichten (die entweder Student mit Matrikelnummer oder Angestellter mit Titel und Telefonnummer sind) Bücher angelegen und bestellen 24 / 195

47 Anforderungen an eine Bibliotheksverwaltung Verwaltung von Bibliotheksnutzern mit Name, Vorname, Straße, PLZ, Ort Verwaltung von Büchern mit Titel, Autor, ISBN Ein Buch kann von einem Nutzer ausgeliehen werden (wenn es nicht schon ausgeliehen ist!) zurückgegeben werden (wenn er es ausgeliehen hatte!) reserviert werden (aber auch von mehreren Nutzern!) Bibliotheksmitarbeiter können neue Nutzer für die Bibliothek einrichten (die entweder Student mit Matrikelnummer oder Angestellter mit Titel und Telefonnummer sind) Bücher angelegen und bestellen Benutzer- und Buchlisten anzeigen 24 / 195

48 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 25 / 195

49 Objektorientierte Entwicklungsphasen Objektorientierte Analyse (OOA) 26 / 195

50 Objektorientierte Entwicklungsphasen Objektorientierte Analyse (OOA) Objektorientiertes Design (OOD) 26 / 195

51 Objektorientierte Entwicklungsphasen Objektorientierte Analyse (OOA) Objektorientiertes Design (OOD) Objektorientierte Programmierung (OOP) 26 / 195

52 Objektorientierte Entwicklungsphasen Objektorientierte Analyse (OOA) Objektorientiertes Design (OOD) Objektorientierte Programmierung (OOP) 26 / 195

53 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 27 / 195

54 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: 28 / 195

55 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: Strukturdiagramme beschreiben das statische Modell 28 / 195

56 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: Strukturdiagramme beschreiben das statische Modell Wer agiert? 28 / 195

57 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: Strukturdiagramme beschreiben das statische Modell Wer agiert? Was passiert bzw. was soll getan werden? 28 / 195

58 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: Strukturdiagramme beschreiben das statische Modell Wer agiert? Was passiert bzw. was soll getan werden? Mit wem wird kooperiert und von wem werden Dienste in Anspruch genommen? 28 / 195

59 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: Strukturdiagramme beschreiben das statische Modell Wer agiert? Was passiert bzw. was soll getan werden? Mit wem wird kooperiert und von wem werden Dienste in Anspruch genommen? Verhaltensdiagramme beschreiben das dynamische Modell 28 / 195

60 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: Strukturdiagramme beschreiben das statische Modell Wer agiert? Was passiert bzw. was soll getan werden? Mit wem wird kooperiert und von wem werden Dienste in Anspruch genommen? Verhaltensdiagramme beschreiben das dynamische Modell wie die im statischen Modell (Strukturdiagramm) festgelegten Verantwortlichkeiten ausgeführt werden 28 / 195

61 Unified Modelling Language Unified Modelling Language (UML) grafische Notation für die Erstellung objektorientierter Modelle die unabhängig von einer Programmiersprache dargestellt werden. Die Diagramme der UML lassen sich in zwei Gruppen einteilen: Strukturdiagramme beschreiben das statische Modell Wer agiert? Was passiert bzw. was soll getan werden? Mit wem wird kooperiert und von wem werden Dienste in Anspruch genommen? Verhaltensdiagramme beschreiben das dynamische Modell wie die im statischen Modell (Strukturdiagramm) festgelegten Verantwortlichkeiten ausgeführt werden wann diese Aktionen ausgeführt werden sollen. 28 / 195

62 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 29 / 195

63 Strukturdiagramme Die UML umfasst folgende Strukturdiagramme zur Beschreibung des statischen Modells Anwendungsfalldiagramme (Use Case Diagram) 30 / 195

64 Strukturdiagramme Die UML umfasst folgende Strukturdiagramme zur Beschreibung des statischen Modells Anwendungsfalldiagramme (Use Case Diagram) Klassendiagramme (Class Diagram) 30 / 195

65 Strukturdiagramme Die UML umfasst folgende Strukturdiagramme zur Beschreibung des statischen Modells Anwendungsfalldiagramme (Use Case Diagram) Klassendiagramme (Class Diagram) Kompositions-Strukturdiagramme Komponentendiagramme Verteilungsdiagramme Objektdiagramme Paketdiagramme 30 / 195

66 Verhaltensdiagramme Zur UML gehören folgende Verhaltensdiagramme zur Beschreibung des dynamischen Modells Sequenzdiagramme (Sequence Diagram) 31 / 195

67 Verhaltensdiagramme Zur UML gehören folgende Verhaltensdiagramme zur Beschreibung des dynamischen Modells Sequenzdiagramme (Sequence Diagram) Aktivitätsdiagramme (Activity Diagram) 31 / 195

68 Verhaltensdiagramme Zur UML gehören folgende Verhaltensdiagramme zur Beschreibung des dynamischen Modells Sequenzdiagramme (Sequence Diagram) Aktivitätsdiagramme (Activity Diagram) Interaktionsübersichtdiagramme Kommunikationsdiagramme Zeitverlaufsdiagramme Zustandsdiagramme 31 / 195

69 Anwendungsfalldiagramm Bibliotheksverwaltung 32 / 195

70 Klassendiagramm Bibliotheksverwaltung (Auszug) 33 / 195

71 Sequenzdiagramm Reise-Buchungssystem Abbildung : Peter Forbrig, Objektorientierte Softwarentwicklung mit UML 34 / 195

72 Aktivitätsdiagramm Kaffee trinken Abbildung : Peter Forbrig, Objektorientierte Softwarentwicklung mit UML 35 / 195

73 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 36 / 195

74 Anwendungsfalldiagramm - Übersicht 37 / 195

75 Anwendungsfalldiagramm - Details Anwendungsfalldiagramme enthalten: Akteure Anwendungsfälle Beziehungen 38 / 195

76 Anwendungsfalldiagramm - Details Anwendungsfalldiagramme enthalten: Akteure sind eine außerhalb des Systems liegende Rolle, d.h. ein Anwender oder ein anderes System Anwendungsfälle Beziehungen 38 / 195

77 Anwendungsfalldiagramm - Details Anwendungsfalldiagramme enthalten: Akteure sind eine außerhalb des Systems liegende Rolle, d.h. ein Anwender oder ein anderes System Anwendungsfälle beschreiben eine Aktivität eines Systems aus der Sicht seiner Akteure Beziehungen 38 / 195

78 Anwendungsfalldiagramm - Details Anwendungsfalldiagramme enthalten: Akteure sind eine außerhalb des Systems liegende Rolle, d.h. ein Anwender oder ein anderes System Anwendungsfälle beschreiben eine Aktivität eines Systems aus der Sicht seiner Akteure führen zu wahrnehmbaren Ergebnissen Beziehungen 38 / 195

79 Anwendungsfalldiagramm - Details Anwendungsfalldiagramme enthalten: Akteure sind eine außerhalb des Systems liegende Rolle, d.h. ein Anwender oder ein anderes System Anwendungsfälle beschreiben eine Aktivität eines Systems aus der Sicht seiner Akteure führen zu wahrnehmbaren Ergebnissen werden immer durch eine Akteur ausgelöst Beziehungen 38 / 195

80 Anwendungsfalldiagramm - Details Anwendungsfalldiagramme enthalten: Akteure sind eine außerhalb des Systems liegende Rolle, d.h. ein Anwender oder ein anderes System Anwendungsfälle beschreiben eine Aktivität eines Systems aus der Sicht seiner Akteure führen zu wahrnehmbaren Ergebnissen werden immer durch eine Akteur ausgelöst Beziehungen verknüpfen die Akteure mit den Anwendungsfällen, die sie anstossen 38 / 195

81 Anwendungsfalldiagramm - Regeln Für die Bestandteile eines (guten) Anwendungsfalldiagrammes gelten u.a. folgende Regeln: Akteure Anwendungsfälle Beziehungen 39 / 195

82 Anwendungsfalldiagramm - Regeln Für die Bestandteile eines (guten) Anwendungsfalldiagrammes gelten u.a. folgende Regeln: Akteure Namen sind ein Substantiv im Singular Anwendungsfälle Beziehungen 39 / 195

83 Anwendungsfalldiagramm - Regeln Für die Bestandteile eines (guten) Anwendungsfalldiagrammes gelten u.a. folgende Regeln: Akteure Namen sind ein Substantiv im Singular intuitiv verständlich und der Terminologie des Anwendungsbereiches entnommen Anwendungsfälle Beziehungen 39 / 195

84 Anwendungsfalldiagramm - Regeln Für die Bestandteile eines (guten) Anwendungsfalldiagrammes gelten u.a. folgende Regeln: Akteure Namen sind ein Substantiv im Singular intuitiv verständlich und der Terminologie des Anwendungsbereiches entnommen Anwendungsfälle enthalten ein Verb Beziehungen 39 / 195

85 Anwendungsfalldiagramm - Regeln Für die Bestandteile eines (guten) Anwendungsfalldiagrammes gelten u.a. folgende Regeln: Akteure Namen sind ein Substantiv im Singular intuitiv verständlich und der Terminologie des Anwendungsbereiches entnommen Anwendungsfälle enthalten ein Verb beschreiben Funktionalität mit wenigen Worten Beziehungen 39 / 195

86 Anwendungsfalldiagramm - Regeln Für die Bestandteile eines (guten) Anwendungsfalldiagrammes gelten u.a. folgende Regeln: Akteure Namen sind ein Substantiv im Singular intuitiv verständlich und der Terminologie des Anwendungsbereiches entnommen Anwendungsfälle enthalten ein Verb beschreiben Funktionalität mit wenigen Worten Beziehungen verknüpfen die Akteure mit genau den Anwendungsfällen, die sie anstossen 39 / 195

87 Übersicht Organisatorisches Dozenten Vorlesung und Übungen Klausur / Prüfungsleistung Skripte und Literatur Entwicklungsumgebungen und Werkzeuge Softwareentwicklung Entwicklungszyklen Anwendungsbeispiel Bibliothek Objektorientierte Softwareentwicklung Softwareentwicklung mit UML UML-Diagramme UML Diagramme detailliert Anwendungsfalldiagramm Klassendiagramm 40 / 195

88 Klassendiagramm - Übersicht 41 / 195

89 Klassendiagramm - Details Klassendiagramme stellen Klassen mit Attributen und Operationen (Methoden) sowie dar. 42 / 195

90 Klassendiagramm - Details Klassendiagramme stellen Klassen mit Attributen und Operationen (Methoden) sowie Generalisierungen und dar. 42 / 195

91 Klassendiagramm - Details Klassendiagramme stellen Klassen mit Attributen und Operationen (Methoden) sowie Generalisierungen und Assoziationen zwischen Klassen dar. 42 / 195

92 Klassendiagramm - Beispiel Generalisierung/Spezialisierung 43 / 195

93 Klassendiagramm - Umsetzung in Java - Geometrische Figur public class GeometrischeFigur { private int posx ; private int posy ; private boolean sichtbar ; } public void setposition ( int x, int y ) { this. posx = x ; this. posy = y ; } 44 / 195

94 Klassendiagramm - Umsetzung in Java - Rechteck public class Rechteck extends GeometrischeFigur { private int seitea ; // Seite a private int seiteb ; // Seite b } public void setseitea ( int a ) { if ( a > 0) { this. seitea = a ; } } 45 / 195

95 Klassen - Beispiel Point-Klasse aus dem AWT 46 / 195

96 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 47 / 195

97 Vier Grundpfeiler der Objektorientierten Programmierung Abbildung : Ratz, Scheffler e.a., Grundkurs Programmieren in Java 48 / 195

98 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 49 / 195

99 Generalisierung Generalisierung Klassen mit gemeinsamen Eigenschaften werden zu einer allgemeineren Klasse zusammengefasst. Der Pfeil im Klassendiagramm bezeichnet das Zusammenfassen führt von der Sub-Klasse zur Super-Klasse kann als ist ein -Beziehung gelesen werden Den entgegengesetzen Prozess bezeichnet man als Spezialisierung oder auch als Erweiterung. 50 / 195

100 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 51 / 195

101 Vererbung Vererbung Sub-Klassen erben die Attribute und Methoden, die in der Super-Klassen definiert wurden erweitern damit die Super-Klassen In Java wird Vererbung durch das Schlüsselwort extends angezeigt. Der Pfeil im Klassendiagramm zeigt dabei von der erbenden (Sub- / Kind-) Klasse zur vererbenden (Super- / Eltern-) Klasse kann als ist ein -Beziehung gelesen werden und daher als hat Alles, was auch ein(e)... hat Die Subklasse ist, hat und kann damit Alles, was auch die Superklasse ist, hat und kann. 52 / 195

102 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 53 / 195

103 Kapselung Kapselung / Data Hiding Attribute / Eigenschaften eines Objektes sollten nur von geeigneten Methoden verändert werden können. Daher verbirgt man diese Attribute und schützt sie damit vor fehlerhaftem Zugriff. In Java wird Kapselung durch den Modifizierer private vor einem Attribut / einer Methode angezeigt. public abstract class GeometrischeFigur { private double posx ; private double posy ; public void setposition ( double x, double y ) { } } 54 / 195

104 Kapselung Mit der UML lassen sich die Zugriffsmöglichkeiten durch ein vorangestelltes Zeichen darstellen: + für public - für private # für protected ~ für paketweite Sichtbarkeit (in Java fehlt dann der Modifizierer) 55 / 195

105 Kapselung - Zugriffsrechte Die Reichweite der einzelnen Zugriffrechte lässt sich darstellen als public zugreifbar aus allen Klassen protected zugreifbar in allen Sub-Klassen package (kein Modifizierer) zugreifbar in Klassen des Paketes private zugreifbar nur innerhalb der Klasse 56 / 195

106 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 57 / 195

107 Polymorphismus Polymorphismus bedeutet Vielgestalt befasst sich mit dem Überschreiben von Methoden Überschreiben von Methoden bedeutet dieselbe Botschaft kann gesendet werden an Objekte verschiedener Klassen einer Vererbungshierachie und die Empfängerobjekte jeder Klasse reagieren auf ihre jeweils eigene evtl. ganz unterschiedlich Art. Der Sender der Botschaft muss nicht wissen, zu welcher Klasse das Empfängerobjekt gehört. 58 / 195

108 Polymorphismus 59 / 195

109 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 60 / 195

110 Zugriffsrechte in Java Zugriff auf Instanz-Variablen (Attribute) von außerhalb einer Klasse sollen verboten werden. Dazu dient in Java das Schlüsselwort private in UML ein vorangestelltes - 61 / 195

111 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 62 / 195

112 Instanzmethoden Zugriff auf private Instanz-Variablen (Attribute) ist nun nur noch über Instanzmethoden möglich (also nur über Methoden aus Objekten der eigenen Klasse). Beispiel: Java public int getxposition ( ) { return xposition ; } + getxposition ( ) : int UML 63 / 195

113 Instanzmethoden Da der Zugriff auf private-attribute (nur noch) über Instanzmethoden möglich ist, können auch klassen- fremde Methoden mit Hilfe der Objekt-Referenz und der entsprechenden Instanzmethode indirekt und sicher auf das Attribut zugreifen. Beispiel: Java Circle kreis1 = new Circle ( ) ;... kreis1. getxposition ( ) ; / 195

114 Instanzmethoden Da der Zugriff auf private-attribute (nur noch) über Instanzmethoden möglich ist, können auch klassen- fremde Methoden mit Hilfe der Objekt-Referenz und der entsprechenden Instanzmethode indirekt und sicher auf das Attribut zugreifen. /AnwendungsGUI /kreis1:kreis new Kreis() getxposition 65 / 195

115 Instanzmethoden - Validierung und Erweiterung von Funktionalität Es gibt also Instanzmethoden zum Zugriff auf private Attribute (get- und set-methoden) zur Validierung von Eingaben zur Erweiterung der Funktionalität von Objekten 66 / 195

116 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 67 / 195

117 this-referenz Methoden, die lokale Variablen mit demselben Namen wie ein Objektattribut besitzen, können über die this-referenz auf das entsprechende Objektattribut zugreifen. Beispiel: Java public void setxposition ( int xposition ) { this. xposition = xposition ; } UML + setxposition ( xposition ) : void 68 / 195

118 this-referenz Jedes Objekt hat damit im Prinzip eine Instantvariable this, die eine Referenz auf das Objekt selbst enthält: 69 / 195

119 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 70 / 195

120 Klassenattribute und -methoden Attribute und Methoden, die einzelnen Instanzen einer Klasse (also den Objekten dieser Klasse) nicht sinnvoll zugeordnet werden können, und damit Eigenschaften beschreiben, die zur Gesamtheit aller Objekte dieser Klasse gehören, werden als statische Komponenten statische Methoden bzw. statische Attribute Klassenattribute bzw. -methoden bezeichnet. 71 / 195

121 Klassenattribute und -methoden Beispiel: Java private static int anzahl = 0 ;... public static void erhoeheanzahl (... ) { anzahl = anzahl + zusaetzlicheanzahl ; } + erhoeheanzahl(zusaetzlicheanzahl: int) : void 72 / 195

122 Klassenattribute und -methoden 73 / 195

123 Objekterzeugung / statische Variablen Beispiel: Java public static Student erzeugestudent ( ) { anzahl = anzahl + 1 ; return new Student ( ) ; }... Student stefan = Student. erzeugestudent ( ) ; System. out. println ( Student. getanzahl ( ) ) ; / 195

124 Übersicht Grundkonzepte der Objektorientierten Programmierung Die vier Grundpfeiler Generalisierung Vererbung Kapselung / Data Hiding Polymorphismus Kapselung Zugriffsrechte Instanzmethoden this-referenz Klassenattribute und -methoden Instantiierung und Initialisierung 75 / 195

125 Konstruktoren public Student ( ) {.... } Java public static Student erzeugestudent ( ) { anzahl = anzahl + 1 ; return new Student ( ) ; } 76 / 195

126 Konstruktoren sind keine Methoden, da sie nicht explizit aufgerufen werden heißen immer so wie die entsprechende Klasse können, wie Methoden, eine Parameterliste haben haben nie einen Rückgabetyp (nicht einmal void) Objekterzeugung mit Konstruktor public Student ( ) { anzahl = anzahl + 1 ; } Objekterzeugung mit Methode public static Student erzeugestudent ( ) { anzahl = anzahl + 1 ; return new Student ( ) ; } 77 / 195

127 Überladen von Konstruktoren Objekterzeugung mit Konstruktor public Student ( ) { anzahl = anzahl + 1 ; } public Student ( String name ) { anzahl = anzahl + 1 ; this. name = name ; } public Student ( String name, long matrikelnummer ) { anzahl = anzahl + 1 ; this. name = name ; this. matrikelnummer = matrikelnummer ; } 78 / 195

128 Objekterzeugung new Student ( ) 1. Speicherplatz organisieren, um die Instanzattribute abspeichern zu können 2. Belegung der Instanzvariablen mit ihren Standardwerten (also 0, null bzw. false) 3. Aufruf des Konstruktors mit den übergebenen Werten 3.1 Falls nicht explizit ein anderer Konstruktor angegeben ist: Aufruf des Standardkonstruktors der Super-Klasse (super()); insbesondere Initialisierung der geerbten Attribute, danach Initialisierung der eigenen Attribute 3.2 Falls die erste Anweisung super(...) lautet, wird der entsprechende Konstruktor der Superklasse aufgerufen und dann initialisiert 3.3 Falls die erste Anweisung this(...) lautet, wird der entsprechende Konstruktor derselben Klasse aufgerufen. 3.4 Ausführung der restlichen Anweisungen des Konstruktors 79 / 195

129 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 80 / 195

130 Abstrakte Klassen Abstrakte Klassen dienen mehreren Zwecken: Von abstrakten Klassen können keine Instanzen erzeugt werden Abstrakte Klassen dienen ausschließlich als Super-Klassen Nur abstrakte Klassen dürfen abstrakte Methoden definieren Abstrakte Klassen mit abstrakten Methoden erzwingen die Implementierung der abstrakt definierten Methoden in der Sub-Klasse (außer, diese ist auch abstrakt) Abstrakte Klassen garantieren, dass alle konkreten Subklassen Implementierungen der abstrakten Methoden anbieten Objekte aller konkreten Klassen sind auch Objekte der abstrakten (Super-) Klasse 81 / 195

131 Abstrakte Klassen Eine abstrakte Klasse liegt dann vor, wenn in der Klasse: nur die Schnittstelle (Signatur) von Methoden festgelegt wird und die eigentliche Implementierung einer, mehrerer oder aller Methoden erst in abgeleiteten Klassen vorgenommen wird Methoden, für die nur die Schnittstelle festgelegt werden soll und die also in einer Klasse keinen Methodenrumpf besitzen, müssen mit dem Schlüsselwort abstract deklariert werden. Ist auch nur eine einzige abstrakte Methode in einer Klasse enthalten, so ist die Klasse zwangsläufig abstrakt und daher mit dem Schlüsselwort abstract zu deklarieren. Abstrakte Klassen können nicht instantiiert werden. 82 / 195

132 Abstrakte Klassen - Beispiel 83 / 195

133 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 84 / 195

134 Abstrakte Klassen - Java und UML Abstrakte Klasse in Java public abstract class Waehrung { public abstract double getdollarbetrag ( ) ; } 85 / 195

135 Abstrakte Klassen - Vererbung 86 / 195

136 Abstrakte Klassen - Vererbung public class JapanischeYen extends Waehrung { private static double dollaryenkurs ; private double wert ; public JapanischeYen ( double wert ) { this. wert = wert ; } public static void setdollaryenkurs ( double neuerdolla { dollaryenkurs = neuerdollaryenkurs ; } public double getdollarbetrag ( ) { return wert dollaryenkurs ; } } 87 / 195

137 Abstrakte Klassen - Vererbung public class USDollar extends Waehrung { private double wert ; public USDollar ( double wert ) { this. wert = wert ; } public double getdollarbetrag ( ) { return wert ; } } 88 / 195

138 Abstrakte Klassen - Vorteile Waehrung [ ] geld = new Waehrung [ 3 ] ; geld [ 0 ] = new USDollar ( ) ; geld [ 1 ] = new JapanischeYen ( ) ; geld [ 2 ] = new Euro ( 4 2 ) ;... public double berechnesteuer ( Waehrung [ ] geld ) { double summe =0; for ( Waehrung w : geld ) { summe = summe + w. getdollarbetrag ( ) ; } }... steuern = berechnesteuer ( geld ) ; 89 / 195

139 Vererbung verhindern public final class NoKidsPlease { int a ; } public class Kid extends NoKidsPlease { int b ; } 90 / 195

140 Vererbung verhindern 91 / 195

141 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 92 / 195

142 Abstrakte Klassen... Mit Hilfe abstrakter Klassen kann man die Existenz gewisser Methoden sicherstellen können Fallunterscheidungen vermieden werden, weil jedes Objekt auch Objekt seiner Super-Klasse ist (und damit deren Methoden kennt). 93 / 195

143 ... und Interfaces public interface Wertgegenstand { public Waehrung wert ( ) ; }... public class Goldbarren implements Wertgegenstand { public static double preisprogrammindollar = 6 0 ; private double gewicht ; public Goldbarren ( double gewichtingramm ) { this. gewicht = gewichtingramm ; }.. public Waehrung wert ( ) { return new USDollar ( gewicht preisprogrammindoll } } 94 / 195

144 Interfaces in Java public interface Wertgegenstand { public Waehrung wert ( ) ; }... public class Goldbarren implements Wertgegenstand {... public Waehrung wert ( ) {... } } 95 / 195

145 Interfaces in UML 96 / 195

146 Abstrakte Klasse vs. Interface Abstrakte Klassen können konkrete Methoden haben erlauben keine Mehrfachvererbung (das ist in Java generell nicht erlaubt!) Interfaces dürfen nur abstrakte Methoden haben (und sind damit wirklich nur Schnittstellenvorgaben) Aber: Eine Klasse in Java darf zwar nur eine Superklasse haben, sie darf aber beliebig viele Interfaces implementieren. 97 / 195

147 Abstrakte Klasse vs. Interface 98 / 195

148 Interfaces und abstrakte Klasse public class Kruegerrand extends Waehrung implements Wertgegenstand { private static double kurs ; private double wert ; public Kruegerrand ( double wert ) { this. wert = wert ; } public double dollarbetrag ( ) { return wert kurs ; } public static void setkurs ( double neuerkurs ) { kurs = neuerkurs ; } public Waehrung wert ( ) { return this ; } } 99 / 195

149 Interfaces und abstrakte Klasse 100 / 195

150 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 101 / 195

151 Definition von Interfaces in Java interface MeineSchnittstelle { public final int EINEKONSTANTE = 3 2 ; public final double PI = ; } public void methodea ( int x ) ; double methodeb ( ) ; 102 / 195

152 Beispiel für Interfaces - Warenverwaltung Jede Ware verfüge über die Attribute Beschreibung Preis Warenkategorien seien Lebensmittel (Attribut: Kalorien) Spielwaren (Attribut: Mindestalter) Bücher (Attribut: Autor) Spielwaren und Bücher seien steuerpflichtig, Lebensmittel aber nicht. Idee: Konzept der Besteuerbarkeit einführen. Besteuerbare Artikel haben einen Steuersatz von 14 Prozent haben eine Methode berechnesteuer() 103 / 195

153 Beispiel für Interfaces - Umsetzung Ware Lebensmittel Spielware Buch Besteuerbar 104 / 195

154 Beispiel für Interfaces - Umsetzung Ware Superklasse (evtl. abstrakt) Lebensmittel Subklasse Spielware Subklasse Buch Subklasse Besteuerbar Interface 104 / 195

155 Beispiel für Interfaces - UML 105 / 195

156 Beispiel für Interfaces - UML 106 / 195

157 Typumwandlung - type cast Warum funktioniert es nicht: public static void main ( String [ ] args ) { Besteuerbar artikel1 = new Buch ( "Emma", , "Austin" ) ; Besteuerbar artikel2 = new Spielware ( "Lego", , 8 ) ; } System. out. println ( artikel1. berechnesteuer ( ) ) ; System. out. println ( artikel2. berechnesteuer ( ) ) ; artikel1. anzeigen ( ) ; 107 / 195

158 Typumwandlung - type cast public static void main ( String [ ] args ) { Besteuerbar artikel1 = new Buecher ( "Emma", , "Austin" ) ; System. out. println ( "Steuer fuer Artikel 1: " + artikel1. berechnesteuer ( ) ) ; } ( ( Buecher ) artikel1 ). anzeigen ( ) ; 108 / 195

159 Typumwandlung - type cast Wo muss hier gecastet werden? public static void main ( String [ ] args ) { Waren spielzeug ; Besteuerbar besteuerbar = new Spielwaren ( "Grobot", , 6 ) ; } spielzeug = besteuerbar ; spielzeug. anzeigen ( ) ; System. out. println ( "Tax: " + spielzeug. berechnesteuer ( ) ) ; 109 / 195

160 Typumwandlung - type cast Eine mögliche Antwort public static void main ( String [ ] args ) { Ware spielzeug ; Besteuerbar besteuerbar = new Spielware ( "Grobot", , 6 ) ; } spielzeug = ( Spielware ) besteuerbar ; spielzeug. anzeigen ( ) ; System. out. println ( "Tax: " + ( ( Besteuerbar ) spielzeug ). berechnesteuer ( ) ) ; 110 / 195

161 Typumwandlung - type cast Eine andere mögliche Antwort public static void main ( String [ ] args ) { Ware spielzeug ; Besteuerbar besteuerbar = new Spielware ( "Grobot", , 6 ) ; } spielzeug = ( Ware ) besteuerbar ; spielzeug. anzeigen ( ) ; System. out. println ( "Tax: " + ( ( Spielware ) spielzeug ). berechnesteuer ( ) ) ; 111 / 195

162 Konstanten in Interfaces Interfaces und Mehrfachvererbung Von verschiedenen Interfaces darf nur eine eine bestimmte Konstante enthalten. Verschiedene Interfaces dürfen aber dieselbe Methode deklarieren. Denn die Konstanten sind damit festgelegt und implementiert, können also nur einmalig definiert werden, es genügt aber, die evtl. mehrfach (in verschiedenen Interfaces) geforderte Methode einmal zu implementieren. 112 / 195

163 Beispiel für ein Interface in der Java API Sortieren Die Klasse Arrays definiert eine statische Methode sort(object[]), mit der Arrays sortiert werden können, wenn die Objekte im Array das Interface Comparable implementieren. http: //lmt.fh-swf.de/uploads/media/interfacesbeispiele.jar 113 / 195

164 Innere Klassen Innere Klassen Wird innerhalb einer Klasse eine andere Klasse definiert, so wird diese Klasse als innere Klasse bezeichnet / 195

165 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 115 / 195

166 Aufzählungstypen public enum Jahreszeit { FRUEHLING, SOMMER, HERBST, WINTER ; } 116 / 195

167 Instanzmethoden der Aufzählungsobjekte import de. profboecker. oopwing. enums. Jahreszeit ; import static de. profboecker. oopwing. enums. Jahreszeit. ; public class Aufzaehlungen { public static void main ( String [ ] args ) { Jahreszeit x = HERBST ; System. out. println ( x ) ; } } for ( Jahreszeit jz : Jahreszeit. values ( ) ) { System. out. println ( jz + " hat den Wert " + jz. ordinal ( ) ) ; } 117 / 195

168 Instanzmethoden der Aufzählungsobjekte tostring() equals(object anderesobjekt) ordinal() values() 118 / 195

169 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 119 / 195

170 Schablonen public class StringBox { private String wert ; public String getwert ( ) { return wert ; } public void setwert ( String wert ) { this. wert = wert ; } } public class IntBox { private int wert ; public int getwert ( ) { return wert ; } public void setwert ( int wert ) { this. wert = wert ; } } 120 / 195

171 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 121 / 195

172 Klassenschablonen public class Box<T> { private T wert ; public T getwert ( ) { return wert ; } public void setwert ( T wert ) { this. wert = wert ; } } 122 / 195

173 Formaler Typ-Parameter An Stelle eines konkreten Typs steht ein formaler Typ-Parameter, der hier T heisst, der nur zu Beginn einmal hinter dem Klassennamen in spitzen Klammern angegeben wird (z.b. Box<T>) und der dann in der Klasse anstelle eines konkreten Typs benutzt werden kann. Um die Klasse Box<T> nutzen zu können, müssen Instanzen von ihr mit einem konkreten Typ erzeugt werden. Box<String> stringbox = new Box<String >(); Box<Integer> integerbox = new Box<Integer >(); Box<Punkt> punktbox = new Box<Punkt >(); punktbox. getwert ( ). getx ( ) ; 123 / 195

174 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 124 / 195

175 Methodenschablonen Generische Datentypen (Generics) können auch in normalen Klassen eingesetzt werden, z.b. in Methoden, die die verwendeten Typen generisch vorschreiben: public static <T> T random ( T eines, T anderes ) { T welches ; if ( Math. random ( ) > 0. 5 ) { welches = eines ; } else { welches = anderes ; } return welches ; } 125 / 195

176 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 126 / 195

177 Raw-Types Generische Klassen müssen nicht unbedingt parametrisiert werden. Box<Punkt> punktbox = new Box<Punkt >(); Box objektbox = new Box ( ) ; Alle Objekte sind Instanzen von Object; deswegen geht das (implizit wird Object benutzt. viele neue parametrisierte Klassen der API könnten sonst nicht mehr benutzt werden (z.b. Comparable) public interface Comparable<T> { public int compareto ( T o ) ; } Deswegen sind dann oft Type-Casts notwendig. 127 / 195

178 Übersicht Abstrakte Klassen, Vererbung und Interfaces Abstrakte Klassen Abstrakte Klassen in Java und UML Abstrakte Klassen und Interfaces Interfaces detailliert Enumerations Deklaration eines Aufzählungstyps Generische Datentypen Idee Klassenschablonen Methodenschablonen Raw-Types instanceof-operator und getclass() 128 / 195

179 Klassen-Abfrage Von welcher Klasse? Wie findet man eigentlich heraus, von welcher Klasse ein konkretes Objekt eine Instanz ist? 129 / 195

180 Beispiel 130 / 195

181 instanceof-operator if ( ware instanceof Ware ) { System. out. println ( ware. getbeschreibung ( ) + " ist eine Instanz von Ware." ) ; } if ( ware instanceof Besteuerbar ) { ware. berechnesteuer ( ) } 131 / 195

182 getclass()-methode for ( Ware ware : inventar ) { System. out. println ( ware. getbeschreibung ( ) + " ist eine Instanz von " + ware. getclass ( ) ) ; } 132 / 195

183 getclass()-methode vs instanceof instanceof liefert also true, wenn das Objekt eine Instanz der angegebenen Klasse ist oder das angegebene Interface implementiert getclass() liefert die Klasse (ein Objekt der Klasse Class, von der das Objekt erzeugt wurde und damit nur die für das Objekt unterste Ebene der Vererbungshierarchie. Objekte der Klasse Class implementieren u.a. die Methoden Class getsuperclass() zur Bestimmung der Superklasse Class[] getinterfaces() zur Bestimmung der implementierten Schnittstellen 133 / 195

184 Gleichheit von Objekten Da alle Klasse in Java von Object erben, erben sie auch die Methode equals() zur Überprüfung auf Gleichheit zweier Objekte. equals() sollte überschrieben werden Da equals() in der Originalversion (aus Object) die Referenzen auf Gleichheit prüft, also zwei Objekte nur dann als gleich ansieht, wenn die Referenzen dieselben sind (also faktisch dasselbe Objekt referenziert wird) sollte die equals()-methode immer überschrieben werden. 134 / 195

185 Gleichheit von Objekten - Überschreiben von equals() public boolean equals ( Object anderesobjekt ) { if ( anderesobjekt instanceof Buch ) { return this. isbn == ( ( Buch ) anderesobjekt ). getisbn ( ) ; } else { return false ; } } 135 / 195

186 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 136 / 195

187 Attribute - UML 137 / 195

188 Attribute - Java public class Tagung { private String name = new String ( ) ; private Adresse ort ; private GregorianCalendar termin ; } 138 / 195

189 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 139 / 195

190 Methoden - UML 140 / 195

191 Attribute - Java public class Tagung { public void ankuendigungversenden ( ) { } } public void anmelden ( Wissenschaftler t ) { teilnehmer. addelement ( t ) ; } public void buchen ( double gebuehr ) { } public boolean anfragen ( Wissenschaftler t ) { return true ; } 141 / 195

192 get- und set-methoden und Konstruktoren - Java public class Tagung { public Tagung ( ) { } public void setname ( String neuername ) { this. name = neuername ; } public String getname ( ) { return name ; } } 142 / 195

193 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 143 / 195

194 Generalisierung - UML 144 / 195

195 Vererbung - Java public class Workshop extends Tagung { private Integer maximalteilnehmer ; public void anmeldenleiter ( Wissenschaftler teilnehmer ) { } public boolean buchen ( Double gebuehr ) { return false ; } } 145 / 195

196 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 146 / 195

197 Schnittstellen/Interfaces - UML 147 / 195

198 Interfaces - Java public interface Zahlung { public void zahlungausfuehren ( Waehrung gebuehr ) ; } public class Barzahlung implements Zahlung public void zahlungausfuehren ( Waehrung gebuehr ) { } } 148 / 195

199 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 149 / 195

200 Assoziationen - UML 150 / 195

201 Assoziationen - Java public class Tagung {... public ArrayList<Wissenschaftler> teilnehmer ;... } public class Wissenschaftler {... public Tagung veranstaltung ;... } 151 / 195

202 Aggregation - UML 152 / 195

203 Aggregation - Java public class WissenschaftlicherBeitrag { public Text artikel ; public WissenschaftlicherBeitrag ( ) { artikel = new Text ( ) ; } }... public class Text {... } 153 / 195

204 Komposition - UML 154 / 195

205 Komposition - Java public class WissenschaftlicherBeitrag { public Text artikel ; private class Text {... } } public WissenschaftlicherBeitrag ( ) { artikel = new Text ( ) ; } 155 / 195

206 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 156 / 195

207 Collection API - UML 157 / 195

208 Listen und andere Container 158 / 195

209 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 159 / 195

210 Die Schnittstellen Iterable und Iterator public interface Iterable<T> { Iterator<T> iterator ( ) ; } public interface Iterator<T> { public boolean hasnext ( ) ; public T next ( ) ; public void remove ( ) ; } 160 / 195

211 Die Schnittstellen Iterable und Iterator - Beispiel // While - Schleife mit Iterator Iterator<String> iterator = testarray. iterator ( ) ; while ( iterator. hasnext ( ) ) { System. out. println ( iterator. next ( ) ) ; } // For - Schleife mit Iterator for ( Iterator<String> i = testarray. iterator ( ) ; i. hasnext ( ) ; ) { System. out. println ( i. next ( ) ) ; } // For -Each - Schleife for ( String text : testarray ) { System. out. println ( text ) ; } 161 / 195

212 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 162 / 195

213 Die Schnittstelle Set public interface Set<T> { Iterator<T> iterator ( ) ; // Hinzufuegen, falls equals() "false" liefert boolean add ( T e ) ; // Entfernen eines Elementes boolean remove ( Object e ) ; // Mengen - Vereinigung boolean addall ( Collection <? extends T> c ) ; // Schnitt -Menge boolean retainall ( Collection<?> c ) ; // Entfernen von mehreren Elementen boolean removeall ( Collection<?> c ) ; } 163 / 195

214 Die Klasse HashSet public class HashSet<T> implements Set<T>, Cloneable, Serializable {... } 164 / 195

215 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 165 / 195

216 Die Schnittstellen Comparable und SortedSet public interface SortedSet<T> { public T first ( ) ; public T last ( ) ; public SortedSet<T> headset ( T biselement ) ; public SortedSet<T> tailset ( T vonelement ) ; public SortedSet<T> subset ( T vonelement, T biselement ) ; } public interface Comparable<T> { int compareto ( T andereselement ) ; } 166 / 195

217 Die Klasse TreeSet public class TreeSet<T> implements Set<T>, SortedSet<T>, Cloneable, Serializable, Iterable<T> {... } 167 / 195

218 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 168 / 195

219 Die Schnittstelle List public interface List<T> { public add ( T element ) ; public add ( int psoition, T element ) ; public T get ( int position ) ; public int indexof ( Object objekt ) ; public int lastindexof ( Object objekt ) ; public T remove ( int position ) ; public T set ( int position, T element ) ; } public interface Comparable<T> { int compareto ( T andereselement ) ; } 169 / 195

220 Die Klassen ArrayList und LinkedList 170 / 195

221 Übersicht Spezielle Konzepte - UML und Java Attribute - UML und Java Methoden - UML und Java Generalisierung/Vererbung - UML und Java Interfaces - UML und Java Beziehungen zwischen Klassen - UML und Java Listen und Mengen Listen in Java Iteratoren und Iterable Mengen - HashSet und Set Sortierte Mengen - TreeSet und SortedSet Listen - ArrayList und LinkedList Suchen und Sortieren - Collections und Arrays 171 / 195

222 Die Klasse Collections public static <T> int binarysearch ( List<? extends Comparable<? super T>> list, T schluessel )... } sucht nach dem Objekt schluessel in der Liste List. Wichtig Es muss sichergestellt sein, dass die Liste List zuvor aufsteigend sortiert worden ist (durch die Methode sort). 172 / 195

223 binarysearch(...) und sort() in Collections binarysearch(...) liefert den Index, unter dem der schluessel in der Liste List gespeichert ist, falls er enthalten ist liefert ansonsten p 1, wobei p der Index ist, unter dem schluessel in der Liste List eingefügt werden müsste. sort(...) static <T extends Comparable <? super T>> void sort ( List<T> list )... } sortiert die Liste List in aufsteigender Reihenfolge. 173 / 195

224 Die Klasse Arrays public static int binarysearch ( xxx [ ] sucharray, xxx schluessel )... } sucht nach schluessel im Array sucharray. Wichtig Es muss sichergestellt sein, dass die Liste List zuvor aufsteigend sortiert worden ist (durch die Methode sort). 174 / 195

225 binarysearch(...) und sort() in Arrays binarysearch(...) liefert den Index, unter dem der schluessel in der Liste List gespeichert ist, falls er enthalten ist liefert ansonsten p 1, wobei p der Index ist, unter dem schluessel in der Liste List eingefügt werden müsste. sort(...) public static void sort ( xxx [ ] array ) {... } sortiert die Liste List in aufsteigender Reihenfolge (im Sinne von compareto(). 175 / 195

226 Die Klassen Collections und Arrays compareto() und equals() sollten konsistent definiert sein, d.h. es ist darauf zu achten, dass compareto() genau dann 0 liefert, wenn equals() true liefert. 176 / 195

227 Welche Klasse sollte man wann nehmen? Vorschläge für die Auswahl der Klassen: Ist eine Sequenz, also eine feste Ordnung gewünscht? Wenn ja, dann nehme man eine Liste. Soll es einen schnellen Zugriff über einen Index geben? Wenn ja, ist die ArrayList gegenüber der LinkedList im Vorteil. Werden oft am Ende und Anfang Elemente eingefügt? Dann kann die LinkedList punkten. Wenn eine Reihenfolge der Elemente uninteressant ist, aber schnell entschieden werden soll, ob ein Element Teil einer Menge ist, erweist sich HashSet als interessant. Sollen Elemente nur einmal vorkommen und immer sortiert bleiben? Dann ist TreeSet eine gute Wahl. Muss es eine Assoziation zwischen Schlüssel und Elementen geben, ist eine Map von Vorteil. 177 / 195

228 Übersicht Ein- und Ausgabe Ein- und Ausgabe über Streams Dateien und Verzeichnisse Character-Streams Byte-Streams Serialisierung und Deserialisierung von Objekten 178 / 195

229 Ein- und Ausgabe-Streams Sämtliche Ein- und Ausgaben laufen in Java stromorientiert ab, d. h. sie werden mit Hilfe eines so genannten Stream-Konzepts abgewickelt. Dabei ist ein Stream (Strom) eine Verbindung zwischen einem Programm und einer Datenquelle oder einer Datensenke (also einem Datenziel). Diese Verbindung, d. h. ein Stream verläuft dabei stets nur in einer Richtung. 179 / 195

230 Ein- und Ausgabe-Streams 180 / 195

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

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

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML) Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Klassendiagramm. (class diagram)

Klassendiagramm. (class diagram) : Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

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

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

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

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

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

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

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Einführung in die Programmierung für NF

Einführung in die Programmierung für NF Einführung in die Programmierung für NF UML Valerie Holmeyer Michael Kirsch Direct Feedback Eure Mitarbeit ist mir wichbg Quiz nach den jeweiligen AbschniGen Jeder kann mitmachen App socra&ve auf Smartphone

Mehr

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

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Aufgabenblatt Nr. 5 Generizität und TicTacToe Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung

Mehr

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung?

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung? Kapitelübersicht Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge Was bedeutet Objektorien+erung? ObjektorienCerte Analyse und Design die Objektmodellierung

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

BEISPIELKLAUSUR Softwareentwicklung:

BEISPIELKLAUSUR Softwareentwicklung: Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte

Mehr

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr. Institut für Telematik Universität zu Lübeck Programmieren Kapitel 0: Organisatorisches Wintersemester 2008/2009 Prof. Dr. Christian Werner 1-2 Überblick Ziele Inhaltsüberblick Ablauf der Veranstaltung

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Unified Modeling Language (UML)

Unified Modeling Language (UML) Kirsten Berkenkötter Was ist ein Modell? Warum Modellieren? Warum UML? Viele, viele Diagramme UML am Beispiel Was ist ein Modell? Ein Modell: ist eine abstrakte Repräsentation eines Systems, bzw. ist eine

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

SEQUENZDIAGRAMM. Christoph Süsens

SEQUENZDIAGRAMM. Christoph Süsens SEQUENZDIAGRAMM Christoph Süsens DEFINITION Das Sequenzdiagramm gibt Auskunft darüber: Welche Methoden für die Kommunikation zwischen ausgewählten Objekten zuständig sind. Wie der zeitliche Ablauf von

Mehr

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur UML-Klassendiagramme als Werkzeug im Unterricht Blitzlicht? In welcher Programmiersprache(n) unterrichten Sie?? In welchem Umfang unterrichten Sie Objektorientierung??

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

OO Softwareentwicklung

OO Softwareentwicklung OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel. EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.de/~mtr FRAGEN / ANMERKUNGEN Vorlesung Neue Übungsaufgaben MODELLIERUNG

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Vgl. Oestereich Kap 2.7 Seiten 134-147

Vgl. Oestereich Kap 2.7 Seiten 134-147 Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

Mehr

Vorlesung "Software-Engineering"

Vorlesung Software-Engineering Vorlesung "Software-Engineering" Rainer Marrone, TUHH, Arbeitsbereich STS Vorige Vorlesung Pflichtenheft (requirements specification document) Charakterisierung von Software-Qualität Detaillierte Anforderungsanalyse

Mehr

WhiteStarUML Tutorial

WhiteStarUML Tutorial WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

13. Tutorium zu Programmieren

13. Tutorium zu Programmieren 13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Vorlesung Sommersemester 2013 Prof. Dr. Nikolaus Wulff Ziele der Vorlesung Sie vertiefen die Kenntnisse aus Informatik I und runden diese in weiteren Anwendungsgebieten

Mehr

Use Cases. Use Cases

Use Cases. Use Cases Use Cases Eigenschaften: Ein Use Case beschreibt einen Teil des Verhaltens eines Systems aus externer Sicht (Formuliert in der der Fachsprache der Anwendung) Dies geschieht, indem ein Systemdialog beschrieben

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr