Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund

Größe: px
Ab Seite anzeigen:

Download "Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund http://ls7-www.cs.uni-dortmund.de"

Transkript

1 Von Java nach C++ Frank Weichert, Heinrich Müller Informatik VII Universität Dortmund Von Java nach C++, LS VII, Universität Dortmund, SS

2 Übersicht Einleitung Literatur Vergleich zwischen C++ und Java Klassen in C++ Übersetzungsprozess von C++-Programmen Programmieren in Visual Studio Ausgewählte C++-Konzepte Von Java nach C++, LS VII, Universität Dortmund, SS

3 Einleitung C makes it easy to shoot yourself in the foot, C++ makes it harder, but when you do, it blows away your whole leg. (Bjarne Stroustrup) Von Java nach C++, LS VII, Universität Dortmund, SS

4 Literatur Die C++-Programmiersprache, Bjarne Stroustrup, Addison-Wesley Visual C++, Frank Budszuhn, Addison-Wesley Von Java nach C++, LS VII, Universität Dortmund, SS

5 C++ vs. Java Von Java nach C++, LS VII, Universität Dortmund, SS

6 C++ vs. Java typisches Programm #include <iostreams.h> int main() { return 0; } import java.awt.*; class Test{ public static void main(string[] argv){ } } Dateinamen beliebig, Konvention *.cpp, *.h <Klassenname>.java generierter Code - Maschinencode - plattformabhängig -*.exe - Java-Byte-Code - plattformunabhängig -*.class Von Java nach C++, LS VII, Universität Dortmund, SS

7 C++ vs. Java bedingte Anweisungen, Schleifen, Verbundanweisungen, identisch Funktionen globale Funktionen möglich Felder int a[4]; int a[] = {1,2,3}; keine Überprüfung auf Array-Grenzen identisch Methoden müssen in einer Klasse stehen int a[] = new int[4]; int a[] = {1,2,3}; Felder sind Objekte, Überprüfung auf Array-Grenzen Konstanten const double pi=3.14; final double pi=3.14; Von Java nach C++, LS VII, Universität Dortmund, SS

8 C++ vs. Java (Variablen-) Deklaration keine Default-Werte int a[4]; Default-Werte int a[] = new a[4]; Speicherverwaltung durch den Programmierenden automatisch durch den Garbage Collector Eingabe- und Ausgabeanweisungen cin >> x; cout << x; x=iohelp.read(); System.out.println(x); Boolescher Datentyp bool boolean Von Java nach C++, LS VII, Universität Dortmund, SS

9 C++ vs. Java Type-Casting (explizite Konvertierung) a) (Typ) Ausdruck in C++ und Java erlaubt Beispiel: int a=3; double b=(double) a / 2; // b = 1.5 b) Typ (Ausdruck) nur in C++ erlaubt Beispiel: int a=3; double b= double(a) / 2; // b = 1.5 Von Java nach C++, LS VII, Universität Dortmund, SS

10 C++ vs. Java Zusätzliche Java-Funktionalität Automatische Speicherverwaltung Code ist (direkt) systemportabel Strings und Felder Applets Multitasking durch Thread-Modell Von Java nach C++, LS VII, Universität Dortmund, SS

11 C++ vs. Java Zusätzliche C++-Funktionalität (1) Zeiger (Pointer) Kontrolle des Memory Management Templates Operator-Overloading Mehrfachvererbung Präprozessor Von Java nach C++, LS VII, Universität Dortmund, SS

12 C++ vs. Java Zusätzliche C++-Funktionalität (2) Einschränkung des Wertebereichs in C++ per unsigned möglich z.b. int: bis unsigned int: 0 bis Symbolische Konstanten Präprozessorbefehl, erkennbar am # -Zeichen #define PI=3.14 (kein ; am Zeilenende) Typdeklaration Definiert neuen Namen für einen Datentyp typedef int Index; Index a=3; Von Java nach C++, LS VII, Universität Dortmund, SS

