Inhalt: Version 1.7.5



Ähnliche Dokumente
Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

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

Objektorientierte Programmierung

Java: Vererbung. Teil 3: super()

SWE5 Übungen zu Software-Engineering

Software Engineering Klassendiagramme Assoziationen

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

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

Objektorientierte Programmierung OOP

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

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Einführung in die Java- Programmierung

Programmieren in Java

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Software Engineering Klassendiagramme Einführung

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Übung: Verwendung von Java-Threads

WhiteStarUML Tutorial

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

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

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Grundfunktionen und Bedienung

Vorkurs C++ Programmierung

Java Kurs für Anfänger Einheit 5 Methoden

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

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

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Programmierkurs Java

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

my.ohm Content Services Autorenansicht Rechte

Bedienung von BlueJ. Klassenanzeige

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Professionelle Seminare im Bereich MS-Office

Software Engineering Klassendiagramme weiterführende Konzepte

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Version 0.3. Installation von MinGW und Eclipse CDT

SEP 114. Design by Contract

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Schulberichtssystem. Inhaltsverzeichnis

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

CL-Mini-ABF. Kurzbeschreibung. Installation und Vorbereitung. Stand Ihre HTK-Filiale Michelstadt

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

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Grundlagen von Python

Klassendiagramm. (class diagram)

Hilfedatei der Oden$-Börse Stand Juni 2014

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

Kapitel 6. Vererbung

Software Engineering Interaktionsdiagramme

Übungen Programmieren 1 Felix Rohrer. Übungen

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Übungen zur Softwaretechnik

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

BEISPIELKLAUSUR Softwareentwicklung:

Unified Modeling Language (UML)

Codex Newsletter. Allgemeines. Codex Newsletter

Datensicherung. Beschreibung der Datensicherung

5.2 Neue Projekte erstellen

Computeranwendung und Programmierung (CuP)

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Step by Step Webserver unter Windows Server von Christian Bartl

Nutzung von GiS BasePac 8 im Netzwerk

Handbuch oasebw Seite 1 von 10

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Anforderungen an die HIS

OP-LOG

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

Assoziation und Aggregation

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

Schnittstelle Drittmeldepflicht Ab ImmoTop

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Konzepte und Notation in UML. Objekt Klasse Attribut Operation

Handbuch. Anlegen von Vermittlern, Gruppen und Anwendern. 1. Auflage. (Stand: )

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester Teil 4 -

Hilfe zur Urlaubsplanung und Zeiterfassung

ecaros2 - Accountmanager

Objektorientierte Programmierung. Kapitel 12: Interfaces

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Benutzerverwaltung Business- & Company-Paket

Adami CRM - Outlook Replikation User Dokumentation

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

DOKUMENTATION VOGELZUCHT 2015 PLUS

How to do? Projekte - Zeiterfassung

-Inhalte an cobra übergeben

AUF LETZTER SEITE DIESER ANLEITUNG!!!

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

ARAkoll 2013 Dokumentation. Datum:

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

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Adminer: Installationsanleitung

3. Konzepte der objektorientierten Programmierung

Dokumentenverwaltung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Transkript:

Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten I Beziehungen zwischen Objekten II Übersicht Beziehungstypen Konstruktoren Vererbung Sequenzdiagramme mit UML Datenbankanbindung Softwareentwicklung und Wasserfallmodell Version 1.7.5 1

Objektorientierte Softwareentwicklung 2

Beispiel: Für ein Vektorzeichenprogramm sollen Rechtecke als Objekte verwaltet werden. Vorüberlegung: Welche allgemeinen Eigenschaften hat ein Rechteck? 3

Welche allgemeinen Eigenschaften hat ein Rechteck? Farbe Seite A (Länge) Seite B (Länge) 4

Die allgemeinen Eigenschaften werden in einer so genannten Klasse festgehalten. Klassen werden in UML wie folgt dargestellt: Klassenname Attribute mit Datentypen 5

