Java Native Calls. Einbinden von C Bibliotheken in Java Klassen. Prof. Dr. Nikolaus Wulff
|
|
- Philipp Färber
- vor 5 Jahren
- Abrufe
Transkript
1 Java Native Calls Einbinden von C Bibliotheken in Java Klassen Prof. Dr. Nikolaus Wulff
2 GUI und Model Die GUI des DeviceEditors ist in Java implementiert. Die Anwendung ist allerdings ohne eine fachliche Logik ein reines Malwerkzeug. Die fachliche Logik der elektrischen Bauteile besitzt bislang lediglich eine C Implementierung. Was fehlt ist eine Erweiterung der graphischen Klassen um die fachliche Logik. Hierzu bietet es sich an die graphischen Bauteile als Adapter zu verwenden, die an die fachliche Implementierung delegiert. Prof. Dr. Nikolaus Wulff Angewandte Informatik 2
3 MVC beim DeviceEditor View JComponent (from Painter (from manages 0..* <<Interface>> Paintable (from painter) DevicePainter (from v iew) /manage 0..* DeviceGUI (from vie w) delegates peer 1 Device (from DeviceController (from controller) <<Interface>> MouseListener (from jav a.awt) ResistorGUI (from view) /delegates 1 Resistor (from model) CrossWire (from MouseAdapter (from jav a.awt) CapacitorGUI (from view) /delegates 1 Capacitor (from model) Controller View Adapter Model Prof. Dr. Nikolaus Wulff Angewandte Informatik 3
4 Einbinden von C in Java Die Scheinwiderstände der Devices wurden am Anfang des Semesters mit Hilfe von C Methoden realisiert. Wie lässt sich diese Implementierung wieder verwenden? Neu- bzw. Nachimplementierung in Java C Routinen in Java Code einbinden Welcher Ansatz verwendet wird richtet sich nach dem Aufwand und Nutzen... Prof. Dr. Nikolaus Wulff Angewandte Informatik 4
5 Shapes kanonische Form Die Aufteilung in Methoden und Attribute erfolgt in zwei Structs XXX_Instance und XXX_Class: typedef struct Shape_Instance_struct* Shape; typedef struct Shape_Class_struct { void (*draw) (Shape ashape); void (*erase) (Shape ashape); void (*moveto) (Shape ashape, int x,int y); } ShapeClass; typedef struct Shape_Instance_struct { ShapeClass *class; int pos_x; int pos_y; <<Data>> } ShapInstance; ShapeInstance ShapeClass pos_x pos_y 1 <<Methods>> ShapeClass moveto() moveby() Prof. Dr. Nikolaus Wulff Angewandte Informatik 5
6 Widerstand ADT /** * Resistor.h * Definition of Resistor ADT * $Id: Resistor.h,v /10/26 10:07:27 nwulff Exp $ */ #ifndef RESISTOR_H_ #define RESISTOR_H_ #include "Device.h" typedef struct resistor_struct* Resistor; struct resistor_struct { Impedance impedance; Conductance conductance; double resistance; char type; char* name; }; extern Device createresistor(double resistance); #endif /* RESISTOR_H_ defined */ Prof. Dr. Nikolaus Wulff Angewandte Informatik 6
7 Native Code Java bietet die Möglichkeit Klassen mit Methoden zu schreiben, die in C realisiert werden. Hierzu werden die Methoden mit dem Schlüsselwort native markiert, ohne das eine Implementierung in Java erfolgt. public class Resistor extends Device { } /* (non-javadoc) model.device#getconductance(double) public native Complex getconductance(double omega); Prof. Dr. Nikolaus Wulff Angewandte Informatik 7
8 C Header-Dateien generieren Nach dem Übersetzen von Resistor.java wird mit dem Tool javah ein C Header-Datei Resistor.h generiert. In dieser stehen die Deklarationen der fehlenden zu implementierenden nativen C/Java Funktionen. Eine entsprechende Implementierung Resistor.c wird dann zu einer Bibliothek gebunden. Resistor.java Resistor.h Resistor.c libresistor.so Prof. Dr. Nikolaus Wulff Angewandte Informatik 8
9 Resistor.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class model_resistor */ #ifndef _Included_model_Resistor #define _Included_model_Resistor #ifdef cplusplus extern "C" { #endif Complex getconductance(double omega); /* * Class: model_resistor * Method: getconductance * Signature: (D)Lmath/Complex; */ JNIEXPORT jobject JNICALL Java_model_Resistor_getConductance (JNIEnv *, jobject, jdouble); #ifdef cplusplus } #endif #endif JVM Resistor Prof. Dr. Nikolaus Wulff Angewandte Informatik 9
10 Resistor.c howto? Wie kann jetzt die C Methode implementiert werden? Benötigt wird nicht nur der Wert omega, sondern auch der Widerstand (bzw. die Kapazität etc) des jeweiligen Bauteils. Ausserdem muss ein neues Java Objekt vom Typ Complex zurückgegeben werden. Dies kann kein einfacher C-struct sein... Es lassen sich nicht nur von Java aus C Routinen rufen, sondern diese können auch ihrerseits wieder auf Java Klassen, Objekten und Methoden zurückgreifen! Prof. Dr. Nikolaus Wulff Angewandte Informatik 10
11 Java Reflection Jedem Java Objekt ist eineindeutig ein Class Objekt zugeordnet. Class c = obj.getclass() Dieses Class Objekt enthält Metainformationen und bietet Java FunctionPointer : Method m = c.getdeclaredmethod(name,...) Field f = c.getdeclaredfield(name) Diese FunctionPointer erlauben das Objekt zu manipulieren: double x = f.getdouble(obj) m.invoke(obj,...) Prof. Dr. Nikolaus Wulff Angewandte Informatik 11
12 Java Reflection API Object Class 1 Package name : MyClass myat tribute mymethod() <<Interface>> Member Constructor (from Field (from Method (from Prof. Dr. Nikolaus Wulff Angewandte Informatik 12
13 Native Code API Alle C Methoden erhalten eine Referenz auf die JVM Umgebung und das entsprechende Java Objekt, dessen native Methode entwickelt wird. Dieses Umgebungsobjekt ist eine C Struktur, die verschieden FunctionPointer anbietet, um Methoden und Felder beliebiger Objekt zu addressieren. Ermitteln des Class Objekts von obj: jclass clazz = (*env)->getobjectclass(env, obj); Ermitteln der Methode double getvalue() : Signatur jmethodid method = (*env)->getmethodid(env, clazz, "getvalue", "()D"); Prof. Dr. Nikolaus Wulff Angewandte Informatik 13
14 Zugriff auf Felder Felder können direkt aus C addressiert werden. Es wird keine Rücksicht auf private genommen! jfieldid field; field = (*env)->getfieldid(env, clazz, "x", "D"); (*env)->setdoublefield(env, complex, field, 1.0); Die zu verwendenen C Methoden sind in der Datei <jni.h> deklariert. Prof. Dr. Nikolaus Wulff Angewandte Informatik 14
15 Aufruf von Funktionen Aufruf der Methode getvalue : double x; x = (*env)->calldoublemethod(env, obj, method); Gegenstück setvalue : method = (*env)->getmethodid(env, clazz, "setvalue", "(D)V"); (*env)->callvoidmethod(env, obj, method, x); Die Signatur dient dazu überladene Methoden eindeutig zu identifizieren. Wie kann effizient die genaue Signatur der Methode ermittelt werden? Signatur Prof. Dr. Nikolaus Wulff Angewandte Informatik 15
16 Java Disassembler Der Java Disassembler javap gestattet es in das Innere von Java Klassen zu schauen. Mit den Parametern -p -s liefert javap die Signatur Informationen: ~/workspace/jdevices/bin> javap -s -p model.resistor Compiled from "Resistor.java" public class model.resistor extends model.device{ public model.resistor(); Signature: ()V private native void calculateimpedance(math.complex, double); Signature: (Lmath/Complex;D)V public math.complex getimpedance(double); Signature: (D)Lmath/Complex; public native math.complex getconductance(double); Signature: (D)Lmath/Complex; } Prof. Dr. Nikolaus Wulff Angewandte Informatik 16
17 Objekterzeugung Primitive Datentypen können dirket zurückgegeben werden. Objekte müssen erst erzeugt werden: jclass clazz; jobject complex = NULL; clazz = (*env)->findclass(env, "math/complex"); assert(clazz!= NULL); complex = (*env)->allocobject(env,clazz); assert(complex!= NULL); return complex; Prof. Dr. Nikolaus Wulff Angewandte Informatik 17
18 Einbinden der C Bibliothek Vor dem Verwenden von native Klassen muß die zugehörige C Bibliothek geladen werden. Diese hat immer den generischen Namen libxxx.so für Unixe libxxx.dll für Windows Geladen wird sie am Besten beim Start der Anwendung mit dem Aufruf: System.loadLibrary("XXX"); gesucht wird dann im java.library.path. Oder mit expliziter Pfadangabe (Achtung nicht portabel!): System.load("/pfad/libXXX.so"); Prof. Dr. Nikolaus Wulff Angewandte Informatik 18
19 Warnungen Mit dem C Code ist es möglich auf jedes Feld und jede Methode der JVM zuzugreifen. Sogar eigene Semaphore, Mutexe und critical Sections können geschrieben werden. Es ist möglich die gesamte JVM lahmzulegen. Es ist daher Vorsicht angebracht. Am Besten keine eigenen Synchronisationsmechanismen in C! Kein malloc und free etc. Keine globalen Referenzen auf Objekte! Objekte mit Java Mitteln erzeugen, damit der Garbage Collector den Speicher verwaltet. Prof. Dr. Nikolaus Wulff Angewandte Informatik 19
20 Java und C ein gutes Gespann Mit Hilfe der Java Native API bleiben keine Wünsche mehr offen. Ein guter Programmier kann bis auf Betriebssystemebene gehen, sogar Assembler ist möglich. Die Eclipse ist ein gutes Beispiel für Java und C. Eclipse verwendet weder AWT noch Swing für die GUI sondern das selbstentwickelte SWT. SWT ist eine Bibliothek, die aus graphischen Klassen besteht, die vollkommen in C implementiert sind und direkt delegieren an die Widgets des jeweiligen Betriebsystems. Prof. Dr. Nikolaus Wulff Angewandte Informatik 20
21 Frohe Weihnachten und einen guten Start in das neue Jahr 2007! Prof. Dr. Nikolaus Wulff Angewandte Informatik 21
Java Native Interface
Java Native Interface Einbinden von nativen C/C++ Bibliotheken via JNI in Java Klassen. Prof. Dr. Nikolaus Wulff Java Erweiterungen Java lässt sich erweitern durch: Integration nativen C Codes und erlaubt
MehrJNI. Java Native Interface. Institut für Systemsoftware, Johannes Kepler Universität Linz
JNI Java Native Interface JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz Probleme bei nativem Code in Java Methodenaufruf
MehrJNI - Java Native Interface SYSTEM SOFTWARE 1
JNI - Java Native Interface SYSTEM SOFTWARE 1 Probleme bei nativem Code in Java Methodenaufruf Wie kann man native Methoden aus Java-Code aufrufen? Wie kann man Java-Methoden aus nativem Code aufrufen?
MehrJava Native Interface
Java Native Interface Eine Einführung Cornelius Zühl czueh001@student.informatik.fh-wiesbaden.de 01.03.2010 Inhaltsverzeichnis 1. Einführung... 3 2. Was ist JNI?... 3 3. JNI, was habe ich damit zu tun?...
MehrObjektbasierte Entwicklung
Objektbasierte Entwicklung Die kanonische Form von C Strukturen und was haben Abstrakte Datentypen mit der JVM zu tun? Prof. Dr. Nikolaus Wulff ADT in C Objekte mit gemeinsamen Attributen und Verhalten
MehrJNI. Java Native Interface. Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz
JNI Java Native Interface JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz Probleme bei nativem Code in Java Methodenaufruf
MehrJava Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
MehrHöhere Programmierkonzepte Praktikum III Numerik in C
Höhere Programmierkonzepte Praktikum III Numerik in C Prof. Dr. Nikolaus Wulff 27. Nov 6. Dez 2012 1 Funktionen integrieren und differenzieren In diesem Praktikum werden Ihre Kenntnisse in C aufgefrischt,
MehrEmbedded Software. Der C Präprozessor. Sichere objektbasierte Entwicklung dank C Präprozessor. Prof. Dr. Nikolaus Wulff
Der C Präprozessor Sichere objektbasierte Entwicklung dank C Präprozessor Prof. Dr. Nikolaus Wulff Shapes kanonische Form Die Aufteilung in Methoden und Attribute erfolgt in zwei Structs XXX_Instance und
MehrJava Native Interface
Java Native Interface Ablauf der einzelnen Schritte zur Entwicklung einer DLL Java Klasse / Programm erzeugen Java-Code schreiben Native Methode definieren Übersetzen (javac) Erzeugen der Header-Datei
MehrCrashkurs C++ Wiederholung
Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i
MehrC/C++ Library für Java by TgZero 03.03.2013
C/C++ Library für Java by TgZero 03.03.2013 Inhaltsverzeichnis Intro...1 Das Problem bei den vorhandenen Libs...1 Die Bedingungen für eine Library...2 Eine Java-Klasse erstellen...2 Zugreifen auf Objekte,
MehrC++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.
C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von
MehrInformatik III. Operatoren überladen am Beispiel des ADT Complex in C und Java sowie C++, C# und Groovy. Prof. Dr. Nikolaus Wulff
Informatik III Operatoren überladen am Beispiel des ADT Complex in C und Java sowie C++, C# und Groovy Prof. Dr. Nikolaus Wulff Komplexe Zahlen Komplexe Zahlen sind ein grundlegender Datentyp für mathematische
MehrDas Java Native Interface
Das Java Native Interface Wozu JNI? Man benötigt Plattform-spezifische Features, die nicht durch die vorhandenen JAVA-Klassen bereitgestellt werden. Z.B.: Zugriff auf einen Bandroboter über die SCSI-Schnittstelle
MehrPraktische Informatik 1
Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Session 2 Programmierung Begriffe C/C++ Compiler: übersetzt Quellcode
MehrProgrammieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff
Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
MehrProgrammieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Strukturen Prof. Dr. Nikolaus Wulff Rekursive Strukturen Häufig müssen effizient Mengen von Daten oder Objekten im Speicher verwaltet werden. Meist werden für diese Mengen
MehrFragen zur OOP in Java
- 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrProgrammieren in C. Zeiger auf void und ihre Anwendungen. Prof. Dr. Nikolaus Wulff
Programmieren in C Zeiger auf void und ihre Anwendungen Prof. Dr. Nikolaus Wulff Fallstudie: minmax.h #ifndef _MINMAX_H_ #define _MINMAX_H_ /** find minimal element in array */ char cmin(int length, char
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
MehrEinführung: Verteilte Systeme - Remote Method Invocation -
Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation
MehrDas Model/View/Controller Paradigma
Model/View/Controller Das Model/View/Controller Paradigma Christian Knauer Trennung von Daten, Ansicht und Funktion ermöglicht z.b. mehrere Ansichten desselben Datensatzes wird meist als Model-Delegate
MehrEnhanced Collection API
Enhanced Collection API Die default und static Methoden der Collection API des JDK 1.8 Prof. Dr. Nikolaus Wulff Schnittstelle und Implementierung Die Sprache Java trennte von Anfang an eine Schnittstelle
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Virtuelle Methodentabellen Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Struktur der Objektorientierung Ein wenig Java: public
MehrProgrammierkurs C++ Kapitel 6 Module Seite 1
Programmierkurs C++ Kapitel 6 Module Seite 1 (Quell-)Module Unter einem Modul versteht man einen Teil des Programms, der eigenständig übersetzt werden kann. In der Syntax der Programmiersprachen werden
MehrObjektorientierte Programmierung mit C++
Ziel: maximales Code-Sharing -- Weg: gemeinsame (aber ggf. in Ableitungen variierende) Funktionalität in Basisklassen festlegen Problem: die so entstehenden Basisklassen sind oft so rudimentär, dass Objekterzeugung
MehrJava Idioms. Basic und Advanced Java Coding Style. Prof. Dr. Nikolaus Wulff
Java Idioms Basic und Advanced Java Coding Style Prof. Dr. Nikolaus Wulff Java Idiome Operator == versus equals Methode equals und hashcode Vermeide NullPointer Java Konstruktoren Function Pointers, Interfaces
MehrProgrammieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
MehrKapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
MehrProgrammiertechnik Klassenvariablen & Instantiierung
Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen
MehrProgrammieren in C++ Templates
Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates
MehrListe Programmieren Java Überblick
Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrTag 8 Repetitorium Informatik (Java)
Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrWie teuer ist dynamischer Polymorphismus? 194
Wie teuer ist dynamischer Polymorphismus? 194 Function f vtable data RTTI ~Function get_name type name type info "Sinus\0" execute Nicht-polymorphe Methoden und reguläre Funktionen können in C++ direkt
MehrJava für C++ Programmierer
Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?
MehrC++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrInformatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
MehrWie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?
Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrTeil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen
Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrSoftware Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/
MehrProgrammieren 1 09 Vererbung und Polymorphie
Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen
Mehr4 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
MehrObjektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
MehrWiederholung aus SWE2
Wiederholung aus SWE2 Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Inhalt Innere Klassen Diverse neue Sprachfeatures bei Java 1.5 Pratikum
MehrGrundlagen der Programmierung in C Klassen
Grundlagen der Programmierung in C Klassen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple address pointer reference structured integral
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrDynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren
Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrInfo B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrSimpleStat mit Methoden
SimpleStat mit Methoden Als Ausgangspunkt nehmen wir folgende Definition (Version 1) von SimpleStat: double sum2; -Quadrate Dieser Objekttyp verfügt über keine Methoden und alle Datenattribute sind public.
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrProgrammieren in C. Zeiger auf Funktionen. Prof. Dr. Nikolaus Wulff
Programmieren in C Zeiger auf Funktionen Prof. Dr. Nikolaus Wulff Zeiger auf Funktionen Zeiger verweisen auf beliebige Speicherstellen. Im Allgemeinen werden Zeiger ausgerichtet auf Variablen, wie z. B.
MehrInformatik II Übung 05. Benjamin Hepp 3 April 2017
Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige
Mehr4. Vererbung Die Klasse Object. Die Klasse Object
4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren
MehrWeitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax
Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface
Mehr3. Exkurs in weitere Arten der Programmierung
3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Logische Programmierung in Prolog Peter Sobe Objektorientierte Programmierung in C++ C++ ist eine objektorientierte
MehrEinführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
MehrInnere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.
Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste
Mehr10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete
Grundlagen der Programmierung Prof. H. Mössenböck 15. Pakete Idee Paket = Sammlung zusammengehöriger Klassen (Bibliothek) Zweck mehr Ordnung in Programme bringen bessere Kontrolle der Zugriffsrechte (wer
MehrJava in Macro, SCL und Data Step
Schnittstellen Java in Macro, SCL und Data Step Carsten Zaddach BDE Business Datawarehouse Engineering GmbH Landsberger Str. 218 12623 Berlin cz@bde-gmbh.de Zusammenfassung Die Verwendung von Java-Klassen
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
MehrC# 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
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrPolymorphie. 15. Java Objektorientierung II
432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
MehrEin Design Tool für objektorientierte portable Programmierschnittstellen
Diplomarbeit Ein Design Tool für objektorientierte portable Programmierschnittstellen Vortragender: Elias Volanakis Inhalt 1. Entwurfsmuster 2. Wrapper Facade (WF) Aufgaben & Struktur Implementierung Nutzen
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch
MehrJava Closures. Prof. Dr. Nikolaus Wulff
Java Closures Die Entwicklung von C function-pointers, C++ function-templates, Java anonymos-functions, hin zu C# delegates und Java Closures. Prof. Dr. Nikolaus Wulff Funktionszeiger Zeiger auf Funktionen
MehrProgrammieren in Java
Programmieren in Java Vorlesung 07: Composite Classes Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 23 Inhalt
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen
MehrPolymorphie. 15. Java Objektorientierung II
446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
MehrInfo B VL 14: Java Collections/Reflections
Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrJava I Vorlesung Generics und Packages
Java I Vorlesung 9 Generics und Packages 21.6.2004 Generics Packages Qualifizierte Namen Mehr zu Zugriffsklassen Generics (Java 1.5) Die Klassen im Java Collections Framework sind mit dem Typ ihrer Elemente
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
MehrC++ Templates. Wozu Templates? Definition von Templates. Gebrauch von Templates. Instanziierung und Organisation
C++ Templates Wozu Templates? Definition von Templates Gebrauch von Templates Instanziierung und Organisation Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik Martin-Luther-Universität
Mehr