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

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

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

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

Programmierung am WG mit Java oder VBA?

Christoph Oberweis 2008

Modellierung

Vergleich zweier Konzepte

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

2C.O.

Agenda

Modelle und Modellierung

Quellcode: Gegenüberstellung

JAVA

VBA

Quellen

C.O. Modellierung Quellcode JAVA VBA

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

3C.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

Modellierung Quellcode JAVA VBA

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

4C.O.

Diesen da ...

C.O. Modellierung Quellcode JAVA VBA

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

5C.O.

C.O.

... picken wir uns mal raus…

Modellierung Quellcode JAVA VBA

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

6C.O.

C.O.

…und untersuchen ihn genauer!

Modellierung Quellcode JAVA VBA

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

7C.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.

Modellierung Quellcode JAVA VBA

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

8C.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.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

Modellierung Quellcode JAVA VBA

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

9C.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.

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: TextTyp: 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).

So könnte der Bauplan formuliert sein: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse).

Modellierung Quellcode JAVA VBA

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

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)? Modellierung Quellcode JAVA VBA

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

11C.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.

In der objektorientierten Programmierung bezeichnet man diese Tätigkeiten als Operationen oder Methoden. Sie werden in das Klassenmodell mit aufgenommen.

Modellierung Quellcode JAVA VBA

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

12C.O.

Klasse: Fertig!

C.O.

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….VKPreis: Währung

Erfassung()Ändern()Löschen()Drucken()……………

Klassenname

Attribute

Methoden

Notation in UML (Unified Modeling Language)

Modellierung Quellcode JAVA VBA

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

13C.O.

Von der Klasse …

C.O.

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….VKPreis: Währung

Erfassung()Ändern()Löschen()Drucken()……………

„Abstrakter“ Bauplan

Modellierung Quellcode JAVA VBA

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

14C.O.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

Modellierung Quellcode JAVA VBA

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

15C.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();

}

}

Modellierung Quellcode JAVA VBA

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

16C.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!

Modellierung Quellcode JAVA VBA

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

17C.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!

Modellierung Quellcode JAVA VBA

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

18C.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:

Modellierung Quellcode JAVA VBA

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

19C.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!

Modellierung Quellcode JAVA VBA

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

20C.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!

Modellierung Quellcode JAVA VBA

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

21C.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!“);

}

}

Modellierung Quellcode JAVA VBA

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

22C.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 <Sprungmarke> 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:

Modellierung Quellcode JAVA VBA

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

23C.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?

Modellierung Quellcode JAVA VBA

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

24C.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“.

Modellierung Quellcode JAVA VBA

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

25C.O.

Ein Ausweg? class HelloWorld{  HelloWorld()  {    System.out.print("Hello world!");  }

  public static void main(String[] args)  {    new HelloWorld();  }}

class HelloWorld{  HelloWorld()  {    System.out.print("Hello world!");  }

  public static void main(String[] args)  {    new HelloWorld();  }}

Modellierung Quellcode JAVA VBA

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

26C.O.

Ein Ausweg? class HelloWorld{  HelloWorld()  {    System.out.print("Hello world!");  }

  public static void main(String[] args)  {    new HelloWorld();  }}

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???

Modellierung Quellcode JAVA VBA

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

27C.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.“ (http://taurus.phbern.ch/ebul3/javaeinstieg)

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!

Modellierung Quellcode JAVA VBA

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

28C.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.

Modellierung Quellcode JAVA VBA

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

29C.O.

BlueJ

Modellierung Quellcode JAVA VBA

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

30C.O.

BlueJ

Modellierung Quellcode JAVA VBA

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

31C.O.

Und der Konstruktor bringt so richtig Schwung ins Programm…

Modellierung Quellcode JAVA VBA

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

32C.O.

„Eingabe“

Modellierung Quellcode JAVA VBA

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

33C.O.

„Es klappt!“

Und nun kann nach Herzenslust strukturiert programmiert werden!

Modellierung Quellcode JAVA VBA

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

34C.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!

Modellierung Quellcode JAVA VBA

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

35C.O.

VBA wirkt einfacher …

Hinweis: Hier fehlen noch die Kommentare, Leerzeilen, Einrückungen usw. im Sinne einer sauberen Dokumentation.

Modellierung Quellcode JAVA VBA

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

36C.O.

Und es wird noch besser…

Modellierung Quellcode JAVA VBA

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

37C.O.

… erinnert an gotoXY…

Hinweis: Die Var-Deklaration wurde hier gelöscht, damit der Quellcode auf eine Seite passt!

Modellierung Quellcode JAVA VBA

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

38C.O.

Quellen

http://taurus.phbern.ch/ebul3/javaeinstieg

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