13 Ein einfaches Programm - Quellcodes Java: class BV{ } public static void main(string[] argv){ System.out.println "C++ in der Bildverarbeitung!"; } C++: #include <iostream> using namespace std; int main(int argc){ cout << "C++ in der Bildverarbeitung!"; return 0; } Von Java nach C++, LS VII, Universität Dortmund, SS

14 Ein einfaches Programm - Übersetzen Java: Dateiname: BV.java Übersetzen: javac BV.java Ausführen: java BV (Java Byte-Code) (Java Virtual Machine) C++: Dateiname: BV.cpp Übersetzen: cl /c BV.cpp Linken: link BV.obj cl BV.cpp Ausführen: BV Von Java nach C++, LS VII, Universität Dortmund, SS

15 Klassen in C++ Von Java nach C++, LS VII, Universität Dortmund, SS

16 Klassen in C++ Klassen in C++ = Deklaration + Implementierung Headerdatei (.h) Implementationsdatei (.cpp) Studierende.h: class Studierende{ }; Studierende.cpp: #include "Studierende.h" Von Java nach C++, LS VII, Universität Dortmund, SS

17 Klassen in C++: Aufbau der Headerdatei Studierende.h: class Studierende{ Konstruktor Destruktor Methoden Attribute public: Studierende(); ~Studierende(); void setzematrikelnummer(int nummer); int gibmatrikelnummer(); private: int matrikelnummer; }; Von Java nach C++, LS VII, Universität Dortmund, SS

18 Klassen in C++: Aufbau der Headerdatei Spezifizierung einer Klasse mit class Klassen sind immer public Konstruktoren und Destruktoren Konstruktoren: Instanziierung von Objekten Destruktoren: Löschen von instanziierten Objekten (~ vorangestellt) Deklaration von Methoden und Variablen (Instanz-) Variablen dürfen bei der Deklaration nicht initialisiert werden Modifier werden nicht separat spezifiziert Klassendefinition wird mit Semikolon beendet Von Java nach C++, LS VII, Universität Dortmund, SS

19 Klassen in C++: Aufbau der Implementationsdatei Einbinden der Headerdatei mit include Durch den Klassennamen und dem Bereichsoperator :: wird die Zugehörigkeit zur Klasse gekennzeichnet Studierende.cpp: #include "Studierende.h" Studierende::Studierende(){} Studierende::~Studierende(){} void Studierende::setzeMatrikelnummer(int nummer){ matrikelnummer = nummer; } int Studierende::gibMatrikelnummer(){ return matrikelnummer; } Von Java nach C++, LS VII, Universität Dortmund, SS

20 Klassen in C++: Aufbau der Implementationsdatei Präprozessoranweisung #include "Studierende.h bindet Headerdatei ein. Nennung von Fully Qualified Names z.b.: Studierende::Studierende() :: wird als Bereichsoperator (Scope Operator) bezeichnet inline-spezifikation möglich z.b.: inline int Studierende::gibMatrikelnummer(){ return matrikelnummer; } Von Java nach C++, LS VII, Universität Dortmund, SS

21 Übersetzungsprozess von C++-Programmen Von Java nach C++, LS VII, Universität Dortmund, SS

22 Übersetzen von C++-Programmen Übersetzungsprozess besteht aus drei Komponenten 1. Präprozessor: Vorverarbeitung des Quellcodes 2. Compiler: Überführt Quellcode in Objektcode 3. Linker: Fasst alle Objektdateien zu einem ausführbaren Programm zusammen Von Java nach C++, LS VII, Universität Dortmund, SS

23 Übersetzen von C++-Programmen Von Java nach C++, LS VII, Universität Dortmund, SS

