Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmierung am WG mit Java oder VBA? Christoph Oberweis 2008 Modellierung Vergleich zweier Konzepte.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmierung am WG mit Java oder VBA? Christoph Oberweis 2008 Modellierung Vergleich zweier Konzepte."—  Präsentation transkript:

1 Programmierung am WG mit Java oder VBA? Christoph Oberweis 2008 Modellierung Vergleich zweier Konzepte

2 2 C.O. Agenda Modelle und Modellierung Quellcode: Gegenüberstellung JAVA VBA Quellen C.O. ModellierungQuellcodeJAVAVBA

3 3 C.O. Modelle und Modellierung C.O. Wirkliche Welt: Autohaus Modell: Idealisierte Darstellung (Abbildung) der realen Welt zur Veranschaulichung bestimmter Sachverhalte/Eigenschaften/Prozesse, Vereinfachung der Realität ModellierungQuellcodeJAVAVBA

4 4 C.O. Diesen da... C.O. ModellierungQuellcodeJAVAVBA

5 5 C.O.... picken wir uns mal raus… ModellierungQuellcodeJAVAVBA

6 6 C.O. …und untersuchen ihn genauer! ModellierungQuellcodeJAVAVBA

7 7 C.O. Objektive Tatsachen! C.O. Kfz Hersteller= Daihatsu Typ= Terios ……… Hubraum= 1495 ……… Farbe= metallic silber ……. VKPreis= 17800,00 konkretes individuelles Fahrzeug abstrakte Darstellung Beachte: Zu jedem Fahrzeug gehört eine Herstellerangabe eine Typenangabe usw. (Gemeinsamkeit); diese Attribute haben je nach Kfz einen unterschiedlichen Inhalt. ModellierungQuellcodeJAVAVBA

8 8 C.O. Produktion am Fließband Schablone, nach diesem Bauplan können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs. ModellierungQuellcodeJAVAVBA

9 9 C.O. Produktion am Fließband Schablone, nach diesem Bauplan können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs. Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. So könnte der Bauplan formuliert sein: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse). ModellierungQuellcodeJAVAVBA

10 10 Was passiert mit den Fahrzeugen? C.O. Bevor die Klasse Kfz fertiggestellt werden kann, muss geklärt werden, welcher Ausschnitt der reale Welt zu modellieren ist: - Produktion des Fahrzeugs? - Verkauf des Fahrzeugs? - Reparatur des Fahrzeugs? - Fahrzeug verschrotten? 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)? ModellierungQuellcodeJAVAVBA

11 11 C.O. Operationen / Methoden 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. ModellierungQuellcodeJAVAVBA

12 12 C.O. Klasse: Fertig! C.O. Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. VKPreis: Währung Erfassung() Ändern() Löschen() Drucken() …………… Klassenname Attribute Methoden Notation in UML (Unified Modeling Language) ModellierungQuellcodeJAVAVBA

13 13 C.O. Von der Klasse … C.O. Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl ……… Farbe: Text ……. VKPreis: Währung Erfassung() Ändern() Löschen() Drucken() …………… Abstrakter Bauplan ModellierungQuellcodeJAVAVBA

14 14 C.O.... zum Objekt C.O. :Kfz Hersteller= Daihatsu Typ= Terios ……… Hubraum= 1495 ……… Farbe= metallic silber ……. VKPreis= 17800,00 Erfassung() Ändern() Löschen() Drucken() …………… Konkretes individuelles Fahrzeug ModellierungQuellcodeJAVAVBA

15 15 C.O. Die grundsätzliche Struktur: Eigentlich ja ganz einfach! Option Explicit Sub quadrate_add() Dim a As Integer Dim b As Integer Dim c As Double a = 3 b = 4 c = (a * a) + (b * b) MsgBox ("a² + b² = " & c) End Sub Option Explicit Sub quadrate_add() Dim a As Integer Dim b As Integer Dim c As Double a = 3 b = 4 c = (a * a) + (b * b) MsgBox ("a² + b² = " & c) End Sub { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } ModellierungQuellcodeJAVAVBA

16 16 C.O. Leider doch nicht! Option Explicit Sub quadrate_add() Dim a As Integer Dim b As Integer Dim c As Double a = 3 b = 4 c = (a * a) + (b * b) MsgBox ("a² + b² = " & c) End Sub Option Explicit Sub quadrate_add() Dim a As Integer Dim b As Integer Dim c As Double a = 3 b = 4 c = (a * a) + (b * b) MsgBox ("a² + b² = " & c) End Sub { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } funktioniert! funktioniert so noch nicht! ModellierungQuellcodeJAVAVBA

17 17 C.O. public class quad_add { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } Da fehlt noch etwas: Probleme mit JAVA: Ohne Klasse läuft nichts! ModellierungQuellcodeJAVAVBA

