Dynamische Sprachen auf der JVM

Größe: px
Ab Seite anzeigen:

Download "Dynamische Sprachen auf der JVM"

Transkript

1 Dynamische Sprachen auf der JVM Christian Müller Leibniz Universität Hannover 1 Einführung Der Begriff dynamische Sprache ist nicht genau definiert, sehr oft wird er lediglich mit dynamischer Typprüfung gleichgesetzt. Diese Definition wäre allerdings zu spezifisch. Sie würde viele Eigenschaften die mit dynamischen Sprachen in Verbindung gebracht werden nicht miteinbeziehen. Wir betrachten deshalb eine Sprache als dynamisch, wenn sie Verhalten zur Laufzeit ausführen kann, das andere Sprachen, wenn überhaupt, nur während der Kompilierung ausführen können. Beispiele für dieses Verhalten sind: dynamische Typprüfung: Es werden keine Variablentypen im Quelltext angegeben. Zur Laufzeit wird überprüft ob die benutzten Funktionen mit den vorliegenden Daten ausgeführt werden können. eval Funktion: Die eval Funktion interpretiert ein zur Laufzeit vorliegenden String als Quellcode und führt ihn aus. Closures: Funktionen die die Variablenbelegungen aus dem lexikalischen Kontext in dem sie definiert wurden konservieren. Continuations: Eine Continuation beschreibt den aktuellen Zustand während der Programmausführung und ermöglicht somit das Speichern dieses Zustandes und das spätere Fortsetzen von diesem Zustand ausgehend. Mixins: Mixins ermöglichen es einem Objekt zur Laufzeit zusätzliche Funktionalität zu geben. Reflection: Wenn ein Programm zur Laufzeit seine eigene Struktur analysieren und verändern kann spricht man von Reflection.

2 Es kommt aber nicht darauf an das in einer Sprache alle diese Eigenschaften vorhanden sind um sie als dynamisch zu bezeichnen. Der Vorteil den diese Eigenschaften einer Sprache bringen ist eine Erleichterung bei der Programmierung. Benutzt man beispielsweise eine Sprache ohne eval Funktion, kann auf diese aber nicht verzichten, dann muss man sehr wahrscheinlich selber einen einfachen Interpreter für diese Sprache implementieren, den man dann als eval Funktion benutzen kann. Da die Java VM von diesen Eigenschaften nur Reflection direkt unterstützt stellt sich die Frage, warum man mit einem Compiler für eine dynamische Sprache die Java VM als Zielplattform wählen sollte. Ein Hauptgrund ist sicherlich die weite Verbreitung von Java VM's und die Tatsache das für praktisch jedes Betriebssystem eine Java VM verfügbar ist, und damit eine hohe Zielgruppe. Oder auch die große Anzahl von Bibliotheken die für Java vorhanden sind und die über die Java VM direkt genutzt werden können. Ursprünglich wurde die Java VM nur für Java ausgelegt, aber auch Sun hat erkannt das dynamische Sprachen immer beliebter werden und arbeitet deswegen an einer neuen Spezifikation für Java VM's, die es unter anderem erleichtern soll dynamische Sprachen umzusetzen. Es ist zum Beispiel ein neuer Bytecode Befehl in Planung der von Java gar nicht benutzt werden soll.