Klassen in UML-Darstellung werden wie folgt in JAVA umgesetzt: Datei Rechteck.java: 6

Es sollen zwei konkrete Rechtecke mit den Namen r1 und r2 als Objekte aus der Klasse Rechteck erzeugt und getestet werden: 7

Die Objekte werden innerhalb einer anderen Datei (hier Testrechteck.java) erzeugt. Diese Datei und die Datei Rechteck.java müssen im selben Verzeichnis liegen! Hier startet das Programm Objekt erzeugen Objekt mit Werten füllen. 8

Objektorientierte Softwareentwicklung 9

Bislang ist das Objekt rein passiv. Es können über die Attribute nur Werte zugewiesen bzw. wieder ausgelesen werden. Um den Objekt eigene Funktionalität zu geben müssen Methoden (Operationen, Funktionen) zugefügt werden. 10

Dem Objekt Rechteck soll eine Methode zur Ausgabe der Objektsdaten auf dem Bildschirm hinzugefügt werden. Diese Methode soll zeigedaten heißen. 11

Methoden werden im unteren Teil aufgelistet. Methodenname 12

13

Datei Rechteck.java: Zugriff die eigenen Objektattribute. 14

Datei Testrecheck.java 15

16

Programmcode ausführen Programmcode übersetzen Datei Testrechteck.java: Datei Rechteck.java: 17

Objektorientierte Softwareentwicklung 18

Bislang werden die Objektattribute durch direkten Zugriff von außen gesetzt. Dies hat den Nachteil, dass das Objekt keine Möglichkeit hat auf fehlerhafte Wertzuweisungen zu reagieren. Zum Setzen der Attribute ist es daher sinnvoll Methoden einzusetzen. Diese können dann ggf. fehlerhafte Wertzuweisungen abfangen. 19

Sie Klasse Rechteck soll durch zwei Methoden setzea und setzeb erweitert werden. Diese Methoden sollen die Objektattribute seitea und seiteb setzen und überprüfen, ob die Werte positiv sind. Bei negativen Werten soll eine Fehlermeldung ausgegeben werden. 20

Vorüberlegungen: 1. Braucht die Methode Parameter? JA, der Methode muss eine Länge übergeben werden. Der Parameter muss vom Typ double sein, da die Seitenlänge eine Kommazahl sein kann. 21

Methodenname Ein Parameter vom Typ double Der Parameter hat den Namen a. Unter diesem Namen kann der Parameter angesprochen werden. 22

Test, ob a positiv Setzen den Attributs seitea Auf den übergebenen Wert. Fehlermeldung falls a negativ. 23

Objekt erzeugen Objektattribute über die Methoden setzen. Wert negativ. Liefert eine Fehlermeldung. 24

25

Objektorientierte Softwareentwicklung 26

Ein Programm soll ein Rechteckobjekt erzeugen und mit den Methoden setzea und setzeb die Seitenlängen setzen. Nur wenn das Rechteck fehlerfrei d.h. mit positiven Werten für a und b - erzeugt wurde, sollen die Objektdaten auf dem Bildschirm ausgegeben werden. 27

Problem: Das Programm, welches das Objekt Rechteck erzeugt, weiß nicht, ob die Attribute korrekt gesetzt wurden. 28

Lösung: Die Methoden, welche die Seitenlängen setzen, müssen nach außen mitteilen, ob das Setzen erfolgreich war. 29

Die Funktion hat ein Rückgabewert vom Typ boolean. Wenn die Attribute korrekt gesetzt wurden soll die Methode true zurückgeben, sonst false. 30

Rechteck +seitea: double +seiteb: double +farbe: String +setzea(a: double): boolean +setzeb(b: double): boolean Mitteilen des Ergebnis Nach außen. 31

32

33

Objektorientierte Softwareentwicklung 34