18 18 C.O. public class quad_add { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } Probleme mit JAVA: Ohne Klasse läuft nichts! Da fehlt noch etwas: ModellierungQuellcodeJAVAVBA

19 19 C.O. public class quad_add { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } Probleme mit JAVA: Ohne Klasse läuft nichts! Da fehlt noch etwas: Ohne main läuft nichts! Ohne Konstruktor macht alles keinen Sinn! ModellierungQuellcodeJAVAVBA

20 20 C.O. public class quad_add { private int a; private int b; private double c; public void Quad_add_rech() { a = 3; b = 4; c = (a * a) + (b * b); System.out.println("a² + b² = " + c); System.out.println(); } Probleme mit JAVA: Ohne Klasse läuft nichts! Da fehlt noch etwas: Ohne main läuft nichts! Ohne Konstruktor macht alles keinen Sinn! Und es kommt noch schlimmer: Eingabe über Tastatur verlangen mehr Hintergrundwissen. Arrays funktionieren nur objekt- orientiert! Stringfunktionen gibt es nicht, die Entsprechungen sind ebenfalls Klassenmethoden! ModellierungQuellcodeJAVAVBA

21 21 C.O. Back to the Roots: class HelloWorld { public static void main(String[] args) { System.out.print(Hello world!); } class HelloWorld { public static void main(String[] args) { System.out.print(Hello world!); } ModellierungQuellcodeJAVAVBA

22 22 C.O. class HelloWorld { public static void main(String[] args) { System.out.print(Hello world!); } class HelloWorld { public static void main(String[] args) { System.out.print(Hello world!); } Sinn der main-Methode ist es nicht, Programmcode abzuhandeln! Vergleichbar wäre dies etwa mit dem Argument, man könne in PASCAL völlig auf die While- Konstruktion verzichten - mit Goto lässt sich ja auch eine Schleife realisieren. In Assembler geht es ja eh nicht anders! Was soll also der ganze Quatsch? Back to the Roots: ModellierungQuellcodeJAVAVBA

23 23 C.O. class HelloWorld { public static void main(String[] args) { System.out.print(Hello world!); } class HelloWorld { public static void main(String[] args) { System.out.print(Hello world!); } Sinn der main-Methode ist es nicht, Programmcode abzuhandeln! Vergleichbar wäre dies auch mit dem Argument, man könne auf das Benzin im Tank verzichten und fährt mit dem Strom der Batterie - die Lichtmaschine funktioniert ja auch als Motor! Back to the Roots? ModellierungQuellcodeJAVAVBA

24 24 C.O. Aber nun im Ernst: Während PASCAL, LOGO und BASIC (nicht MS-Visual Basic) aus didaktischen Erwägungen erfunden wurden, handelt es sich bei JAVA um ein professionelles Entwicklungstool, welches als wichtigstes Ziel hat, sauber (aber auch streng) objektorientiert große Systeme zu realisieren. Modularisierung und Wiederverwendbarkeit (aber nicht funktionsorientiert so wie C und PASCAL) sind wichtige Konzepte dieses Ansatzes. Fragen der Programmierlogik sind dem untergeordnet. Dies hat viel mit dem Siegeszug der grafischen Benutzeroberflächen zu tun: Ereignissteuerung und Zugriffe auf moderne Betriebssysteme lassen sich mit den logischen Grundstrukturen nicht codieren: Bibliotheken und APIs sind heute völlig anders konstruiert. Während PASCAL, LOGO und BASIC (nicht MS-Visual Basic) aus didaktischen Erwägungen erfunden wurden, handelt es sich bei JAVA um ein professionelles Entwicklungstool, welches als wichtigstes Ziel hat, sauber (aber auch streng) objektorientiert große Systeme zu realisieren. Modularisierung und Wiederverwendbarkeit (aber nicht funktionsorientiert so wie C und PASCAL) sind wichtige Konzepte dieses Ansatzes. Fragen der Programmierlogik sind dem untergeordnet. Dies hat viel mit dem Siegeszug der grafischen Benutzeroberflächen zu tun: Ereignissteuerung und Zugriffe auf moderne Betriebssysteme lassen sich mit den logischen Grundstrukturen nicht codieren: Bibliotheken und APIs sind heute völlig anders konstruiert. ModellierungQuellcodeJAVAVBA

25 25 C.O. Ein Ausweg? class HelloWorld { HelloWorld() { System.out.print("Hello world!"); } public static void main(String[] args) { new HelloWorld(); } } ModellierungQuellcodeJAVAVBA

26 26 C.O. Ein Ausweg? class HelloWorld { HelloWorld() { System.out.print("Hello world!"); } public static void main(String[] args) { new HelloWorld(); } } Von der OOP her gesehen: Schon besser, aber was passiert hier? Enthält die Applikationsklasse eine Methode, in der eine Instanz von sich selbst erzeugt wird Rekursion??? ModellierungQuellcodeJAVAVBA

27 27 C.O. Was sagt die Didaktik? 1. Zunächst völliger Verzicht auf den main – Mechanismus: Es ist eher schwierig, in Zeiten von feudalen grafikorientierten Benützeroberflächen Programmieranfänger von der Notwendigkeit des Programmierens und der Schönheit einer Programmiersprache zu überzeugen, wenn in einer zeilenorientierten Betriebs­system­umgebung editiert, compiliert und Kommandozeilen-Programme, wie Hello-World diskutiert und ausführt werden. Viel motivierender ist es, bereits zu Beginn einfache Hilfsklassen einzusetzen, damit die Java-Programme automatisch mit einem GUI-Fenster ausgestattet werden. ( ) 2. Dadurch lässt sich ein eher einfacher Zugang zum Klassenkonzept finden. 3. Programme können einfach getestet werden, Hinweis: Nach wie vor gilt der Satz: Ohne Klassen spielt sich nichts ab! ModellierungQuellcodeJAVAVBA

28 28 C.O. BlueJ: Didaktisches Entwicklungstool C.O. Einige Vorteile dieses Werkzeuges: Kaum Einarbeitungszeit notwendig Läuft auf dem Java Development Kit von Sun Microsystems: Komplettes Java, nicht vereinfacht Erzeugung von Objekten aus den Klassen auf Mausklick, die Methoden können direkt ge- testet werden Zunächst einfache und leicht realisierbare Annäherung an das Klassen/Objekt-Konzept; erklärt werden muss nur die einfachste Form der Parameterübergabe. Einige Vorteile dieses Werkzeuges: Kaum Einarbeitungszeit notwendig Läuft auf dem Java Development Kit von Sun Microsystems: Komplettes Java, nicht vereinfacht Erzeugung von Objekten aus den Klassen auf Mausklick, die Methoden können direkt ge- testet werden Zunächst einfache und leicht realisierbare Annäherung an das Klassen/Objekt-Konzept; erklärt werden muss nur die einfachste Form der Parameterübergabe. ModellierungQuellcodeJAVAVBA

29 29 C.O. BlueJ ModellierungQuellcodeJAVAVBA

30 30 C.O. BlueJ ModellierungQuellcodeJAVAVBA

31 31 C.O. Und der Konstruktor bringt so richtig Schwung ins Programm… ModellierungQuellcodeJAVAVBA

32 32 C.O. Eingabe ModellierungQuellcodeJAVAVBA

33 33 C.O. Es klappt! Und nun kann nach Herzenslust strukturiert programmiert werden! ModellierungQuellcodeJAVAVBA

34 34 C.O. Und der Haken … Formatierte Ausgaben oder ereignisgesteuerte Dialoge sind nicht so einfach umzusetzen! Modularisiert wird nicht nach dem Prozedur/Funktionskonzept, sondern nach dem Klassenkonzept. Das bedeutet, dass man sich relativ früh auch mit Aspekten der Objektbeziehungen (Assoziation, Vererbung) auseinander- setzen muss! Fazit: Ohne Objektorientierung läuft eben nichts! Formatierte Ausgaben oder ereignisgesteuerte Dialoge sind nicht so einfach umzusetzen! Modularisiert wird nicht nach dem Prozedur/Funktionskonzept, sondern nach dem Klassenkonzept. Das bedeutet, dass man sich relativ früh auch mit Aspekten der Objektbeziehungen (Assoziation, Vererbung) auseinander- setzen muss! Fazit: Ohne Objektorientierung läuft eben nichts! ModellierungQuellcodeJAVAVBA

35 35 C.O. VBA wirkt einfacher … Hinweis: Hier fehlen noch die Kommentare, Leerzeilen, Einrückungen usw. im Sinne einer sauberen Dokumentation. ModellierungQuellcodeJAVAVBA

36 36 C.O. Und es wird noch besser… ModellierungQuellcodeJAVAVBA

37 37 C.O. … erinnert an gotoXY… Hinweis: Die Var-Deklaration wurde hier gelöscht, damit der Quellcode auf eine Seite passt! ModellierungQuellcodeJAVAVBA

38 38 C.O. Quellen HELD, B. (2000): EXCEL-VBA-Programmierung. – Mark und Technik-Verlag BARNES, D. u. KÖLLING, M. (2006): Java lernen mit BlueJ.- Pearson-Verlag MARTIN, R. (2005): OpenOffice-Programmierung. – Hanser-Verlag


Herunterladen ppt "Programmierung am WG mit Java oder VBA? Christoph Oberweis 2008 Modellierung Vergleich zweier Konzepte."

Ähnliche Präsentationen


Google-Anzeigen