3 2 Dynamische Typprüfung Um Typsicherheit zu gewährleisten muss der Compiler, beziehungsweise der Interpreter, eine Typprüfung durchführen. Wird diese Typprüfung wie bei C oder Java während des Kompilierens vorgenommen spricht man von statischer Typprüfung. Dabei sind den Variablen im Quellcode vom Programmierer die jeweiligen Typen zugeordnet. Von dynamischer Typprüfung spricht man, wenn sie während der Laufzeit durchgeführt wird, wie beispielsweise in Lisp oder Ruby. Dabei sind die Typen nicht den Variablen, sondern den Werten zugeordnet. Eine Variable kann also zu unterschiedlichen Zeitpunkten Werte von unterschiedlichem Typ enthalten. Typprüfung auf der JVM Die vom Java Compiler erzeugte class Datei enthält in ihrem Konstantenpool zu jeder Variablen und Funktion einen sogenannten Type Descriptor der den Typ festlegt. Für Variablen ist dieser Type Descriptor ein String der nach folgender Tabelle kodiert ist. Für eine Integer Variable also I, und für ein zweidimensionales Feld von Floats [[F. Bei Klassen wird der volle Klassenname benutzt, der Type Descriptor für einen String ist also "Ljava/lang/String;". byte B char C double D float F int I long J short S boolean Z Klasse L<Klassenname>; Feld [ Bei Funktionen wird der Type Descriptor zusammengesetzt aus den Typen der Parameter und dem Rückgabetyp: zuerst die Typen der Parameter in runden Klammern, ohne Trennzeichen, gefolgt vom Rückgabetyp. Beispielsweise hätte eine Funktion die einen long, einen String und einen boolean als Parameter hat und einen int zurück gibt den Type Descriptor "(JLjava/lang/String;Z)I". Funktionsaufrufe im Quelltext werden je nach Art mit den Bytecodes invokestatic, invokevirtual, invokeinterface oder invokespecial übersetzt. Bei der Ausführung dieser Bytecodes zur Laufzeit wird von der Java VM überprüft ob der Type

4 Descriptor der Funktion mit den vorliegenden Typen der Argumente der Funktion übereinstimmt. Zum Beispiel invokestatic, der Befehl zum aufrufen von static Funktionen: invokestatic Bytecode: 0xb8 = 184 Format: invokestatic indexbyte1 indexbyte2 Stack (vorher):, [arg1, [arg2 ]] Stack (nachher): Aus indexbyte1 und indexbyte2 wird ein Index für den Konstantenpool der aktuellen Klasse konstruiert. An dieser Stelle muss sich eine symbolische Referenz für die aufzurufende Funktion befinden. Über diese Referenz erhält die Java VM unter anderem den Type Descriptor der Funktion und überprüft ob die Argumente auf dem Stack den richtigen Typ haben, in der richtigen Reihenfolge sind und ob es genug Argumente auf dem Stack gibt. dynamische Typprüfung auf der JVM Daraus ergeben sich zwei Probleme die gelöst werden müssen um dynamische Typprüfung auf der Java VM zu realisieren: 1. Die Type Descriptoren für dynamische Variablen (beziehungsweise Funktionsparameter) müssen so gestaltet sein, das es möglich ist diesen Variablen einen Wert von beliebigem Typ zuzuweisen. Das lässt sich einfach implementieren, da man die Klassenhierarchie von Java ausnutzen kann. Jede Java Klasse ist eine Unterklasse von Object, also gibt man dynamischen Variablen den Typ Object. Da die primitiven Datentypen, wie int oder float, außerhalb der Klassenhierarchie stehen, muss man sie in den entsprechenden Wrappern kapseln, wenn man sie einer dynamischen Variablen zuweisen will. 2. Zur Laufzeit muss eine Typprüfung ausgeführt werden, um die Typsicherheit zu gewährleisten. Es existieren zwei sehr ähnliche Bytecodes mit denen diese Typprüfung durchgeführt werden kann, checkcast und instanceof. Besser geeignet für unsere Bedürfnisse ist checkcast, da es den Stack nicht verändert und eine Fehlermeldung ausgibt wenn die beiden Typen nicht kompatibel sind. Bei instanceof wird in diesem Fall nur das Ergebnis, ein int mit dem Wert 0, auf den Stack geschrieben. instanceof Bytecode: 0xc1 = 193 Format: instanceof indexbyte1 indexbyte2 Stack (vorher):, objectref

5 Stack (nachher):, result checkcast Bytecode: 0xc0 = 192 Format: checkcast indexbyte1 indexbyte2 Stack (vorher):, objectref Stack (nachher):, objectref Aus indexbyte1 und indexbyte2 wird ein Index für den Konstantenpool der aktuellen Klasse konstruiert. An dieser Stelle muss sich eine symbolische Referenz auf eine Klasse, ein Feld oder ein Interface befinden, dessen Typ wir T nennen. Den Typ von objectref nennen wir S. Dann bestimmt checkcast mit folgenden Regeln, ob objectref zu Typ T gecastet werden kann. 1. Wenn S eine normale Klasse (kein Feld) ist, dann: 1. Wenn T eine Klasse ist, dann muss S dieselbe Klasse wie T sein, oder eine Unterklasse von T. 2. Wenn T ein Interface ist, dann muss S das Interface T implementieren. 2. Wenn S ein Interface ist, dann: 1. Wenn T eine Klasse ist, dann muss T Object sein. 2. Wenn T ein Interface ist, dann muss T dasselbe Interface wie S sein, oder ein Superinterface von S. 3. Wenn S ein Feld mit Komponenten des Typs SC ist, dann: 1. Wenn T eine Klasse ist, dann muss T Object sein. 2. Wenn T ein Feld mit Komponenten des Typs TC ist, dann muss eine der folgenden Aussagen stimmen: 1. TC und SC sind dieselben primitiven Typen. 2. TC und SC sind Referenzen und SC kann zu TC gecastet werden, durch rekursive Anwendung dieser Regeln. 3. Wenn T ein Interface ist, dann muss T eines der Interfaces sein, das von Array implementiert wird. Wie man sieht kann man primitive Datentypen so nicht testen, entweder kapselt man sie in den entsprechenden Wrappern (Punkt 1.1), oder in einem Feld (Punkt 3.2.1).

6 3 Closures Es gibt Programmiersprachen in denen ist es möglich Funktionen innerhalb anderer Funktionen zu definieren und auch Funktionen als Argumente zu übergeben. Dort ist es möglich das eine Funktion freie Variablen, aus dem lexikalischen Bereich in dem sie definiert wird, benutzt. In diesem Beispiel wird innerhalb der Funktion f eine weitere Funktion g definiert. Allerdings ist die Variable x, die in g benutzt wird, nicht mehr sichtbar, wenn g in der Funktion dosomething aufgerufen wird. Es muss also nicht nur die Funktion übergeben werden, sondern auch eine Referenz zu allen freien Variablen, und diese Variablen müssen so lange existieren wie die Funktion g existiert. Die Variable x ist für g eine freie Variable. Funktionen die wie g freie Variablen benutzen werden Closure genannt. Wie man in diesem Beispiel sieht kann man Closures für Information Hiding benutzen, denn die Variable x kann nur durch g verändert werden, da sie nur dort sichtbar ist. Außerdem können mehrere Funktionen dieselben freien Variablen benutzen und so privat kommunizieren. Hier sieht man, wie mit Hilfe von Closures ein einfaches Objekt realisiert werden kann. Die Funktion createcounter setzt value auf den übergebenen Startwert und liefert eine Liste mit zwei Funktionen, die beide value als freie Variable benutzen. Die erste Funktion erhöht bei jedem Aufruf den Zähler, und die zweite Funktion setzt den Zähler zurück auf Null.

7 Closures auf der Java VM Die Umsetzung von Closures erfordert, das Funktionen als Argumente übergeben werden können. Mit den normalen Funktionsdefinitionen die Java bereitstellt ist das nicht möglich, deshalb muss für jede Closure eine eigene Klasse erstellt werden, die das Interface Function implementiert. Diese Klasse enthält eine invoke Funktion, in der die eigentliche Funktionalität enthalten ist. In dem lexikalischem Bereich in dem die Closure definiert wurde, können dann von dieser Klasse Objekte erstellt werden und als Argumente an andere Funktionen übergeben werden. Außerdem müssen Closures Referenzen auf ihre freien Variablen beinhalten. Dies lässt sich mit Hilfe von Instanzvariablen realisieren. Für jede freie Variable hat die Closure eine Instanzvariable, der durch den Konstruktor eine Referenz auf das Objekt zugewiesen wird, das zur Definitionszeit der Closure an die freie Variable gebunden war. Dadurch ist auch gewährleistet das die freien Variablen mindestens so lange existieren, wie die Closure existiert. Denn so lange das ursprüngliche Objekt von der Closure referenziert wird, wird es nicht von Javas Garbage Collector gelöscht. Das erste Beispiel aus diesem Kapitel könnte vom Compiler wie folgender Quelltext umgesetzt werden:

8 4 Mixins Um die Wiederverwendung von Quelltext zu unterstützen gibt es in den meisten Programmiersprachen eine Form der Vererbung. In vielen Fällen reicht ein einfaches Vererbungssystem aus, aber damit lassen sich nicht alle Probleme der Wiederverwendung lösen. Mixins bilden eine mögliche Erweiterung des Vererbungssystems um diese Unzulänglichkeiten zu beheben, ähnlich wie die Mehrfachvererbung. Einfache Vererbung (single inheritance) ermöglicht es einer Klasse alle Variablen und Funktionen von einer Oberklasse zu erben, und eventuell zu überschreiben. Dabei kann jede Klasse nur eine direkte Oberklasse haben. Diese Form der Vererbung wird in Java für Klassen benutzt. Bei Mehrfachvererbung (multiple inheritance) kann eine Klasse mehrere direkte Oberklassen haben. Dies hat allerdings einige unerwünschte Konsequenzen, allen voran das Diamantenproblem. A B C D Bild 1: Das Diamantenproblem Es tritt auf wenn eine Klasse D über zwei verschiedene Wege, hier B und C, von einer gemeinsamen Oberklasse A erbt. Wenn in D nun eine Funktion aufgerufen wird, die in A definiert und in B und C überschrieben wurde, kann nicht entschieden werden welche Implementierung benutzt werden soll. Eine Mehrfachvererbung ist in Java für Klassen nicht möglich, allerdings kann eine Klasse mehrere Interfaces implementieren. Das hilft aber leider nicht dabei Quelltext wieder zu verwenden, da ein Interface nur die Schnittstelle beschreibt, die Implementierung muss in jeder Klasse wiederholt werden. Ein Mixin ist eine teilweise Klassendefinition die, wenn man sie auf eine Klasse anwendet, eine neue Unterklasse dieser Klasse liefert, die erweitert um die Variablen und Funktionen, samt Implementation, des Mixin ist. Vereinfacht ausgedrückt kann man sagen das sich ein Mixin wie ein Interface verhält, nur das zusätzlich die im Mixin vorliegenden Implementationen übernommen werden. Die Dynamik von Mixins ergibt sich aus der Tatsache das man sie auch zur Laufzeit auf einzelne Objekte anwenden kann. Beispielsweise kann man mit Mixins sehr gut Persistenz in ein Programm einführen. Dazu erstellt man ein Mixin das eine Klasse in eine Datenbank schreibt.

9 Dann kann man dieses Mixin auf alle Klassen, oder auch nur auf die entsprechenden Objekte zur Laufzeit, anwenden, die man speichern möchte. Dabei kann man auch erst zur Laufzeit die Entscheidung treffen welches Mixin, und damit welche Datenbank, man benutzen will. Mixins auf der Java VM Möchte man Mixins auf der JVM umsetzen muss man dafür sorgen das der generierte Bytecode richtig typisiert ist und das die Implementationen aus dem Mixin in die erzeugte Unterklasse übernommen werden. Für Mixins die auf Klassenebene verwendet werden, und somit während der Kompilierung berechnet werden können, ist das leicht umzusetzen. Man macht sich einfach die Ähnlichkeit zu Interfaces zunutze. Für jedes Mixin erzeugt der Compiler ein Interface. Klassen die ein Mixin benutzen sollen, implementieren dieses Interface. Dabei werden die Implementationen aus dem Mixin vom Compiler einfach in die neue Klasse übernommen. A A B C B C Mixin1 Mixin2 <<interface>> Mixin1 <<interface>> Mixin1 Werden Mixins zur Laufzeit auf Objekte angewendet muss man dynamisch eine neue Unterklasse erstellen und laden, die die ursprüngliche Klasse des Objektes um das Mixin erweitert, und dann eine Kopie des ursprünglichen Objekts mit der neuen Unterklasse erstellen. A <<interface>> Mixin1 A <<interface>> Mixin1 a: A Bild 2: zur Laufzeit, vor der Anwendung von Mixin1 auf a Amixin1 a: AMixin1 Bild 3: zur Laufzeit, nach der Anwendung von Mixin1 auf a

10 In Java werden sogenannte Classloader benutzt um zur Laufzeit dynamisch neue Klassen zu laden. Diese Classloader stehen auch dem Programmierer zur Verfügung und können modifiziert werden. Um auf diesem Weg Mixins zu realisieren muss der Compiler aus der Definition eines Mixins zwei Teile erstellen, ein Interface, welches die Schnittstelle repräsentiert, und eine Abstrakte Klasse, welche die Implementation enthält. Zur Laufzeit kann dann ein modifizierter Classloader aus der ursprünglichen Klasse, dem Interface und der abstrakten Klasse die gewünschte Unterklasse erstellen. Dieser beispielhafte Quellcode könnte vom Compiler mit Hilfe der Reflection API wie folgt übersetzt werden: In der von uns implementierten Methode ModifiedClassLoader.loadClass müsste der Bytecode der ursprünglichen Klasse A geladen werden, und dann wie folgt verändert werden: der Name der Klasse muss zu A_Mixin geändert werden das vom Compiler erstellte Interface muss implementiert werden die Implementation aus der vom Compiler erstellten abstrakten Klasse muss übernommen werden die Funktion void copyvars(a a) muss erstellt werden, damit die Daten des ursprünglichen Objekts später übernommen werden können

11 6 Zusammenfassung In dieser Arbeit wurden ausgewählte Eigenschaften dynamischer Sprachen vorgestellt, die von der Java VM nicht unterstützt werden. Es wurde untersucht wie sich diese Eigenschaften auf der Java VM umsetzen lassen, ohne Veränderungen an der Java VM vorzunehmen. Es konnte gezeigt werden wie sich dynamische Typprüfung, Closures und Mixins realisieren lassen. Die meisten dieser Eigenschaften wurden auch schon in verschiedenen Compilern umgesetzt. Die folgende Tabelle enthält einige Beispiele. Java Clojure Groovy Jruby Jython dynamische Typprüfung x x x x eval Funktion x x x x Mixins x * Closures x x x x x Continuations x x x Reflection x x x x x x Scala * Scala unterstützt Mixins nur zur Compile Zeit

12 Quellen 1. Bernard Paul Serpette, Manuel Serrano: Compiling Scheme to JVM bytecode: a performance study 2. Scott Malabarbara, Raju Pandey, Jeff Gragg, Earl Barr, J. Fritz Barnes: Runtime support for type safe dynamic Java classes 3. Sheng Liang, Gilad Bracha: Dynamic Class Loading in the Java Virtual Machine 4. Vija Saraswat: Java is not type safe 5. The JavaTM Virtual Machine Specification Second Edition 6. wikipedia.org und weitere 7. R. Parchmann: Vorlesungsskript Compiler Konstruktion II 8. Michel Schinz: Compiling Scala for the Java Virtual Machine 9. Olin Shivers: Supporting dynamic languages on the Java virtual machine

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Rundung und Casting von Zahlen

Rundung und Casting von Zahlen W E R K S T A T T Rundung und Casting von Zahlen Intrexx 7.0 1. Einleitung In diesem Werkstattbeitrag erfahren Sie, wie Zahlenwerte speziell in Velocity, aber auch in Groovy, gerundet werden können. Für

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Veröffentlicht Januar 2009 Copyright 2009 Helmut Schottmüller Inhaltsverzeichnis 1.

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Dokumentation Schedulingverfahren

Dokumentation Schedulingverfahren Dokumentation Schedulingverfahren von Norbert Galuschek Gordian Maugg Alexander Hahn Rebekka Weissinger June 23, 2011 1 Contents 1 Aufgabe 3 2 Vorgehensweise 4 2.1 Warum Android.......................

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger Informatik II Hinweise: Die Bearbeitungszeit beträgt 90 Minuten.

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Erstellen eigener HTML Seiten auf ewon

Erstellen eigener HTML Seiten auf ewon ewon - Technical Note Nr. 010 Version 1.2 Erstellen eigener HTML Seiten auf ewon 30.08.2006/SI Übersicht: 1. Thema 2. Benötigte Komponenten 3. Funktionsaufbau und Konfiguration 3.1. Unterpunkt 1 3.2. Unterpunkt

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Erfolgsmeldungen im Praxisbetrieb

Erfolgsmeldungen im Praxisbetrieb Inhalt 1. Was ist KV-Connect... 1 a. KV-SafeNet... 1 b. KV-Connect... 1 2. Vorbereitung der Installation... 2 a. KV-Connect-Zugangsdaten... 2 3. Einrichtung von KV-Connect... 3 a. Einstellungen im Programm...

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Anleitung zur Verwendung der VVW-Word-Vorlagen

Anleitung zur Verwendung der VVW-Word-Vorlagen Anleitung zur Verwendung der VVW-Word-Vorlagen v1.0. Jun-15 1 1 Vorwort Sehr geehrte Autorinnen und Autoren, wir haben für Sie eine Dokumentenvorlage für Microsoft Word entwickelt, um Ihnen die strukturierte

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

Gezielt über Folien hinweg springen

Gezielt über Folien hinweg springen Gezielt über Folien hinweg springen Nehmen wir an, Sie haben eine relativ große Präsentation. Manchmal möchten Sie über Folien hinweg zu anderen Folien springen. Das kann vorkommen, weil Sie den gesamten

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Bedienungsanleitung Anlassteilnehmer (Vereinslisten) Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen 4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen Highlights: objektorientierte Sprache Plattformunabhängigkeit bei Hardware und Betriebssystem optimale Einbindung im Internet und Intranet

Mehr

Wie Sie mit Mastern arbeiten

Wie Sie mit Mastern arbeiten Wie Sie mit Mastern arbeiten Was ist ein Master? Einer der großen Vorteile von EDV besteht darin, dass Ihnen der Rechner Arbeit abnimmt. Diesen Vorteil sollten sie nutzen, wo immer es geht. In PowerPoint

Mehr

SMS/ MMS Multimedia Center

SMS/ MMS Multimedia Center SMS/ MMS Multimedia Center der BEYOND THE NET GmbH BEYOND THE NET GmbH Seite 1 Unser Multimedia Center ist eine WEB basierende Anwendung, die es ermöglicht von einer Zentrale aus, viele Mitarbeiter zu

Mehr

Hilfedatei der Oden$-Börse Stand Juni 2014

Hilfedatei der Oden$-Börse Stand Juni 2014 Hilfedatei der Oden$-Börse Stand Juni 2014 Inhalt 1. Einleitung... 2 2. Die Anmeldung... 2 2.1 Die Erstregistrierung... 3 2.2 Die Mitgliedsnummer anfordern... 4 3. Die Funktionen für Nutzer... 5 3.1 Arbeiten

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Die Textvorlagen in Microsoft WORD und LibreOffice Writer Die Textvorlagen in Microsoft WORD und LibreOffice Writer Liebe Teilnehmer(-innen) am Landeswettbewerb Deutsche Sprache und Literatur Baden- Württemberg, Diese Anleitung soll Ihnen helfen Ihren Wettbewerbsbeitrag

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren I. Kapitel 15. Ein und Ausgabe Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

Mehr

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen. Programmierung des Farbsteuergeräts 340-00112 für Nikobus Diese Bedienungsanleitung gilt auch für die Nikobus-Produkte 340-00111 und 340-00113. Achtung: einige der aufgeführten Betriebsarten sind nur auf

Mehr

Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken

Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken Mit Anleitung zur Erstellung einer FTP Verbindung unter Windows 7 Matthias Lange

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5

Mehr

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien Sie haben von der VR DISKONTBANK GmbH ein signiertes PDF-Dokument (i.d.r. eine Zentralregulierungsliste mit dem Status einer offiziellen Rechnung) erhalten und möchten nun die Signatur verifizieren, um

Mehr

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü. Programm Die Bedienung des Programms geht über das Hauptmenü. Datenbank Schnittstelle Die Datenbank wir über die Datenbank- Schnittstelle von Office angesprochen. Von Office 2000-2003 gab es die Datenbank

Mehr

Anleitung E Mail Thurcom E Mail Anleitung Version 4.0 8.2014

Anleitung E Mail Thurcom E Mail Anleitung Version 4.0 8.2014 Anleitung E Mail Inhalt 1. Beschreibung 1.1. POP3 oder IMAP? 1.1.1. POP3 1.1.2. IMAP 1.2. Allgemeine Einstellungen 2. E Mail Programme 3 3 3 3 3 4 2.1. Thunderbird 4 2.2. Windows Live Mail 6 2.3. Outlook

Mehr

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? UErörterung zu dem Thema Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? 2000 by christoph hoffmann Seite I Gliederung 1. In zu großen Mengen ist alles schädlich. 2.

Mehr

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programme im Griff Was bringt Ihnen dieses Kapitel? 3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Adobe Encore 2.0 - Einfaches Erstellen einer DVD

Adobe Encore 2.0 - Einfaches Erstellen einer DVD Adobe Encore 2.0 - Einfaches Erstellen einer DVD Kurzbeschreibung Mit Adobe Encore 2.0 können von diversen Filmsequenzen Video-DVDs erstellt werden. Es unterstützt u. a. auch die Erstellung von komplexen

Mehr

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag Anton Ochsenkühn amac BUCH VERLAG Ecxel 2016 für Mac amac-buch Verlag 2 Word-Dokumentenkatalog! Zudem können unterhalb von Neu noch Zuletzt verwendet eingeblendet werden. Damit hat der Anwender einen sehr

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

Einzel-E-Mails und unpersönliche Massen-Mails versenden

Einzel-E-Mails und unpersönliche Massen-Mails versenden Einzel-E-Mails und unpersönliche Massen-Mails versenden Copyright 2012 cobra computer s brainware GmbH cobra Adress PLUS ist eingetragenes Warenzeichen der cobra computer s brainware GmbH. Andere Begriffe

Mehr

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 Die Installation der FuxMedia Software erfolgt erst NACH Einrichtung des Netzlaufwerks! Menüleiste einblenden, falls nicht vorhanden Die

Mehr

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr