Programmierung am WG mit Java oder VBA?

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
Objektorientierte Programmierung
Einführung in Klassen, Objekte und in UML
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Imperative Programmierung -Entwicklungswerkzeuge
Objektorientierte Programmierung mit Java unter BlueJ
Objektorientierung mit VBA
Objektorientierte Programmierung mit Java unter BlueJ
Objektorientierung mit VBA
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
SWITCH - Anweisung.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Sommersemester 2003 Lars Bernard
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Einführung in Java1 Einführung in JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Modelle und Modellierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
2.4 Rekursion Klassifikation und Beispiele
Objektorientiertes Konstruieren
Optimale Ursprungsgerade
Variablen in Programmiersprachen
EPROG Tutorium #4 Philipp Effenberger
Wilfried Imrich CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Starten der Entwicklungsumgebung (IDE)
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
1 VeranstaltungThemaVortragende AINF-Lehrgang 2003 Titel: Grundlagen der Objektorientierten Programmierung Name: Gruppe Programmierung.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Objektorientierte (OO) Programmierung
Java Programme nur ein bisschen objektorientiert.
Hello World! Javakurs 2013 Arne Kappen
Grundkurs Informatik 11-13
November 18 Informatik Kurse
 Präsentation transkript:

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

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

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

Diesen da ... C.O. C.O. Modellierung Quellcode JAVA VBA

... picken wir uns mal raus… C.O. C.O. Modellierung Quellcode JAVA VBA

…und untersuchen ihn genauer! C.O. C.O. Modellierung Quellcode JAVA VBA

„Objektive“ Tatsachen! 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. C.O. C.O. Modellierung Quellcode JAVA VBA

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. C.O. Modellierung Quellcode JAVA VBA

Produktion am Fließband Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl Farbe: Text ……. 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: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse). C.O. Modellierung Quellcode JAVA VBA

Was passiert mit den Fahrzeugen? 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)? C.O. Modellierung Quellcode JAVA VBA

Operationen / Methoden 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. C.O. C.O. Modellierung Quellcode JAVA VBA

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

Von der Klasse … „Abstrakter“ Bauplan Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl Farbe: Text ……. VKPreis: Währung Erfassung() Ändern() Löschen() Drucken() …………… C.O. C.O. Modellierung Quellcode JAVA VBA

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

Die grundsätzliche Struktur: Eigentlich ja ganz einfach! { 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(); } 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 C.O. Modellierung Quellcode JAVA VBA

Leider doch nicht! funktioniert so noch nicht! funktioniert! { 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(); } 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 funktioniert so noch nicht! funktioniert! C.O. Modellierung Quellcode JAVA VBA

Da fehlt noch etwas: „Probleme“ mit JAVA: Ohne Klasse läuft nichts! 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! C.O. Modellierung Quellcode JAVA VBA

Da fehlt noch etwas: „Probleme“ mit JAVA: Ohne Klasse läuft nichts! 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! C.O. Modellierung Quellcode JAVA VBA

Da fehlt noch etwas: „Probleme“ mit JAVA: Ohne Klasse läuft nichts! 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! Ohne main läuft nichts! Ohne Konstruktor macht alles keinen Sinn! C.O. Modellierung Quellcode JAVA VBA

Da fehlt noch etwas: „Probleme“ mit JAVA: Ohne Klasse läuft nichts! 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! 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! C.O. Modellierung Quellcode JAVA VBA

Back to the Roots: class HelloWorld { public static void main(String[] args) System.out.print(„Hello world!“); } C.O. Modellierung Quellcode JAVA VBA

Back to the Roots: 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? C.O. Modellierung Quellcode JAVA VBA

Back to the Roots? 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! C.O. Modellierung Quellcode JAVA VBA

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“. C.O. Modellierung Quellcode JAVA VBA

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

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??? C.O. Modellierung Quellcode JAVA VBA

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! C.O. Modellierung Quellcode JAVA VBA

BlueJ: Didaktisches Entwicklungstool 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. C.O. C.O. Modellierung Quellcode JAVA VBA

BlueJ C.O. Modellierung Quellcode JAVA VBA

BlueJ C.O. Modellierung Quellcode JAVA VBA

Und der Konstruktor bringt so richtig Schwung ins Programm… C.O. Modellierung Quellcode JAVA VBA

„Eingabe“ C.O. Modellierung Quellcode JAVA VBA

„Es klappt!“ Und nun kann nach Herzenslust strukturiert programmiert werden! C.O. Modellierung Quellcode JAVA VBA

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! C.O. Modellierung Quellcode JAVA VBA

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

Und es wird noch besser… C.O. Modellierung Quellcode JAVA VBA

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

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