Es soll eine Klasse Messwerte entwickelt werden: Diese Klasse kann bis zu 100 Messewerte verwalten. Die Klasse hat Methoden um einen neuen Messwert hinzuzufügen (alle bisherigen Messwerte sollen erhalten bleiben), alle bislang gespeicherten Messwerte auf dem Bildschirm auszugeben, um den Durchschnitt aller Messwerte zu berechnen. 35

Problem: Wie sollen bis zu 100 Werte als Objektattribute verwaltet werden? Lösung 1: Es werden 100 Attribute angelegt. Schlechte Lösung da: Hoher Aufwand 100 Variablen anzulegen! Aufwendige Programmierung, da 100 Attributnamen. Unflexibel, da Programm schwierig zu erweitern, wenn noch mehr Werte verwaltet werden sollen. 36

Lösung: es muss ein Array als Attribut verwendet werden, welches die Messwerte speichert. Problem: Das Array weiß nur, wie viele Werte es maximal (100) aufnehmen kann. Es weiß aber nicht, welche Position im Array als nächstes frei ist. Lösung: Das Objekt muss sich merken, welches die nächst freie Position ist. 37

Messwerte -werte: double[0..100] -freieposition: int = 0 +werthinzufuegen(double wert): void +zeigeallewerte(): void +berechnedurchschnitt(): double 38

39

40

Objektorientierte Softwareentwicklung 41

Für eine Versicherungsfirma soll eine objektorientierte Software zur Verwaltung von Fahrzeugen und Kunden entwickelt werden. Jedem Auto soll dabei ein Kunde als Besitzer zugeordnet werden. 42

? Anmerkung: Die Attribute sind nur exemplarisch vorhanden und es sind keine Methoden dargestellt. 43

Rollenname Assoziationsname Auto +hersteller: String +baujahr: int +haftpflichtklasse: int gehört Kardinalität +Besitzer 1 Kunde +nummer: int +vorname: String +nachname: String Assoziation 44

Auto +hersteller: String +baujahr: int +haftpflichtklasse: int gehört +Besitzer 1 Kunde +nummer: int +vorname: String +nachname: String 45

a1 : Auto hersteller = "Volkswagen" baujahr = 2008 haftpflichtklasse = 12 k1 : Kunde nummer = 1234 vorname = "Max" nachname = "Mustermann" 46

Anmerkung: Der Einfachheit halber wurde direkt auf die Objektattribute zugegriffen. Für das Setzen der Attribute sollten Setzen-Methoden bereitgestellt werden. Dies gilt auch für das Herstellen der Beziehung. Siehe dazu auch die entsprechende Übung. 47

Objektorientierte Softwareentwicklung 48

Es soll eine objektorientierte Software zur Verwaltung von Schülern und Schulklassen entwickelt werden. Sowohl Schüler als auch Schulklassen sollen in der Software als Objekte repräsentiert werden. Eine Schulklasse soll über eine Methode zum Hinzufügen eines Schülers und eine Methode zum Anzeigen aller Schüler verfügen. 49

Darstellung eines Schülers: 50

Darstellung einer Schulklasse: 51

Beziehung zwischen Schulklasse und Schüler? 52

Schulklasse Schueler -bezeichnung: String -schulform: String +setzebezeichnung(bezeichnung: String): void +setzeschulform(form: String): void +schuelerhinzufuegen(s: Schueler): void +zeigeschueler(): void hat +SchuelerInKlasse * -name: String -vorname: String -nummer: int +setzename(name: String): void +setzevorname(vorname: String): void +setzenummer(nummer: int): void Das * bedeutet: in einer Klasse befinden sich viele/mehrere Schüler. 53

Testbeispiel-Objektstruktur: k1 : Schulklasse bezeichnung="12foi2" schulform="fos" s1 : Schueler name="simpson" vorname="bart" nummer=1234 s2 : Schueler name="van Houten" vorname="milhouse" nummer=4321 54