24 Übersetzen von C++-Programmen Präprozessor Präprozessorbefehle beginnen mit dem #-Zeichen Sucht im Quellcode nach speziellen Befehlen, z.b. - #include einbinden von Headerdateien a) <name> Standard Libraries aus Systemverzeichnis z.b.: #include <iostream> b) name eigene Dateien aus Projektverzeichnis z.b.: #include "Studierende.h" -> Problem: mehrfache Deklarationen - #define führt textuelle Ersetzungen (Konstanten) aus. z.b.: #define pi #ifdef, #ifndef, Konditionales Kompilieren z.b.: #ifdef DEBUG #endif Von Java nach C++, LS VII, Universität Dortmund, SS

25 Übersetzen von C++-Programmen Präprozessor -> Problem: mehrfache Deklarationen Lösung: Headerdatei um konditionalen Kopf erweitern z.b.: Studierende.h: #ifndef STUDIERENDE_H #define STUDIERENDE_H class Studierende{ }; #endif Von Java nach C++, LS VII, Universität Dortmund, SS

26 Übersetzen von C++-Programmen Compiler Generiert aus dem vom Präprozessor vorverarbeiteten Quellcode den Objektcode. Maschinennahe Objektcodedatei kann noch offene Aufrufe enthalten und nicht ausgeführt werden. Überprüfung auf syntaktische Korrektheit - Fehlermeldungen z.b.: error C2065: 'h': nichtdeklarierter Bezeichner - Warnungen z.b.: warning C4244: 'Initialisierung': Konvertierung von 'double' in 'int', möglicher Datenverlust Objektcode wird nur erzeugt, sofern keine Fehler aufgetreten sind. Von Java nach C++, LS VII, Universität Dortmund, SS

27 Übersetzen von C++-Programmen Linker Generiert (vollständig) ausführbares Programm Fasst die - Objektdateien des Projektes, - Code aus Standard Libraries und - zusätzliche Libraries zusammen Zwei mögliche Link-Modi -statisch - dynamisch Von Java nach C++, LS VII, Universität Dortmund, SS

28 Programmieren in Visual Studio Von Java nach C++, LS VII, Universität Dortmund, SS

29 C++-Programm mit Visual Studio Neues Projekt anlegen: Datei -> Neu -> Projekt Projekttyp festlegen Projektnamen und Verzeichnis auswählen Von Java nach C++, LS VII, Universität Dortmund, SS

30 C++-Programm mit Visual Studio Initiales Arbeitsfenster der Entwicklungsumgebung Von Java nach C++, LS VII, Universität Dortmund, SS

31 C++-Programm mit Visual Studio Klasse hinzufügen (Header- und Implementationsdatei) Von Java nach C++, LS VII, Universität Dortmund, SS

32 C++-Programm mit Visual Studio Typ der Klasse auswählen, die hinzugefügt werden soll Von Java nach C++, LS VII, Universität Dortmund, SS

33 C++-Programm mit Visual Studio Klassennamen festlegen Modifikator und Basisklasse (optional) bestimmen Von Java nach C++, LS VII, Universität Dortmund, SS

34 C++-Programm mit Visual Studio Von Java nach C++, LS VII, Universität Dortmund, SS

35 C++-Programm mit Visual Studio Ausführbares Programm erstellen - Kompilieren (Strg+F7) - Programm ausführen (Strg+F5) - Programm unter Debugger ausführen (F5) Von Java nach C++, LS VII, Universität Dortmund, SS

36 C++-Programm mit Visual Studio Dateitypen von Visual-Studio Extension *.cpp *.h *.exe *.dsp *.dsw *.obj *.rc *.res C++-Quelldatei C++-Headerdatei Ausführbares Programm Informationen zum Projekt. Projekt kann über dsp- Datei geöffnet werden Informationen zum Arbeitsbereich. Dieser sollte auch über diese Datei geöffnet werden. Nicht eingebundene Kompilate (Objekt-Dateien) Ressourcen-Skriptdatei Bedeutung Binäre Ressourcendatei des Linkers Von Java nach C++, LS VII, Universität Dortmund, SS

