27
Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Embed Size (px)

Citation preview

Page 1: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Programmierpraktikum

Teil 3 (Version 1.0)

Prof. Dr. Daniel F. AbawiOliver Fourman

Page 2: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Ihre Gruppenaufgabe für den dritten und vierten Block

Programmierung eines Buchungssystems für eine Autovermietung (in Java)

Page 3: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Aktualisierung der Unterlagen

• wie in der Informatik-Vorlesung erläutert, ändern Kunden bei IT-Projekten oftmals ihre Anforderungen und Wünsche, bzw. sie können mit fortschreitender Projektdauer ihre Vorstellungen konkreter formulieren

• Funktionsumfang (u. Funktionspriorisierung)

• Datenmodellierung

• Gestaltung

• Interaktionsmetaphern

• …

Wichtig

• Bitte schauen Sie regelmässig im Handout-Verzeichnis nach, ob erweiterte und aktualisierte Fassungen der Unterlagen zum dritten und vierten Block verfügbar sind

zum Vergleich dient die Versionsnummer auf dem Deckblatt (erste Folie) der Unterlagen

Page 4: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Überblick über das Java Programmierpraktikum Teil 3

Aufgabe: Programmierung eines Buchungssystems für eine Autovermietung

Roter Faden (dieser Foliensatz)• gibt Vorgehensweise der Softwareentwicklung vor• stellt Technologien vor, die genutzt werden sollen (und die Aufgabe vereinfachen)• zeigt ein Referenzbeispiel (als Basis zur Kommunikation Prototyping)

Zu der Lösung dieser Aufgabe gehören (inhaltlich)• Java-Programm (mit mehreren Klassen)

• Geschäftsprozess soll vollständig abgedeckt werden• Minimal: Programmgerüst, das man mit BlueJ testen kann• Normal: Programm über Konsole ausführbar• Optimal: Zusätzliche grafische Benutzungsoberfläche (mit Swing) für die Programmlogik

• Präsentation ihres Projektes und ihrer Realisierung• mündliche Erläuterung ihrer Realisierung (hinsichtlich Fragen der Dozenten)

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 4

Page 5: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Vorgehensweise für den 3. Block

1. Recherche im Internet2. Erstellung eines Lastenhefts

• Problembeschreibung in Worten, Beschreibung der Grobfunktionalität• Sammlung von Anforderungen (Stichpunkte)

3. Analyse• Beschreibung des Geschäftsprozesses (use cases)• Welche Akteure spielen eine Rolle?• Welche Stammdaten werden benötigt?

4. Erstellung eines BlueJ Projekts mit folgender Package Struktur• Eigenes Package für das Datenmodell (Stammdaten)• Eigenes Package für die grafische Benutzeroberfläche (Dummy für NetBeans)

5. Erstellung eines Klassendiagramms für das Datenmodell mit BlueJ6. Programmierung der Klassen des Datenmodells mit NetBeans

• Get- und Set- Methoden zur späteren Speicherung der Daten in XML• Erstellung von Listen für alle Stammdaten und Buchungen

7. Testen des Datenmodells mit BlueJ

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 5

Page 6: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Vorgehensweise für den 4. Block (Ausblick – vorläufig)

• Fertigstellung der Programmierung an dem Klassenmodell

• Fertigstellung der Programmierung der Programmlogik

• Erstellung einer grafischen Oberfläche mit NetBeans (Swing)

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 6

Page 7: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Weitere Rahmenbedingungen und Tipps

• nutzen Sie zur Kommunikation in Ihrem Team die Notationsmöglichkeiten der UML (insbesondere Use-Cases, Klassendiagramme)

• die Klassendiagramme sollten detailliert sind, mit Kennzeichnung der Sichtbarkeit der Methoden (private, public etc.) sowie mit ausführlicher Spezifikation der Datentypen und Bezeichner

• dokumentieren Sie diese Diagramme elektronisch (als Teil Ihrer Projektdemonstration)

• nutzen Sie die Möglichkeiten von Javadoc um auch die Quelltexte Ihrer Realisierung zu dokumentieren

Page 8: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Recherche im Internet

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 8

Ermittlung des Datenmodells