Schulklasse Schueler -bezeichnung: String -schulform: String +setzebezeichnung(bezeichnung: String): void +setzeschulform(form: String): void +schuelerhinzufuegen(s: Schueler): void +zeigeschueler(): void hat +SchuelerInKlasse * -name: String -vorname: String -nummer: int +setzename(name: String): void +setzevorname(vorname: String): void +setzenummer(nummer: int): void Für die Klasse Schueler gibt es keine Besonderheiten. Sie wird wie gehabt implementiert (siehe nächste Folie). 55

56

Problem: Die Klasse Schulklasse muss sich viele Schüler merken. Schulklasse Schueler -bezeichnung: String -schulform: String +setzebezeichnung(bezeichnung: String): void +setzeschulform(form: String): void +schuelerhinzufuegen(s: Schueler): void +zeigeschueler(): void hat +SchuelerInKlasse * -name: String -vorname: String -nummer: int +setzename(name: String): void +setzevorname(vorname: String): void +setzenummer(nummer: int): void Lösung: Die Klasse Schulklasse merkt sich in einem Array alle Schüler. 57

Lösung: Die Klasse Schulklasse merkt sich in einem Array alle Schüler. Dabei ist folgendes zu überlegen: Das Array ist vom Typ Schueler. Das Array muss groß genug sein (z.b. 50). Das Array muss einen Namen haben (hier: SchülerInKlasse). Das Array wird der Reihe nach aufgefüllt. Die erste Position ist daher die 0, die letzte die 49 (da 50 Einträge). Man muss sich merken, welches die nächste freie Position im Array ist. Alle Plätze davor sind belegt. 58

Array für Schüler Variable für freie Position Schüler in Array einfügen freie Position eins weiter schalten Alle Schüler im Array der Reihe nach ausgeben. 59

60

Objektorientierte Softwareentwicklung 61

Gerichtete Assoziation: Klasse A kennt / benutzt Klasse B. Umsetzung: Referenz auf Klasse B in Klasse A. Assoziation: Klasse C kennt / benutzt Klasse D und umgekehrt (Beziehung geht in beide Richtungen). Umsetzung: Die Klassen referenzieren sich gegenseitig. 62

Aggregation: Komposition: Aggregationen bzw. Kompositionen sind spezielle Assoziationen, die "Teile/Ganzes"-Beziehung beschreiben. Das "Teil des "Ganzen kann bei der Aggregation auch einzeln existieren, bei der Komposition nur, wenn auch das "Ganze" existiert. Das "Ganze" befindet sich auf der Seite der Raute. Bei der Implementierung werden Aggregationen und Kompositionen häufig nicht anders als normale Assoziationen behandelt. 63

Beispiel für eine Aggregation: Die Räder sind Teil von einem Auto und können auch ohne das Auto existieren. Beispiel für eine Komposition: Ein Gehirn ist ein Teil von einem Menschen. Ohne den Menschen kann das Gehirn aber nicht existieren. 64

Objektorientierte Softwareentwicklung 65

Die Aufgabe des Konstruktors ist es bei der Objekterzeugung bestimmte Vorbereitungen zu erledigen (z.b. Variablen mit Startwerten zu belegen), ohne die ein Arbeiten mit dem Objekt nicht möglich ist.

Es soll eine Klasse Rechteck entwickelt werden. Bereits bei Objekterzeugung sollen die Seitenlängen gesetzt werden. Es wird ein Konstruktor zum Setzen der Seitenlängen benötigt: 67

Konstruktoren werden als spezielle Methoden aufgeführt. 68

Implementierung der Klasse Rechteck: Objekterzeugung: Nicht mehr möglich ist jedoch: 69

Die Klasse Rechteck soll erweitert werden: Die Objekterzeugung ohne Werteübergabe bei Objekterzeugung soll ermöglich werden. Zusätzlich soll bei Objekterzeugung optional auch das Attribut Farbe gesetzt werden können. 70

Es werden mehrere Konstruktoren eingeführt. Diese können wahlweise für die Objekterzeugung verwendet werden. 71

Implementierung der Klasse Rechteck: Möglichkeiten der Objekterzeugung: 72