37 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

38 Komplexe Datentypen Benutzerdefinierter Datentyp mit eindeutigem Namen typedef struct{ double x, y, z; } vector3d; int main() { vector3d veca = {0.4, 4, 6.2}; vector3d vecb; vecb = veca; // vecb = {0.4, 4, 6.2} double a = veca.z; // a = 6.2 Zugriff auf Elemente mit. -Operator Bei Zuweisungen werden komplette Strukturen kopiert Von Java nach C++, LS VII, Universität Dortmund, SS

39 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

40 Objekte instanziieren und löschen ProgrammStudierende.cpp: #include "Studierende.h" int main(int argc, char* argv[]){ Studierende* einstudent = new Studierende(); delete einstudent; } return 0; Instanziierung eines Objektes vom Typ Studierende Studierende*: Variablendeklaration einstudent: Zeiger auf Studierende new: Ruft Konstruktor auf und legt Objekt vom angegebenen Typ im Speicher an delete ruft Destruktor der Klasse auf und gibt den zuvor belegten Speicher wieder frei (kein Garbage Collector wie in Java) Von Java nach C++, LS VII, Universität Dortmund, SS

41 Zeiger und Referenzen Anweisung: Studierende* einstudent = new Studierende(); Repräsentierung: 0x0000 0x1200 Studierende int matrikelnummer Speicher Studierende* einstudent = 0x1200 0xffff Klasseninstanz Zeiger Von Java nach C++, LS VII, Universität Dortmund, SS

42 Zeiger und Referenzen Zeiger (Pointer): Variable, dessen Wert auf die Position (Speicheradresse) eines anderen Objektes zeigt. eigener Datentyp typisiert durch Zeichen * gekennzeichnet Beispiel: a) kein Zeiger: int a; b) mit Zeiger: int* a; Von Java nach C++, LS VII, Universität Dortmund, SS

43 Zeiger und Referenzen Adresse Speicherstelle, die für ein Objekt zur Verfügung gestellt wird. Die Adresse wird bei der Objekt- Instanziierung und der damit verbundenen Bereitstellung des benötigten Speichers vergeben. Inhalt Wert (Daten), der für ein Objekt unter einer Adresse gespeichert wird. Initiale Belegung erfolgt durch den Konstruktor. Von Java nach C++, LS VII, Universität Dortmund, SS

44 Zeiger und Referenzen Pointer: Pointer (Pointervariable) ist eine Variable in der eine Adresse gespeichert wird. Die Variable hat den identischen Typ wie die Variable, deren Adresse gespeichert wird. Dereferenzierungsoperator * : Zugriff auf den Wert, der in der Pointervariablen gespeicherten Adresse steht ( Wert, auf den der Pointer verweist ) Referenzoperator & : Liefert für eine Variable die zugehörige Speicheradresse Von Java nach C++, LS VII, Universität Dortmund, SS

45 Zeiger und Referenzen Pointer-Deklaration Adresse Name int *iptr;??? iptr Pointer-Deklaration und Initialisierung Adresse Name int *iptr=0; NULL iptr Von Java nach C++, LS VII, Universität Dortmund, SS

46 Zeiger und Referenzen Deklaration eines primitiven Datentyps Adresse Name int i=423; i Pointer-Initialisierung und Adressoperator Adresse Name int *iptr=0; iptr = &i; NULL iptr Von Java nach C++, LS VII, Universität Dortmund, SS

47 Zeiger und Referenzen Vereinfachte grafische Repräsentierung Adresse Name i i 423 Adresse Name iptr iptr Von Java nach C++, LS VII, Universität Dortmund, SS

48 Zeiger und Referenzen Initialisierung von Pointern int a = 423; a 423 int b = 78; b 78 int *ptr_1 = &b; ptr_1 int *ptr_2 = ptr_1; ptr_2 int *ptr_3 = &a; ptr_3 Von Java nach C++, LS VII, Universität Dortmund, SS

