2 Objektorientierte Systementwicklung

Werbung
Objektorientierte Systementwicklung
2
Objektorientierte Systementwicklung
2.1
Von der strukturierten Programmierung zum
objektorientierten Softwaredesign
Vorbemerkung zum methodischen Vorgehen.
Viele Wege führen
nach Rom (ROM)
Der Autor dieses Buches hat sich entschieden, in die Thematik der „echten“ Objektorientierung erst dann einzusteigen, wenn der Anwender die Grundlagen der
strukturierten Programmierung beherrscht.
Wohl wissend, dass es andere methodische
Ansätze gibt (Viele Wege führen nach Rom),
wird in diesem Kapitel so vorgegangen, dass
grundlegende Programmstrukturen (lineare
Strukturen, Auswahlanweisungen und Wiederholungsanweisungen) mit Java/Eclipse1
erarbeitet werden und erst in einem weiteren
Schritt Objekte aus deren Klassen „entstehen“.
So erklärt sich die Überschrift dieses Abschnitts, in dem versucht wird, softwareübergreifende Programmstrukturen zu erarbeiten, objektorientiert zu programmieren und erst in einem weiteren Schritt mit der grafischen Benutzeroberfläche
von Eclipse zum Softwaredesign überzugehen.
Vorab eine wichtige Adresse, die Ihnen vor allem dann hilft, wenn Sie am PC
sitzen und sich vor Verzweiflung die Haare raufen. Es ist eine lexikalische Auflistung, zusammengestellt vom Max-Planck-Institut.
www.mpi-inf.mpg.de/departments/d5//teaching/ss05/is05/java/GoToJava2.2/
html/index_i.html#ixb100574
2.1.1
Von der Problemstellung zum Algorithmus
Bereits im Band für die Eingangsklasse wurde ein Computer als ein technisches
Gerät bezeichnet, das Informationen automatisch verarbeiten und speichern
kann. Im Unterschied z. B. zu einem normalen Automaten, wie einem Getränkeautomaten, der nur festgelegte Aktionen ausführt, kann dem Computer die Vorschrift, nach der er arbeiten soll, jeweils neu vorgegeben werden.
1
Eclipse ist nicht nur ein Softwareprodukt. Es war in den 30er Jahren ein Pkw-Statussymbol von Peugeot.
Weltweit ist noch die Existenz von 34 dieser Peugeot-401-Eclipse-Modellen bekannt.
468871
71
72
Objektorientierte Systementwicklung
Eine solche Handlungsvorschrift heißt Algorithmus.
Bevor aber überhaupt ein Computer zum Einsatz kommt, beginnt die Arbeit mit
einer Problemstellung. Hier wird in allgemeinen Formulierungen beschrieben,
was ein Computer überhaupt tun soll. Danach wird in einem weiteren Schritt
die Problemstellung in einer Problemanalyse konkretisiert. Erst danach erfolgt
die eigentliche Arbeit am Gerät, nämlich die Übertragung der Ergebnisse der
Problemanaylse in ein maschinenverständliches Konzept, die Programmierung,
moderner ausgedrückt: Softwaredesign.
Zu Beginn ein Ausflug in die Geschichte.
Wussten Sie schon, dass das Wort Algorithmus auf den persisch-arabischen
Mathematiker und Astronom Muhammad Ibn Musa Al-Hwârizmî nach seinem
Werk „Kitab al jabr w. almuqabala“ („Regeln der Wiedereinsetzung und Reduktion“) um 825 n. Chr. zurückzuführen ist? Das Werk – es ist im Original leider nicht mehr vorhanden – behandelt algebraische Gleichungen, das indische
Zahlensystem und das Rechnen in diesem. Eine lateinische Übersetzung aus
dem 12. Jahrhundert „Algorithmi de numero Indorum“ existiert noch.1
Seit Jahrhunderten versteht man unter einem Algorithmus eine präzise, d. h. in einer festgelegten Sprache abgefasste, endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer
Verarbeitungsschritte zur Lösung einer Aufgabe.
Wie setzt man mithilfe eines Computers einen
Algorithmus um?
Ein Computer ist mittels eines Rechenwerks in der Lage, einfache Operationen in
hoher Geschwindigkeit auszuführen. Die Reihenfolge der auszuführenden Operationen wird über das Steuerwerk organisiert, wobei folgende beiden Voraussetzungen erfüllt sein müssen:
u Das zu lösende Problem muss durch Arbeitsanweisungen (Operationen) beschreibbar sein.
u Die Reihenfolge der auszuführenden Operationen muss bekannt sein.
Merke
Alle Rechenanlagen erfordern zu ihrer Handhabung ein System von Anweisungen, deren Anwendung festen Regeln unterliegt. Eine solche Folge von
präzise formulierten Anweisungen, die einen eindeutigen und vollständigen
Lösungsweg aufzeigen, bezeichnet man als Algorithmus. Den in eine Programmiersprache übersetzten Algorithmus nennt man ein Programm. Ein Programm besteht somit aus einer Folge von logisch angeordneten Programmzeilen zur Lösung eines konkreten Problems.
1
Wenn Sie mehr erfahren wollen, hier eine interessante Adresse:
www.kk.s.bw.schule.de/mathge/alhwariz.htm
468872
Von der strukturierten Programmierung zum objektorientierten Softwaredesign
Algorithmen werden mittels Programmiersprachen auf Computer übertragen. Die Darstellung eines Algorithmus‘ kann u. a. in
umgangssprachlicher Form
u im Pseudo-Code,
u in grafischer Form (Struktogramm oder Programmablaufplan [PAP]) und/oder
u in einer Programmiersprache erfolgen.
2.1.2
Vom Algorithmus zum Programm
Tipp
Nur echten Genies ist es vorbehalten, eine gegebene Problemstellung sofort
in eine Programmiersprache zu übertragen. Allen anderen wird empfohlen,
die Lösung inTeilschritten vorzunehmen, wobei sich die folgenden Schritte der
Problemanalyse bewährt haben.
1. Schritt: Problemstellung
Soll ein Programm entwickelt werden, so muss zunächst eine Problemstellung
vorliegen.
2. Schritt: Problemanalyse
Um eine vorgegebene Problemstellung programmtechnisch lösen zu können, ist es erforderlich, die gewünschten Ergebnisse (Ausgabedaten) und die dazu
vorhandenen Ausgangsdaten (Eingabedaten) genau zu
analysieren.
Dazu dient die Problemanaylse, die u. a. auf folgende
Fragen eine Antwort geben soll.
u Was soll ausgegeben werden?
Zusammenstellung der Ausgabedaten.
u Welche Daten müssen eingegeben werden?
Zusammenstellung der Eingabedaten.
u Wie sollen die Eingabedaten verarbeitet werden?
Eindeutige Darstellung des gewählten Lösungswegs.
3. Schritt: Grafische Darstellung im Struktogramm
Merke
Ein Struktogramm zeigt in grafischer Form die logische Reihenfolge der einzelnen Arbeitsschritte. Es ist somit ein nach DIN 66261 genormtes Hilfsmittel zur
Planung, Entwicklung und Dokumentation von Programmstrukturen.
Ein linearer Verlauf wird z. B. durch eine untereinander stehende Folge von Vierecken dargestellt und nach jeder Anweisung mit einer horizontalen Linie abgeschlossen.
468873
73
74
Objektorientierte Systementwicklung
4. Schritt: Codierung, d. h. Übertragung in eine Programmiersprache.
In diesem Buch wird die objektorientierte Programmiersprache Java unter der
Oberfläche von Eclipse eingesetzt.
5. Schritt: Programmtest
Der so erstellte Programmcode wird vom Computer und/oder in Form eines
Schreibtischtests auf syntaktische (formale) und/oder semantische (logische)
Fehler getestet.
6. Schritt: Dokumentation
Während der gesamten Softwareentwicklung wird jede einzelne Entwicklungsstufe dokumentiert.
2.1.3
Phasen bei der Erstellung von Softwareprojekten
468874
Von der strukturierten Programmierung zum objektorientierten Softwaredesign
2.1.4
Vom Programmcode zur Maschinensprache
Ablaufsteuerung der beschriebenen Arbeitsschritte
Folgender Klassiker der Programmierung soll verdeutlichen, wie man von einer
konkreten Problemstellung zu einem Algorithmus gelangt.
Ein spektakuläres Landgeschäft
PROBLEMSTELLUNG
Im Jahr 1627 verkauften die Indianer die Insel Manhattan für den Spottpreis
von 24,00 US-$ an einen Niederländer namens Pieter Minnewit. Dieser gründete darauf das Fort Neu-Amsterdam und jeder weiß, was seitdem daraus geworden ist.
Aber einmal abgesehen davon, dass die 24,00 US-$ für Minnewit und seine weißen Nachkommen ausgezeichnet investiert waren, hätten auch die Indianer eine
gute Verzinsung erzielt, wenn sie die 24,00 US-$ auf einem Sparkonto angelegt
hätten (was 1627 leider nicht möglich war). Unterstellen wir einmal, die Indianer
hätten das Geld zu einem Zinssatz von nur 2 % angelegt und die Zinsen und Zinseszinsen immer liegen gelassen. Auf wie viel Dollar wäre das Kapital bis heute
angewachsen?
Ausgabedaten: Endkapital im aktuellen Jahr, z. B. im Jahr 2009
Eingabedaten: Anfangskapital, Zinssatz, Anfangsjahr (hier 1627), aktuelles Jahr
468875
75
76
Objektorientierte Systementwicklung
Verarbeitung:
Rechnerisch gesehen erreicht ein Kapital K in n Jahren – wenn
die Zinsen alljährlich zum Kapital hinzuaddiert werden durch Zinseszinsen zu p % – den Endwert Kn = Kqn. Dabei ist der jährliche
Diskontfaktor q = 1 + p/100. Die Formel unserer Aufgabe lautet
daher für das Jahr 2009:1
K(2009–1627) = 24,00 · 1,02382
Bitte schätzen Sie, wie viel Dollar die
Indianer für ihren Kapitaleinsatz von
24,00 US-$ vor 382 Jahren erhalten
hätten. Wetten, auch heute bleibt den
indianischen Nachfahren nichts anderes übrig, als sich über die entgangenen
Möglichkeiten grün und blau zu ärgern.
2.2
Grundlegende Eigenschaften von Java
Warum programmieren mit Java?
Java läuft überall, in Pkws, Waschmaschinen, Verkehrsampeln, Sicherheitssystemen, im Mikrowellengerät, … unter
Windows oder Mac … Es gilt: „write once run anywhere.“
Kurz: Java ist objektorientiert und plattformunabhängig. Wenn das keine triftigen
Gründe sind!
Frage: Was hat Java mit einer indonesischen Insel zu tun?
Antwort: Nichts!
Java ist nichts anderes als die Bezeichnung einer in den USA
populären Kaffeesorte, die bei vielen Programmierern neben der
Tastatur als „Dauerbegleiter“ steht.
2.2.1
Besonderheit bei der Übersetzung und Ausführung
eines Java-Programms
Merke
Java ist eine objektorientierte Programmiersprache, die auch spezielle Möglichkeiten zur Implementierung internetbasierter, verteilter Anwendungen
bietet. Die Besonderheit von Java liegt vor allem in der Art und Weise, wie
Java-Programme übersetzt und ausgeführt werden: Java ist eine Mischung
aus interpretierter und compilierter Sprache und vereinigt die Vorteile beider
Konzepte.
1
Weitere Informationen zu den finanzmathematischen Grundlagen entnehmen Sie bitte folgender
Adresse: https://www.uni-hohenheim.de/i410a/etcompu/zinsform/finanz.htm.
468876
Grundlegende Eigenschaften von Java
Wie versteht mein Computer das von mir geschriebene Programm?
Zur Lösung dieser Ausgangsfrage gibt es verschiedene Konzepte.
Gemeinsamkeit aller Programmiersprachen ist, dass sie in die Sprache
der Maschine übersetzt werden müssen. Ein solches Übersetzprogramm ist
der Compiler. Er übersetzt ein Quellprogramm in ein Zielprogramm.
Verwandt mit einem Compiler ist ein Interpreter, der ein Programm nicht in die
Zielsprache übersetzt, sondern Schritt
für Schritt direkt ausführt.
Java kann beides!
Der Java-Quellcode wird zunächst von einem Java-Compiler übersetzt. Die Besonderheit liegt nun darin, dass der Übersetzer keinen Maschinencode erzeugt,
sondern einen plattformunabhängigen Binärcode (Bytecode). Dieser Bytecode
kann unabhängig vom Betriebssystem und Prozessor ausgeführt werden, vorausgesetzt es existiert ein Java-Interpreter für die entsprechende Rechnerplattform.
Der Java-Bytecode ist ein maschinencode ähnlicher Binärcode, der vom JavaInterpreter ausgeführt wird. Man bezeichnet den Java-Interpreter auch als Java
Virtual Machine. Diese virtuelle Maschine simuliert einen fiktiven Mikroprozessor, der Befehle des Java-Bytecodes empfängt und verarbeitet wie ein realer
Mikroprozessor.
Sie können den Begriff Maschinensprache ruhig wörtlich
nehmen. Es handelt sich um
Anweisungen, die ein Computer direkt ausführen kann, die
den meisten Menschen aber
wie „Böhmische Dörfer“ vorkommen, da alle Anweisungen
in einer Folge von Dualzahlen
erstellt sind. Benutzerfreundliche Programme sind nicht in Maschinensprache
geschrieben. Somit müssen Übersetzungsprogramme eingesetzt werden.
Eine weitere Besonderheit bei der Ausführung von Java-Programmen ist die Art
und Weise, wie sie gestartet werden können. Programme der meisten anderen
Sprachen können nur auf eine Art gestartet bzw. ausgeführt werden. Bei Java
jedoch hat der Anwender zwei Möglichkeiten:
u Ausführen als Applikation: Das Java-Programm wird wie ein „normales“ Programm lokal auf dem jeweiligen Rechner gestartet und interpretiert.
u Ausführen als Applet1: Ein Applet ist ein spezielles Java-Programm, das mit einem
WWW-Browser aus dem Internet geladen wird. Typischerweise sind Java-Applets
1
Applets sind nicht Gegenstand dieses Buches.
468877
77
78
Objektorientierte Systementwicklung
in HTML (HyperText Markup Language) eingebettet. HTML ist die Sprache, mit der
alle WWW-Seiten geschrieben sind. Derjenige Rechner, der die WWW-Seite mit
dem Applet bereitstellt, wird Server genannt, der Rechner, der das Applet lädt und
ausführt, Client. Sobald das Applet auf Anforderung durch den Client vom Server
übertragen wurde, wird es automatisch als Programm innerhalb des WWW-Browsers des Clients ausgeführt.1
2.2.2
Java-Programmierung – ein Blick hinter die Kulissen
Der Entwickler schreibt den Quelltext (java-Datei), z. B.
System.out.println("Dies ist mein erstes Projekt");
Das Programm wird kompiliert, also in einen
Bytecode übersetzt (class-Dateien).
Die virtuelle Maschine interpretiert den
Bytecode und führt
ihn aus.
Edit
Compile
Run
1
vgl. Wolfgang Braun, Informatik an beruflichen Gymnasien, Eingangsklasse, Seite 35 ff.
468878
Projekterstellung mit Eclipse
Wichtiges auf einen Blick
Java-Programme werden nach ihrer Erstellung compiliert. Dabei entsteht ein
Zwischencode, der sogenannte Bytecode. Er ist nicht ausführbar, aber vollkommen unabhängig von der Hardware und dem Betriebssystem und kann
z. B. über das Internet an andere Nutzer verschickt werden. Ein Interpreter des
Nutzers übernimmt die weitere Verarbeitung.
2.3
Projekterstellung mit Eclipse
Das Software-Entwicklungswerkzeug Eclipse ermöglicht dem Benutzer bei der
Erstellung von Java-Problemlösungen zwei Vorgehensweisen:
1. Arbeiten mit der von Windows bekannten bunten Welt der Fenster, Schaltflächen,Textfelder, Farben u. v. m., also der Einsatz einer GUI = Graphical User
Interface, oder
2. zeilenweise Ein- und Ausgabe der Ergebnisse als Texte in verschiedenen
Fenstern. Das Ausgabefenster wird Konsolenfenster, kurz Konsole genannt.
Beide Möglichkeiten werden in diesem Buch vorgestellt, wobei sich der Autor
entschieden hat, zuerst mit der Eclipse-Konsole zu arbeiten.
Eclipse ist ein freies Softwareentwicklungswerkzeug, das es seit dem Jahr 2002
gibt. Es handelt sich um Open Source, also Software, die nach Belieben weitergegeben werden kann, ohne dass Lizenzgebühren anfallen. Eclipse bietet dem
Benutzer eine IDE (integrated development environment = integrierte Entwicklungsumgebung), bestehend aus
u Editor (Erstellung von Programmtexten)
u Compiler (Übersetzungsprogramm)
u Debugger (Fehlersuche)
Genug der Theorie: Es kann losgehen!
468879
79
Herunterladen