Objektorientierte Softwareentwicklung 73

Für einen Betrieb ist eine Mitarbeiterverwaltung zu entwickeln. In dem Betrieb gibt es zwei Arten Mitarbeiter: Angestellte und Arbeiter Angestellte erhalten einen Basislohn und eine Provision, während Arbeiter einen Stundenlohn erhalten. 74

Angestellte und Arbeiter haben als Mitarbeiter gemeinsame Eigenschaften (Name, Vorname,..) und Methoden. Zusätzlich haben die Mitarbeiter spezielle Eigenschaften und Methoden, die sich voneinander unterscheiden je nachdem, ob die Angestellte oder Arbeiter sind. Idee: Gemeinsamkeiten zusammenfassen und nach Unterschieden spezialisieren. 75

Spezialisierung Generalisierung Gemeinsamkeiten Unterschiede Alle Angestellte und Arbeiter haben / erben alle Eigenschaften und Methoden von Mitarbeitern und erweitern diese entsprechend. Überlegung: Wie müssen sich die Methoden berechnegehalt und zeigedaten verhalten? Neu: Sichtbarkeit protected (Zugriff von außen verboten, aber Erben können zugreifen) 76

77

78

79

80

81

Objektorientierte Softwareentwicklung 82

UML Sequenzdiagramme dienen dazu Interaktionen zwischen Objekten darzustellen. Objekte interagieren über Methodenaufrufe miteinander. 83

Ein Kunde will an einem Bankautomat Geld abheben. Benötigte Schnittstellen: 84

85

Mehrfach Geld abheben: 86

Nur Geldabheben, wenn erfolgreich im System eingeloggt: 87

Entweder Einzahlen oder Auszahlen je nach Kontostand: 88

Objektorientierte Softwareentwicklung 89

Treiber JAVA- Programm JDBC-API Datenbank Installation des MySQL-Treibers: 1. Datei mysql-connector-java-5.1.6-bin.jar in das Verzeichnis \lib\ext der Java-Laufzeitumgebung kopieren. 2. Unter Eclipse: Datei mysql-connector-java-5.1.6-bin.jar importieren. 90

Kommunikation eines JAVA Programms mit einer MySQL-Datenbank: Verbindung aufbauen MySQL-Befehle generieren MySQL-Befehl(e) abschicken MySQL-Befehle ggf. auswerten Verbindung schließen 91

Es soll auf eine MySQL-Datenbank mit Namen verwaltung zugegriffen werden. In die Tabelle mitarbeiter sollen Daten eingefügt werden. Aus der Tabelle mitarbeiter sollen alle Datensätze ausgelesen und auf dem Bildschirm angezeigt werden. 92

93

94

95

Objektorientierte Softwareentwicklung 96

schrittweise und systematische Vorgehensweise in der Softwareentwicklung Softwareentwicklungsprozess ist in Phasen organisiert jede Phase hat definierte Start- und Endpunkte mit eindeutig definierten Ergebnissen. die Ergebnisse einer Phasen sind bindende Vorgaben für die nächst tiefere Phase ein ( Wasserfall ). Aufwärtslaufen in den Phasen möglich, sofern in der aktuellen Phase etwas schieflaufen sollte, um den Fehler auf der nächsthöheren Stufe beheben zu können. 97

98

Arbeitsauftrag, Lastenheft Was wird benötigt? Was soll programmiert werden? Umsetzung in eine Programmiersprache (z.b. JAVA) Klassen, Attribute, Methoden, Schnittstellen, Beziehungen, UML Testfälle überlegen, Testen der Umsetzung Alltagsbetrieb der Software, neuer Prozess bei Fehlern oder Erweiterungen notwendig. 99

Autor: Christian Frye Version: 1.7.5 Datum: 26. März 2012 Web: http://moodle.erasmus-kittler-schule.de http://www.eks-darmstadt.de Mail: christian.frye@erasmus-kittler-schule.de 100