49 Zeiger und Referenzen Pointer Aliasing: Zwei Pointer enthalten dieselbe Adresse a 423 *ptr_1 = *ptr_3; ptr_2 = ptr_3; b ptr_1 ptr_ ptr_3 Von Java nach C++, LS VII, Universität Dortmund, SS

50 Zeiger und Referenzen Zeigervariablen können auch auf einen weiteren Zeiger verweisen Auch iteriete Pointer-Anwendungen sind möglich Jeder * -Operator im Ausdruck entspricht einer Dereferenzierung int a = 423; a 423 int *ptr = &a; ptr int **ptrptr = 0; ptrptr = &ptr; ptrptr NULL Von Java nach C++, LS VII, Universität Dortmund, SS

51 Zeiger und Referenzen Anwendungsbeispiel #include <iostream> #include "Studierende.h" using namespace std; int main(int argc, char* argv[]){ Studierende* einstudent = new Studierende(); einstudent->setzematrikelnummer(88456); Studierende zweiterstudent; zweiterstudent.setzematrikelnummer(87393); Studierende* ptr_zweiterstudent = &zweiterstudent; cout << ptr_zweiterstudent << endl; Studierende* dritterstudent = NULL; dritterstudent->setzematrikelnummer(89263); delete einstudent; delete dritterstudent; return 0; } Von Java nach C++, LS VII, Universität Dortmund, SS

52 Zeiger und Referenzen Zeiger einstudent, der auf Objekt vom Typ Studierende zeigt Über Operator -> (Dereferenzieren) Methode aufrufen ( es wird einem Zeiger gefolgt ) Studierende* einstudent = new Studierende(); einstudent->setzematrikelnummer(88456); zweiterstudent als (statische) Instanz Methodenaufruf für statische Instanzen über Punktoperator Studierende zweiterstudent; zweiterstudent.setzematrikelnummer(87393); Von Java nach C++, LS VII, Universität Dortmund, SS

53 Zeiger und Referenzen Pointer auf statische Instanz über Referenzoperator & Studierende* ptr_zweiterstudent = &zweiterstudent; cout << ptr_zweiterstudent << endl; Zeiger für ein Objekt, der mit NULL initialisiert wird Methodenaufruf führt zu einem Laufzeitfehler (Exception) Studierende* dritterstudent = NULL; dritterstudent->setzematrikelnummer(89263); Von Java nach C++, LS VII, Universität Dortmund, SS

54 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

55 Vererbung einfache Vererbung: Klasse Bachelor erbt von Klasse Studierende Vererbungsoperator : (entspricht extends in Java) Studierende Bachelor Studierende.h: class Studierende{ }; Bachelor.h: #include "studierende.h" class Bachelor : public Studierende{ public: Bachelor(); ~Bachelor(); }; Von Java nach C++, LS VII, Universität Dortmund, SS

56 Vererbung Mehrfachvererbung: Klasse Bachelor erbt von Klassen Studierende und HiWi Studierende HiWi Bachelor Bachelor.h: #include "studierende.h" #include "HiWi.h" class Bachelor : public Studierende, public HiWi{ public: Bachelor(); ~Bachelor(); }; Von Java nach C++, LS VII, Universität Dortmund, SS

57 Ausgewählte C++-Konzepte Komplexe Datentypen Zeiger und Referenzen Vererbung STL Von Java nach C++, LS VII, Universität Dortmund, SS

58 STL Standard-Template-Library (kurz STL) Vordefinierte Templates für viele Anwendungsbereiche STL gliedert sich in drei Teilbereiche auf: 1.) Container: Speicherstrukturen, z.b. Bäume, Listen, 2.) Algorithmen: Operatoren für Container-Klassen, z.b. Sortieren einer Liste 3.) Iteratoren: Traversierungsoperatoren für Container-Klassen Einbinden der Headerdateien per include ohne Endung.h Beispiel: #include<list> Notwendigkeit des korrekten Namespace, geschieht durch die Anweisung using namespace std; Infos zur STL: Silicon Graphics Inc., Von Java nach C++, LS VII, Universität Dortmund, SS