Page 9: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Lastenheft

Ein Lastenheft enthält folgende Informationen

• Zielbestimmung

• Beschreibung des Einsatzgebietes

• Funktionsbeschreibungen

• Beschreibung der Daten (Stammdaten)

http://de.wikipedia.org/wiki/Lastenheft

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 9

Page 10: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Analyse von Softwaresystemen

• Das Ziel der Analyse ist es, die Wünsche und Anforderungen eines Auftragsgebers an ein neues Softwaresystem zu ermitteln und zu beschreiben.

• Erzeugt werden soll ein Modell des Softwaresystems, das konsistent, vollständig, eindeutig und realisierbar ist.

• Bei der Modellbildung werden alle Aspekte der Implementierung bewusst ausgeklammert.

[Lehrbuch der Objektmodellierung, H.Balzert]

Vorgehensweise• Notieren Sie sich vorab die Geschäftsprozesse des Softwaresystems.• Die Beschreibung der Geschäftsprozesse ist Teil der Projektpräsentation.

Bemerkung: Ein Geschäftsprozess besteht aus mehreren zusammenhängenden Aufgaben, die von einem Akteur durchgeführt werden, um ein Ziel zu erreichen bzw. ein gewünschtes Ergebnis zu erstellen. Zu der Dokumentation gehört die Beschreibung der Verarbeitungsschritte, die durchzuführen sind, um eine Buchung vorzunehmen.

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 10

Page 11: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Analyse Buchungssystem, OO Analyse (OOA)

• Stammdaten werden in entsprechenden Klassen festgehalten (Datenmodell)• Überlegen Sie sich, welche Klassen erstellt werden müssen• Zu jeder Klasse müssen entsprechende Attribute (Properties) definiert werden

• Akteur ist ein Mitarbeiter der Autovermietung mit folgenden Aufgaben• Stammdaten der Fahrzeuge erfassen• Stammdaten der Kunden erfassen• geeignetes Angebot finden (Fahrzeug gemäß Kundenwunsch suchen/finden)• Buchungen durchführen

• Die Aufgaben sollen über entsprechende Methoden im Programm realisiert werden

• Nach der Analyse folgt das Design und die Auswahl der Technologien…

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 11

Page 12: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Technologien, die zum Einsatz kommen sollen

• Java 1.6

• BlueJ zum Erstellen des Klassendiagramms und Testen des Datenmodells

• Programmierumgebung NetBeans

• Java Beans (Datenmodell)• Voraussetzung zum Speichern von Objekten in XML• notwendig sind Get- und Set-Methoden für alle Klassen des Datenmodells

• XML zum Speichern von Daten (Vorgabe folgt)• XMLEncoder• XMLDecoder

• Konsole• Standardausgabe auf Konsole• StdIn Klasse zum Lesen von der Konsole

• Java Swing für Grafische Benutzerschnittstelle (Teil 4 – Vorgabe folgt)• wird von NetBeans unterstützt!

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 12

Page 13: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Vorschlag zur Package-Struktur

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 13

Datenmodell (Stammdaten)

Speicherung von Objekten in XML usw. (wird vorgegeben!)

Java Swing GUI (mit NetBeans gebaut)

Page 14: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Vorschlag zum BlueJ-Klassendiagramm für Stammdaten

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 14

Page 15: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Stammdaten innerhalb des Modells

• Bean Klassen enthalten• private Attribute (realitätsnah und mindestens vier pro Klasse, z.B. für Kunde: Vorname,

Name, Adresse, Kundennummer, Geburtsdatum, Premiummitglied)• öffentliche Get- und Set-Methoden• die Methode toString()

• Weiterhin muss es eine Klasse AutovermietungStammdaten geben, die Listen für die Stammdaten sowie eine Liste für alle durchgeführten Buchungen enthält.

• Methoden zum Suchen und Sortieren über die Listen finden sich ebenfalls hier

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 15

Page 16: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Wichtig

• halten Sie sich an die vorgeschlagene Vorgehensweise

• erstellen Sie das Datenmodell mit BlueJ (Klassendateien und Packages anlegen)

