Einführung in Klassen, Objekte und UML mit VBS und JAVA

Werbung
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
Herunterladen