59 STL Anwendungsbeispiel: #include <list> #include "Studierende.h" using namespace std; int main(int argc, char* argv[]){ Studierende* student1 = new Studierende(); Studierende* student2 = new Studierende(); } list<studierende*> listestudierende; listestudierende.push_back(student1); listestudierende.push_back(student1); Einbinden der Headerdatei für die Container-Klasse list. Instanziierung einer Liste listestudierende, die Zeiger auf Objekte vom Typ Studierende speichern kann. Methode push_back fügt Zeiger auf Typ Studierende der Liste an. Von Java nach C++, LS VII, Universität Dortmund, SS

Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de

Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-.de Von Java nach C++, Lehrstuhl Informatik VII, TU Dortmund 1 Übersicht Einleitung Literatur

Mehr

Von Java nach C++ Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund

Von Java nach C++ Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund Von Java nach C++ Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-.de Vorkurs Informatik, Von Java nach C++, LS VII, TU Dortmund, WS 2009/2010 1 Übersicht

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

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

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Objektbasierte Entwicklung

Objektbasierte 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

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

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Praxisorientierte Einführung in C++ Lektion: Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm) Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte

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

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Programmentwicklung mit C++ (unter Unix/Linux)

Programmentwicklung mit C++ (unter Unix/Linux) Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams

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

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

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren 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

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

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

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

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

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

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

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

3 Objektorientierte Konzepte in Java

3 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

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

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung. Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter

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

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

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

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

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung

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

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

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

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

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

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

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

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

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung new/delete, virtual, Typumwandlungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 new/delete

Mehr

Datentypen: Enum, Array, Struct, Union

Datentypen: Enum, Array, Struct, Union Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

C++ - Eine Ubersicht fur Java-Programmierer

C++ - Eine Ubersicht fur Java-Programmierer C++ - Eine Ubersicht fur Java-Programmierer Daniel Wasserrab Lehrstuhl fur Programmierparadigmen Universitat Karlsruhe 23. April 2008 C++ I Entwickelt Anfang der 80er von Bjarne Stroustrup I Beeinut von

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

DLLs (dynamic loaded libraries) mit MingW erstellen

DLLs (dynamic loaded libraries) mit MingW erstellen DLLs (dynamic loaded libraries) mit MingW erstellen Autor: Michel D. Schmid Datum: April 2, 2009 Contents 1 Einführung 1 1.1 Open-Source Tools.......................................... 1 2 Beispiel 1:

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

Applications Applets (eingeschränkte Rechte)

Applications Applets (eingeschränkte Rechte) 1 Arten von Java-Programmen Man unterscheidet 2 verschiedene Arten von Java-Programmen: Applications Applets (eingeschränkte Rechte) Erstere sind eigenständige Programme. Letztere sind "kleine" Programme,

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Übersicht In den ersten Wochen: Einführung in objektorientierte Programmierung mit C++ Anschließend: Einführung in die programmierbare

Mehr

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 von Christoph Knabe http://public.beuth-hochschule.de/~knabe/ Ch. Knabe: Operationalisierbare Qualitätskriterien

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Objektorientierte Programmierung mit C++ Vector und List

Objektorientierte Programmierung mit C++ Vector und List Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Tutorium 5 - Programmieren

Tutorium 5 - Programmieren Tutorium 5 - Programmieren Grischa Liebel Uni Karlsruhe (TH) Tutorium 11 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

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

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg C vs. C++ Sebastian Meyer Universität Hamburg Proseminar C - Grundlagen und Konzepte 2013 1 / 31 Gliederung 1 Einführung 2 Vergleich der Spracheigenschaften 3 Neue Sprachelemente in C++ 4 Fazit 5 Zusammenfassung

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