• Programmieren Sie das Datenmodell mit NetBeans• Attribute definieren• Get- und Set-Methoden• Methoden, um Testdaten zu erzeugen

• Testen Sie Ihr Datenmodell in BlueJ

• Erstellung von weiteren Klassen und Methoden, die zur Programmlogik gehören

• Die Programmlogik sollte unabhängig von der Programmoberfläche sein (Stichwort Model-View-Control)

• „Oberflächen“ sind die Standard-Konsole oder eine Swing-GUI

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 16

Page 17: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Grafische Oberfläche, Vorschlag

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 17

Page 18: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Grafische Oberfläche, Vorschlag

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 18

Page 19: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Grafische Oberfläche, Vorschlag

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 19

Page 20: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Programmablauf, Vorschlag

• Zusammenstellung der Stammdaten für• Fahrzeuge• Kunden

• Suchen eines bestimmten Fahrzeugs, dass den Wünschen des Kunden entspricht

• Buchung des selektierten Fahrzeug auf einen Kunden• Liste von Buchungen erstellen (Kasse)

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 20

Page 21: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Programmfunktionen, Vorschlag

• Erfassung von Stammdaten• Fahrzeuge• Kunden

• Übersicht über alle Stammdaten

• Suchen über erfassten Fahrzeuge anhand der Kategorie und des Wagentyps

• Buchung eines Fahrzeugs auf einen Kunden

• Übersicht über alle Buchungen

• Speichern der Stammdaten in XML, Laden der Stammdaten aus XML

• Speichern der Buchungen in XML, Laden der Buchungsdaten aus XML

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 21

Page 22: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Referenzen, Minimalbeispiel einer Klasse des Datenmodells

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 22

Page 23: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Referenzen, Abspeichern von Objekten in XML 1/2

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 23

/* * HTW, Java Programmierpraktikum WI */

package utils; // Package Bezeichnungimport java.io.*; // IO Packageimport java.beans.*; // Beans Package

/** * Beispiel einer Util-Klasse zum Serialisieren von Objekten nach XML. * * @author Abawi, Fourman * @version 0.1 */public class BeispielSerialisieren { /** * Serialisierung nach XML * @throws java.io.IOException */ public static void saveToXml(Object obj) throws IOException { XMLEncoder o = new XMLEncoder( new FileOutputStream("bsp.xml") ); o.writeObject("HTWdS, Programmierpraktikum WI"); o.writeObject(obj); o.close(); }

Page 24: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Referenzen, Abspeichern von Objekten in XML 2/2

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 24

/** * De-serialisierung aus XML * @throws java.io.IOException */ public static Object loadFromXml() throws IOException { XMLDecoder o = new XMLDecoder( new FileInputStream("bsp.xml") ); o.readObject(); // HTW Kommentar rauslesen. Object obj = o.readObject(); o.close(); return obj; }

public static void main(String args[]) { model.BeispielKunde k = new model.BeispielKunde(); k.setVorname("Fritz"); k.setNachname("Meier"); try { saveToXml(k); } catch(java.io.IOException ioe) { ioe.printStackTrace(); } }}

Page 25: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Benötigte Sprachelemente

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3 25

• String Verarbeitung (Wiederholung)• Methode equals() vergleicht zwei Zeichenketten miteinander

Page 26: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Danke für Ihre Aufmerksamkeit!

Fragen und (hoffentlich) Antworten

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3

Page 27: Programmierpraktikum Teil 3 (Version 1.0) Prof. Dr. Daniel F. Abawi Oliver Fourman

Kontakt und Sprechstunde

Prof. Dr. Daniel F. Abawi

Professur für Informatik / Wirtschaftsinformatik

Fachbereich Wirtschaftsingenieurwesen

Hochschule für Technik und Wirtschaft des Saarlandes

Waldhausweg 14

D-66123 Saarbrücken

Tel.: +49 – 681 - 5867 - 368

Fax: +49 – 681 - 5867 - 577

[email protected]

Sprechstunde: Donnerstags, 16.00 Uhr – 17.15 Uhr, im Raum B-2-5/1

*vorher Anmeldung erwünscht*

Programmierpraktikum FB WI – Prof. Dr. D. F. Abawi / O. Fourman – Teil 3