Einführung in Klassen, Objekte und in UML Klassen und Objekte mit VBS Modellierung mit UML Anwendungsfälle mit COM Objekten Java und BlueJ Christoph Oberweis 2007 Agenda C.O. Modelle und Modellierung Klassendiagramme VBScript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen 2 Agenda Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Modelle und Modellierung Klassendiagramme VBScript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen 3 Modelle: Vorwort Anwendungsprogramme und Objektorientierung Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Erst durch eine geeignete Software kann der Computer Probleme der realen Welt lösen. Hintergrund einer betriebswirtschaftlich orientierten Software sind letztlich immer Ge schäftsprozesse; dies gilt sowohl für Standardsoftware wie z. B. Officepakete als auch für Individualsoftware wie z. B. eine prozessorientierte Auftragsabwicklung eines Produktionsbetriebs. Software bildet einen Ausschnitt der realen Welt in einer Modellwelt ab. Diese Modellwelt ist (im Gegensatz zur realen Welt) auf nur die Notwendigkeiten reduziert, die benötigt werden, um die jeweiligen Probleme der betrieblichen Wirklichkeit mit Hilfe von Computern zu lösen. Modellierung ist der Transfer eines Ausschnittes der realen Welt in ein Modell. Objekte der realen Welt (Kunde, Artikel usw.) und ihre Eigenschaften (Kundennummer, Artikelbezeichnung) werden modelliert – Ergebnis dieses Prozesses sind dann beispielsweise Klassen inkl. ihrer Attribute und der ihnen zugeordneten Algorithmen (Methoden) in der Modellwelt, die dann wiederum zur Erzeugung von Objekten im Computer dienen. Der Begriff „Objekt“ ist nun allerdings als Fachbegriff der Informatik zu verstehen. Sowohl bei der Softwareentwicklung als auch bei der Nutzung dieser (z. B. Officepaket) wird man (zumindest indirekt) mit Objektorientierung konfrontiert. Diese sollte im gymnasialen Oberstufenunterricht und in Informatik – Fachklassen auch als das zugrunde liegende Konzept thematisiert werden. 4 Modelle und Modellierung Wirkliche Welt: Autohaus Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Modell: Idealisierte Darstellung (Abbildung) der realen Welt zur Veranschaulichung bestimmter Sachverhalte/Eigenschaften/Prozesse, Vereinfachung der Realität Übungen Java Quellen C.O. Das Foto ist farbig, hat einen bestimmten Maßstab, wurde aus einer bestimmten Perspektive aufgenommen usw.: Ikonisches Modell (bildhaft) Funktion dieses Modells: Möglicherweise ein Foto für einen Zeitungsbericht 5 Fortschreitende Abstraktion Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Verzicht auf Details (Farbinformation usw.): Die Darstellung wird „ungenauer“, allerdings bleiben der Standort und die Silhouette der Fahrzeuge erkennbar. Java Quellen C.O. 6 Analogmodell Modelle und Modellierung Klassendiagramme X X X X X X X X X X X X VBSript Objekte erzeugen X X X Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Lageskizze der Stellplätze: Stark vereinfachte Karte, jedes abgestellte Fahrzeug wird zu einem „X“ („Analogie“, eine noch weiterer Abstraktion von der Wirklichkeit) Übungen Java Quellen C.O. 7 Eine weitere Betrachtungsweise Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Jedes Kfz ist individuell (Fahrzeugnummer). Übungen Java Quellen C.O. 8 Es gibt Gemeinsamkeiten Modelle und Modellierung Individuelles KFZ Individuelles KFZ Individuelles KFZ Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Überlegung: Was haben alle Fahrzeuge gemeinsam: Vier Räder, Lenkrad … Java Quellen C.O. „Abstraktes Fahrzeug“: Schablone, Bauplan für die realen Fahrzeuge 9 Die Vorstufe einer Klasse Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs. So könnte der Bauplan formuliert sein: Zahlen und Texte als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse). (Eine Darstellung dieser Art wird in manchen Fachdisziplinen als symbolisches Modell bezeichnet.) 10 Von der Schablone … Eine Klasse Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Die Schablone definiert den Bauplan des Fahrzeugs (falls zusätzliche detaillierte Angaben vorliegen). Quellen C.O. 11 … zum individuellen Kfz Das Objekt Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Und so soll das individuelle Kfz aussehen! Java Quellen C.O. 12 Andere Möglichkeit! Ein anders Objekt der gleichen Klasse Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Ein anderes „Individuum“. Java Quellen C.O. 13 Schritte der Modellierung Modelle und Modellierung Wirklichkeit Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. 14 Schritte der Modellierung Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Wirklichkeit 1. Objekte, die offensichtlich den gleichen Bauplan haben, analysieren. (Hier: die Fahrzeuge, nicht die Fahnen, Verkehrsschilder usw.) Welche gemeinsamen Eigenschaften mit individueller Ausprägung (wie Farbe, Fahrzeugnummer usw.) können diese Objekte besitzen? Sequenzdiagramme Übungen Java Quellen C.O. 15 Schritte der Modellierung Modelle und Modellierung Wirklichkeit Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme 1. Objekte, die offensichtlich den gleichen Bauplan haben, analysieren. (Hier: die Fahrzeuge, nicht die Fahnen, Verkehrsschilder usw.) Welche gemeinsamen Eigenschaften mit individueller Ausprägung (wie Farbe, Fahrzeugnummer usw.) können diese Objekte besitzen? Sequenzdiagramme Übungen Java Quellen C.O. 2. Kfz Übertragung in die Modellwelt Hersteller: Text Individuelle Dinge wie z. B. Farbe = rot werden zu Attributen verallgemeinert. Hubraum: Zahl ……. Kfz: Bauplan (Vorläufer der Klasse im Sinne der OOP), der Eigenschaften festlegt. Die Attribute haben einem bestimmten Datentyp. 16 Was passiert mit den Fahrzeugen? Modelle und Modellierung Klassendiagramme Bevor die Klasse „Kfz“ fertiggestellt werden kann, muss geklärt werden, welcher Ausschnitt der reale Welt zu modellieren ist: VBSript - Produktion des Fahrzeugs? Objekte erzeugen - Verkauf des Fahrzeugs? Component Object Model - Reparatur des Fahrzeugs? - Fahrzeug verschrotten? Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Ein Autohaus ist wohl in erster Linie für die beiden mittleren Bereiche zuständig. Fragestellung (für die Verwaltung): Welche Vorgänge oder Abläufe sind von Wichtigkeit ( Geschäftsprozesse)? 17 Operationen / Methoden Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Die Modellwelt soll sich nun lediglich auf die Verwaltung (Auftragsbearbeitung, Rechnungswesen usw.) beziehen. Die MitarbeiterInnen in den angesprochen Abteilungen müssen Fahrzeuge: - erfassen - Stammdaten pflegen - Informationen ausdrucken - Teile bestellen usw. In der objektorientierten Programmierung bezeichnet man diese Tätigkeiten als Operationen oder Methoden. Sie werden in das Klassenmodell mit aufgenommen. 18 Klasse: Der letzte Schliff! Notation in UML (Unified Modeling Language) Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. VK Preis: Währung Erfassung() Ändern() Löschen() Drucken() …………… Klassenname Attribute Methoden Quellen C.O. 19 Und nochmal: Von der Klasse … „Abstrakter“ Bauplan Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. VK Preis: Währung Erfassung() Ändern() Löschen() Drucken() …………… Quellen C.O. 20 ... zum Objekt „Konkretes“ individuelles Fahrzeug Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java :Kfz Hersteller= „Daihatsu“ Typ= „Terios“ ……… Hubraum= 1495 ……… Farbe= „metallic silber“ ……. VK-Preis= 17800,00 Erfassung() Ändern() Löschen() Drucken() …………… Quellen C.O. 21 Erweiterung und Erklärung Objekt = Instanz/Exemplar einer Klasse Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. :Kfz Hersteller = „Daihatsu“ Typ= „Terios“ ……… Hubraum = 1495 Nennleistung (KW bei 6000U/min)= 77 ……… Farbe= „rot“ ……. Grundreis= 17800 Leasingsonderzahlung= … Leasingrate = …. Laufzeit= ….. Erfassung() Ändern() Löschen() Drucken() …………… Unterstrichener Klassenname, zu dem das Objekt gehört, falls das Objekt bereits einen Namen hat: MeinKfz:Kfz Attributwerte, Daten: aktueller Zustand des Objektes, er kann durch Methoden zur Laufzeit verändert werden. Merke: Jedes Objekt besitzt eine Objektidentität, diese unterscheidet es von allen anderen Objekten. Verhalten des Objektes: Menge von Operationen 22 Aufgabe 1 Modelle und Modellierung Klassendiagramme VBSript Objekte erzeugen Modellieren Sie bitte ein Kunden-Klassendiagramm! Überlegen Sie zunächst, welche Attributte/Methoden benötigt werden könnten. Erstellen Sie dann das entsprechende UMLKlassendiagramm. Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. 23 Eine Lösung Modelle und Modellierung Klassendiagramme VBSript Kunde Kunden_Nummer : integer Name : String Adresse : String ..... Objekte erzeugen Umsatz : double Component Object Model Erfassung() Ändern() Löschen() Adressaufkleber drucken() Serienbrief erstellen() Umsatz holen() Anwendungsfalldiagramme Sequenzdiagramme Hier wird noch ein wichtiger Aspekt der OOP deutlich: Der Umsatz des Kunden kann nur über eine Methode ermittelt werden, ein direkter Zugriff auf den Wert wäre zwar auch „programmierbar“ (Änderung der Codierung), entspricht aber nicht der Philosophie der OOP: Verkapselung der Daten (Geheimhaltungsprinzip). Eine Änderung oder Abfrage der Daten soll nur über die dafür definierten Methoden ermöglicht werden. Allerdings: Der Sinn dieses Prinzips wird erst bei einer komplexeren Situation wirklich einsichtig und als Vorteil empfunden. Übungen Java Quellen C.O. 24 VBScript Modelle und Modellierung Klassendiagra mme VBSript VBScript ist ein Derivat der OO Programmiersprache Visual Basic von Microsoft. Sinn einer Scriptsprache (s. auch: JavaScript) ist es nicht, größere Programmsysteme zu entwickeln oder den komplexeren Umgang mit Objekten zu realisieren. Mit Scrips werden vielmehr kleinerer Lösungen für z. B. alltäglich anfallende Tätigkeiten am Computer erstellt. Sie können aber auch in HTML Seiten eingebettet werden. Objekte erzeugen Einige Vorteile von VBScript: Component Object Model - Implementierung von Klassen (geringer Aufwand, ohne Entwicklungsumgebung) Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. - Erzeugen von Objekten - Senden von Botschaften an Objekte (Methodenaufruf, Rückgaben von Daten) - Codierung der logischen Grundstrukturen - Verfügbarkeit der COM – Komponenten in VBS - Verfügbarkeit einfacherer Dialogboxen unter Windows 25 Implementierung Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Option Explicit Class Kfz Private Hersteller Private Typ Private Hubraum Sub erfassen(her, ty, hub) Hersteller = her typ = ty Hubraum = hub End Sub Function ErmittleTyp ErmittleTyp = Typ End Function End Class Dim Auto1 Dim a Dim b Dim c Set Auto1 = new Kfz a = "Opel" b=InputBox("Bitte Kfz-Typ eingeben:") c = 1600 Auto1.Erfassen a, b, c MsgBox(Auto1.ErmittleTyp) Set Auto1 = Nothing So sieht ein komplettes Programm aus, die einzelnen Abschnitte dieser Implementierung werden auf den folgenden Seiten erklärt. Hinweis: Das Programm wird in einem einfachen Editor eingetippt und mit dem Dateierweiterungsnamen *.vbs agespeichert. Durch einen Doppelklick auf den Namen kann es sofort gestartet werden, MS Windows interpretiert den Quellcode. 26 Zuerst die Klasse Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Kfz Hersteller: Text Typ: Text Hubraum: Ganzzahl Erfassung() Typ_holen() Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. 27 Zuerst die Klasse Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Kfz Hersteller: Text Typ: Text Hubraum: Ganzzahl Erfassung() Typ_holen() Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Hinweis: Eine Typenangabe (z.B. Text, Ganzzahl) hinter dem Variablennamen gibt es in VBS nicht (anders bei VB). VBS verwaltet diese varianten Typen automatisch richtig. Option Explicit Class Kfz Private Hersteller Private Typ Private Hubraum Sub erfassen(her, ty, hub) Hersteller = her typ = ty Hubraum = hub End Sub Function ErmittleTyp ErmittleTyp = Typ End Function End Class 28 Was es sonst noch so gibt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Diese Programmzeile (immer am Anfang) bewirkt, dass alle Variablen vor ihrer Benutzung angemeldet sein müssen. Option Explicit Class Kfz Private Hersteller Private Typ Private Hubraum Sub erfassen(her, ty, hub) Hersteller = her typ = ty Hubraum = hub End Sub Function ErmittleTyp ErmittleTyp = Typ End Function Java Quellen C.O. End Class 29 Was es sonst noch so gibt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Diese Programmzeile (immer am Anfang) bewirkt, dass alle Variablen vor ihrer Benutzung angemeldet sein müssen. Private bedeutet, dass der Wert dieser Variable nur von Methoden der Klasse verändert werden darf. Option Explicit Class Kfz Private Hersteller Private Typ Private Hubraum Sub erfassen(her, ty, hub) Hersteller = her typ = ty Hubraum = hub End Sub Function ErmittleTyp ErmittleTyp = Typ End Function Java Quellen C.O. End Class 30 Was es sonst noch so gibt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Diese Programmzeile (immer am Anfang) bewirkt, dass alle Variablen vor ihrer Benutzung angemeldet sein müssen. Private bedeutet, dass der Wert dieser Variable nur von Methoden der Klasse verändert werden darf. Sub: Methoden der Klasse, mit der die Werte der Variablen verändert werden dürfen. In den Klammern (=Schnittstelle) stehen Variablen (her …), sie dienen dem Datenaustausch zwischen dem eigentlichen Programm und der Methode. Option Explicit Class Kfz Private Hersteller Private Typ Private Hubraum Sub erfassen(her, ty, hub) Hersteller = her typ = ty Hubraum = hub End Sub Function ErmittleTyp ErmittleTyp = Typ End Function Java Quellen C.O. End Class 31 Was es sonst noch so gibt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Diese Programmzeile (immer am Anfang) bewirkt, dass alle Variablen vor ihrer Benutzung angemeldet sein müssen. Private bedeutet, dass der Wert dieser Variable nur von Methoden der Klasse verändert werden darf. Sub: Methoden der Klasse, mit der die Werte der Variablen verändert werden dürfen. In den Klammern (=Schnittstelle) stehen Variablen (her …), sie dienen dem Datenaustausch zwischen dem eigentlichen Programm und der Methode. Kennzeichnung: Hier endet diese Methode. Option Explicit Class Kfz Private Hersteller Private Typ Private Hubraum Sub erfassen(her, ty, hub) Hersteller = her typ = ty Hubraum = hub End Sub Function ErmittleTyp ErmittleTyp = Typ End Function Java Quellen C.O. End Class 32 Was es sonst noch so gibt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Diese Programmzeile (immer am Anfang) bewirkt, dass alle Variablen vor ihrer Benutzung angemeldet sein müssen. Private bedeutet, dass der Wert dieser Variable nur von Methoden der Klasse verändert werden darf. Sub: Methoden der Klasse, mit der die Werte der Variablen verändert werden dürfen. In den Klammern (=Schnittstelle) stehen Variablen (her …), sie dienen dem Datenaustausch zwischen dem eigentlichen Programm und der Methode. Kennzeichnung: Hier endet diese Methode. Function: Auch eine Methode. „Function“ gibt an, dass diese Methode einen Wert an das rufende Programm zurückgibt. Kennzeichnung: Hier endet diese Klasse. Option Explicit Class Kfz Private Hersteller Private Typ Private Hubraum Sub erfassen(her, ty, hub) Hersteller = her typ = ty Hubraum = hub End Sub Function ErmittleTyp ErmittleTyp = Typ End Function End Class 33 Und nun das Objekt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Dim (vgl. Private bei der Klasse): Hier werden die Variablen angemeldet. Dim Dim Dim Dim Auto1 a b c Set Auto1 = new Kfz a = "Opel" b=InputBox("Bitte Kfz-Typ eingeben:") c = 1600 Auto1.Erfassen a, b, c MsgBox(Auto1.ErmittleTyp) Set Auto1 = Nothing Quellen C.O. 34 Und nun das Objekt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Dim (vgl. Private bei der Klasse): Hier werden die Variablen angemeldet. Das 1. „Highlight“ dieses Programms: Erzeugung des Objektes Auto1(„Instanz“ der Klasse Kfz) während der Laufzeit. Dim Dim Dim Dim Auto1 a b c Set Auto1 = new Kfz a = "Opel" b=InputBox("Bitte Kfz-Typ eingeben:") c = 1600 Auto1.Erfassen a, b, c MsgBox(Auto1.ErmittleTyp) Set Auto1 = Nothing Quellen C.O. 35 Und nun das Objekt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Dim (vgl. Private bei der Klasse): Hier werden die Variablen angemeldet. Das 1. „Highlight“ dieses Programms: Erzeugung des Objektes Auto1(„Instanz“ der Klasse Kfz) während der Laufzeit. Wertezuweisung: a) direkt im Programm b) Mit Dialogbox Dim Dim Dim Dim Auto1 a b c Set Auto1 = new Kfz a = "Opel" b=InputBox("Bitte Kfz-Typ eingeben:") c = 1600 Auto1.Erfassen a, b, c MsgBox(Auto1.ErmittleTyp) Set Auto1 = Nothing Quellen C.O. 36 Und nun das Objekt … Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Dim (vgl. Private bei der Klasse): Hier werden die Variablen angemeldet. Das 1. „Highlight“ dieses Programms: Erzeugung des Objektes Auto1(„Instanz“ der Klasse Kfz) während der Laufzeit. Wertezuweisung: a) direkt im Programm Das „2. Highlight“: Senden von Botschaften an das Objekt. Allgemein: Objekt.Methode param1, param2 (param1/param2: Schnittstellenparameter) Java Quellen C.O. b) Mit Dialogbox Dim Dim Dim Dim Auto1 a b c Set Auto1 = new Kfz a = "Opel" b=InputBox("Bitte Kfz-Typ eingeben:") c = 1600 Auto1.Erfassen a, b, c MsgBox(Auto1.ErmittleTyp) Set Auto1 = Nothing Objekt löschen. 37 Programmtest Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Dialogbox 1: Dateneingabe Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Daialogbox 2: Java Ausgabe des Kfz –Typs Quellen C.O. 38 Hinweise für Insider Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Der saloppe Umgang mit Prozeduren, Funktionen, der Parameterübergabe und den return-Werten mag Personen mit Erfahrung in einer imperativen Programmiersprache (Pascal, C …) verwundern, möglicherweise sogar entsetzen. Moderne Lehrbücher der Informatik legen den Schwerpunkt der Einführung in die Programmierung auf die objektorientierten Konzepte. Die Modellierung von Klassen, Objekterzeugung während der Laufzeit, das Senden von Nachrichten (darf nicht mit einem Prozeduraufruf einer rein imperativen Programmierung gleichgesetzt werden) und das Geheimhaltungsprinzip haben hier zunächst einen höheren Stellenwert als Details der Unterprogrammtechnik oder die exakte Behandlung der logischen Grundstrukturen. Quellen C.O. 39 Aufgabe 2 Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Modellieren Sie bitte ein Kunden-Klassendiagramm, welches Methoden enthält, die Sie bereits von der Codierung her realisieren können. Erstellen Sie dann das entsprechende UML-Klassendiagramm und codieren Sie dies bitte in VBS. Führen Sie dann Programmtests durch! Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. 40 Lösung Aufgabe 2 Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Option Explicit Class Kunde Private Kundennummer Private V_N_Name Private Umsatz Sub erfassen(Kn, Vn, Um) Kundennummer = Kn V_N_Name = Vn Umsatz = Um End Sub Function ErmittleKunde ErmittleKunde = Kundennummer & " End Function End Class Dim Kunde1 Dim k Dim n Dim u Set Kunde1 = new Kunde k=InputBox("Kundennummer:") n=InputBox("Kundenname:") u=InputBox("Kundenumsatz:") Kunde1.Erfassen k, n, u MsgBox(Kunde1.ErmittleKunde) Set Kunde1 = Nothing " & V_N_Name & " " & Umsatz So kann erreicht werden, dass alle Kundeninformationen auf einer Dialogbox ausgegeben werden. 41 Lösung Aufgabe 2 Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Zusatzaufgaben: 1) Verändern Sie das Programm so, dass noch Führungstexte ausgegeben werden! 2) (Aufgabe nur für „Experten“) Gehen Sie bitte davon aus, dass ein zusätzliches Datenfeld mit der Aufsummierung der Umsätze aller vorherigen Jahre (ohne das aktuelle Jahr) in der Klasse vorhanden ist. Es soll bei der Ausgabe ein Gesamtsummenfeld (die alten Umsätze + Umsatz des aktuellen Jahres) angezeigt werden. Wie kann das Problem gelöst werden? (Tipp: MsgBox Daten sind immer Zeichenketten, keine Zahlen. Hier ist wie z. B. in der Programmiersprache Delphi eine Typenumformung notwendig.) Quellen C.O. 42 Lösung Aufgabe 2 (Zusatzaufgaben) Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Option Explicit Class Kunde Private Kundennummer Private V_N_Name Private Umsatz Private Umsatz_alt Sub erfassen(Kn, Vn, Um, Ua) Kundennummer = Kn V_N_Name = Vn Umsatz = Um Umsatz_alt = ua End Sub Function ErmittleKunde dim Umges Umges = CDbl(Umsatz) + CDbl(Umsatz_alt) ErmittleKunde = "K-Nummer: " & Kundennummer & „ Name: " & V_N_Name & " Gesamzumsatz:" & Umges End Function End Class 43 Es kommt auf die „Methode“ an! Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Anhand dieser Lösung lässt sich verdeutlichen, dass unterschiedliche Modellierungsmöglichkeiten zum gleichen Ergebnis führen. So könnte auch eine eigene Methode „Addiere_Umsatz“ in der Klasse „Kunde“ definiert werden. Vom Hauptprogramm aus ließe sich dann über einen Methodenaufruf die entsprechende Operation durchführen. Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Aufgabenerweiterung: Modellieren Sie bitte die neue Klasse und implementieren Sie diese. Java Quellen C.O. 44 Component Object Model Modelle und Modellierung Klassendiagra mme Das Component Object Model (COM) erlaubt (u. a.) den Zugriff auf Computerdienste mit VBS. VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java In diesem Zusammenhang ist unter Komponente eine compilierte Programmdatei zu verstehen, welche i. d. R. mehrere Klassen enthält. Damit werden die entsprechenden Objekte (z. B. unter VBS, aber auch unter C++, C#, Java oder VB) erzeugt, mit denen z. B. der Zugriff auf Funktionen des Betriebssystems Windows realisiert werden kann. Die folgenden Beispiele orientieren sich an den Lehrbüchern von D. Johlen und H. Schwichtenberg (s. Quellen). Quellen C.O. 45 Das Dateisystem als Komponente Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java FileSystemObject File Drives Name DatelastModified parentFolder getFile(pfad):File moveFile(quellPfad, zielPfad) …………….. moveFile(zielPfad) …………….. Stark vereinfachte Klassenmodelle der COM – Komponente, die für das Dateisystem zuständig ist. Beispiel eines Anwendungsfalls: Eine Datei soll von einem Verzeichnis in ein anderes verschoben werden. Konkret: Die Datei „test1.txt“ im Verzeichnis c:\vz1\ soll in das Verzeichnis c:\vz2\ verschoben werden. Quellen C.O. 46 Das Dateisystem als Komponente Modelle und Modellierung Klassendiagra mme Z1 Z2 Z3 Z4 Set FSObjekt = CreateObject("Scripting.FileSystemObject") Set Datei = FSObjekt.getFile("h:\SE\test1.txt") Datei.move "h:\SX\" MsgBox "Dateien umkopiert!" VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Z1: Erzeugung des Objektes „FSObjekt“ mit der Methode CreateObject. Als Schnittstellenparameter muss die Klasse „FileSystemObject“ aus dem Paket „Scripting“ angegeben werden. Z2: Erzeugen des Objektes „Datei“ durch das Senden der Nachricht „getFile“. Z3: Senden der Nachricht „move“ (inkl. Parameter) an das Objekt „Datei“. Sowohl für das Modellieren als auch für die Erklärung eines Programms ist diese verbale Ausdrucksweise „ungeschickt“. UML kennt neben den Klassendiagrammen noch viele weitere Modellierungstechniken. Zwei wichtige Möglichkeiten werden nun vorgestellt. 47 Anwendungsfalldiagramm (Use-case) Modelle und Modellierung Bestellung eingeben Klassendiagra mme Kunde anlegen VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Bestellung ändern Akteur: Auftrags – annahme Systemgrenze Akteur: Systemverwalter Kunde löschen Die Aufgaben eines Programmsystems lassen sich mit den Anwendungsfalldiagrammen übersichtlich („auf hoher Ebene“) darstellen. Dieses Werkzeug unterstützt (u. a.) die Formulierung der Anforderungen an das System und die Überwachung iterativer Projekte zur Erstellung desselben. 48 Sequenzdiagramm Zubehörshop des Autohauses Erklärung: Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Das Sequenzdiagramm dient (u. a.) der Darstellung, wie Objekte Nachrichten austauschen. Es werden zeitliche Aspekt berücksichtigt. Quellen C.O. 49 Beispiele und Übungen Sequenzdiagramm für den Anwendungsfall „Datei verschieben“ Modelle und Modellierung Klassendiagra mme (new) FSObjekt: FileSystemObject VBSript Objekte erzeugen Component Object Model getFile(…) Anwendungsfalldiagramme Sequenzdiagramme Durch getFile wurde ein neues Objekt erzeugt! FSObjekt: FileSystemObject move(…) Übungen Java Folge: Datei ist verschoben! Quellen C.O. 50 Beispiele und Übungen Nochmals zurück zur Klasse „File“: Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java File Name DatelastModified parentFolder moveFile(zielPfad) …………….. Aufgabe 3: Auf das Attribut DatelastModified kann direkt (ohne Methode) zugegriffen werden. Erstellen Sie bitte ein Script, welches das Datum der letzten Änderung einer beliebigen Datei in einem beliebigen Verzeichnis ermittelt und ausgibt. Entwerfen Sie bitte zuerst das entsprechende Sequenzdiagramm. Quellen C.O. 51 Script-Lösung der Aufgabe 3 Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Set FSObjekt = CreateObject("Scripting.FileSystemObject") Set Ordner = FSObjekt.getFolder("h:\SE\") Set Dateien = Ordner.files Set Datei = Dateien.item("test1.txt") MsgBox "Datum des letzten Zugriffs: " & Datei.dateLastModified Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. 52 Programmerweiterung Aufgabe 3 Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme In Anlehnung an das 1. VBS - Programm dieser Präsentation könnte die Aufgabenstellung dergestalt erweitert werden, dass über eine Dialogbox zunächst einmal das Dateiverzeichnis und der Dateiname eingegeben werden und dann die Zugriffe auf die COM - Komponenten erfolgen. Dateneingabe und COM Zugriffe könnten jeweils gekapselt werden. Die Erstellung von Klassendiagrammen und eines Sequenzdiagramms wäre der erste Schritt zur Entwicklung einer Lösung. Sequenzdiagramme Übungen Java Quellen C.O. 53 Abspeichern in eine Datei Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Set Set Set Set meinFSO = CreateObject("Scripting.FileSystemObject") meinOrdner = meinFSO.getFolder("h:\SE\") meineDateien = meinOrdner.files meineDoku = meinFSO.CreateTextFile("h:\SE\doku.txt") meineDoku.writeLine "Projekt-Ordner" meineDoku.writeLine For Each datei In meineDateien meineDoku.writeLine datei.name & " , zuletzt geändert: " & datei.dateLastModified meineDoku.writeLine Next meineDoku.Close MsgBox "Doku-Datei erzeugt!" Aufgabe 4: Untersuche Sie bitte diesen Quellcode. Formulieren Sie zu dieser Lösung die Aufgabenstellung. Wie sieht das entsprechende Sequenzdiagramm aus? Quellen C.O. 54 Weitere Übungen Modelle und Modellierung Klassendiagra mme Zurück zu dem Autohaus: Zur Erstellung von Rechnungen könnten Klassendiagramme erstellt und in VBS codiert werden. VBSript Objekte erzeugen Hinweise: Component Object Model In dieser Lerneinheit wird die Thematik „Beziehungen zwischen Klassen“ nicht behandelt. Die oben stehende Aufgabe kann der Vorbereitung auf diese Modellierungsmöglichkeit dienen. Anwendungsfalldiagramme Sequenzdiagramme Übungen An dieser Stelle ist es sinnvoll, die ereignisgesteuerte Programmierung vorzustellen und einen Wechsel der Programmiersprache vorzunehmen. Selbstverständlich müssen nun Themen wie Privat/Public – Variablen, Prozeduren und Funktionen, Parameter, Call by value/reference usw. ausführlich behandelt werden. Java Quellen C.O. 55 Jetzt kommt Java: OO Modellierung ohne Kompromisse Modelle und Modellierung Klassendiagra mme public class Kfz { private String Hersteller; private String Typ; private int Hubraum; public Kfz(int Hub) { Hersteller = "Opel"; Typ = "Astra"; Hubraum = Hub; } VBSript Objekte erzeugen Component Object Model public int gibHubraum() { return Hubraum; } Anwendungsfalldiagramme Sequenzdiagramme public void Ausgabe_Kfz() { System.out.println(Hersteller + "-Info"); System.out.println("Typ: " + Typ); System.out.println("Hubraum: " + Hubraum); System.out.println(); } Übungen Java Quellen C.O. Klassendefinition Daten Kunstruktor Methoden Hier: Kein Hauptprogramm! } 56 Didaktisches Entwicklungstool Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Vorteile dieses Werkzeuges: Kaum Einarbeitungszeit notwendig Läuft auf dem Java Development Kit von Sun Microsystems: Komplettes Java, nicht vereinfacht UML - ähnliche Visualisierung der Klassenstruktur Erzeugung von Objekten aus den Klassen auf Mausklick, das Schreiben eines Testrahmens ist nicht notwendig, die Methoden können direkt getestet werden Im Vordergrund stehen OO Konzepte und nicht Sprachkonstrukte einer Programmiersprache Bewährtes System, es existieren viele gute Lehrbücher 57 BlueJ-Editor Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. 58 Das Objekt wird erzeugt Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Hier: Klick mit rechter Maustaste Sequenzdiagramme Übungen Java Quellen C.O. 59 Das Objekt wird erzeugt Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Kontextmenü Sequenzdiagramme Übungen Java Quellen C.O. 60 Das Objekt wird erzeugt Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Objektname eingeben Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Konstruktor nimmt Wert entgegen (Parameterübergabe) Übungen Java Quellen C.O. 61 Das Objekt wird erzeugt Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Objekt Klasse 62 Ein zweites Objekt Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. 63 Methodenaufruf Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Rechte Maustaste: Kontextmenü für den Methodenaufruf 64 Methodenaufruf Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Anzeige des Rückgabewertes (vgl. Quelltext) 65 Methodenaufruf Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Konsolenähnliches Fenster: Falls „void Ausgabe_Kfz()“ angeklickt wurde, werden alle Attribute angezeigt (s. Quelltext). Übungen Java Quellen C.O. 66 Keine Beziehungsprobleme! Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Diese Abbildung zeigt, wie es nun weitergehen könnte: Modellierung von Beziehungen zwischen Klassen mit BlueJ. (nach Barnes, D. u. Kölling, M.: Java lernen mit BlueJ) 67 Quellen Modelle und Modellierung Klassendiagra mme VBSript Objekte erzeugen Component Object Model Anwendungsfalldiagramme Sequenzdiagramme Übungen Java Quellen C.O. Balzert, Heide: Objektorientierung in 7 Tagen.- Spektrum Verlag Balzert, Helmut: Lehrbuch Grundlagen der Informatik.- Spektrum Verlag Barnes, D. u. Kölling, M.: Java lernen mit BlueJ.- Pearson-Verlag Johlen, D.: Anwendungsentwicklung.- Holland + JosenhansVerlag Schwichtenberg, H. (u. a.): Windows Scripting.- Addison Wesley-Verlag Alle Fotos u. Abbildungen: C. Oberweis 68