Objektbasierte Entwicklung
|
|
- Leander Burgstaller
- vor 5 Jahren
- Abrufe
Transkript
1 Objektbasierte Entwicklung Die kanonische Form von C Strukturen und was haben Abstrakte Datentypen mit der JVM zu tun? Prof. Dr. Nikolaus Wulff
2 ADT in C Objekte mit gemeinsamen Attributen und Verhalten werden als Instanzen einer Klasse modelliert. Beispiele: Konto, Kunde, Buchung etc. C kennt zwar keine Klassen, es lassen sich jedoch mit Strukturen entsprechende Abstrakte Datentypen definieren. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 2
3 Klassen in C Gemeinsame Attribute lassen sich in C mit Hilfe einer Struktur in einer *.h Datei definieren: struct konto_struct { char* waehrung; char* kontonr; double saldo; }; Das gemeinsame Verhalten aller Konto Instanzen wird durch entsprechende Methoden abgebildet: extern double getsaldo(struct konto_struct* konto); Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 3
4 C Strukturen Die im Header deklarierten Strukturen und Methoden stellen die öffentliche Schnittstelle der modellierten Klasse da: Zwei Attribute kontonr, saldo sowie die Methode getsaldo. Damit die Methode auf dem jeweiligen Konto operieren kann wird eine Referenz auf die Struktur des Kontos übergeben. Die Implementierung in Konto.c ist trivial: #include "Konto.h" double getsaldo(struct konto_struct* konto) { return konto->saldo; } Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 4
5 Verwendung der C Klasse Die Verwendung dieses ADT könnte so aussehen: #include <stdio.h> #include "Konto.h" int main(int argc, char* argv[]) { struct konto_struct konto = {"Euro","08-a",10000}; printf("konto %s hat ein Saldo von %f %s\n", getkontonr(&konto), getsaldo(&konto), getwaehrung(&konto) ); } return 0; Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 5
6 Eigene Typen definieren Lästig ist die Pointer Arithmetik und das Offenlegen der Struktur. Hier erweist sich die Definition eines eigenen Typen per typedef als nützlich: typedef struct konto_struct* Konto; Die Methode double getsaldo(struct konto_struct* konto); kann dann prägnanter geschrieben werden als: double getsaldo(konto konto); Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 6
7 Verwendung des ADTs #include <stdio.h> #include <stdlib.h> #include "Konto.h" int main(int argc, char* argv[]) { Konto konto = newkonto(euro, " ", 10000); } printf("konto %s hat ein Saldo von %f %s\n", getkontonr(konto), getsaldo(konto), getwaehrung(konto) ); free(konto); return 0; Konten sind jetzt Pointer und erfordern malloc und free! Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 7
8 Klassen erweitern Die Methode getsaldo erscheint auf dem ersten Blick überflüssig, das Attribut saldo kann auch direkt der Struktur entnommen werden... Was ist jedoch bei unterschiedlichen Ausprägungen von Konto, z.b. einem Fremdwährungskonto bei dem der aktuelle Wert berechnet werden muss? Hierzu muss die Kontostruktur entsprechen erweitert werden. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 8
9 Vererbung in C Das Fremdwährungskonto ist eine Spezialisierung eines Kontos mit zusätzlichen Attributen und nach außen gleichem Verhalten: typedef struct fremdwaehrungs_konto_struct { char* waehrung; char* kontonr; double saldo; double konvertierung; } *FremdKonto; Ein solches Fremdkonto kann wie ein Konto verwendet werden. Es muß jedoch die getsaldo Methode anders darauf reagieren. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 9
10 Methoden erweitern Die Methode getsaldo reagiert je nach Kontoausprägung unterschiedlich: double getsaldo(konto konto) { double saldo = konto->saldo; if (!strcmp(euro, konto->waehrung)) { } saldo *= ((FremdKonto)konto)->konvertierung; } return saldo; Handelt es sich um ein Fremdwährungskonto wird entsprechend umgerechnet. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 10
11 Das Methoden Problem Es stört, das die Methode getsaldo für jede mögliche Kontoart anders reagieren muss. Die Alternative zwei unterschiedliche Methoden getsaldo und getsaldofremdwaehrung zu implementieren klingt auch nicht gut, denn der aufrufende Client sieht dann nicht mehr eine einheitliche Konto Schnittstelle. Hierzu bietet es sich an die Methoden zu überladen und an den jeweiligen Kontostrukturen zu verankern. C kennt hierzu das Konstrukt eines Pointers auf eine Methode. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 11
12 Function Pointer Die aufzurufende Methode wird direkt an der Struktur notiert: struct konto_struct { char* waehrung; char* kontonr; double saldo; double (*getsaldo)(konto konto); }; Beim Erzeugen der unterschiedlichen Konto Typen muß im newkonto Konstruktor der Pointer auf eine entsprechende Methode gesetzt werden. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 12
13 Überladene Methoden Die Methoden werden mit dem static Attribute auf private gesetzt und sind von außen nicht aufrufbar: static double geteurosaldo(konto konto) { double saldo = konto->saldo; return saldo; } static double getforeignsaldo(konto konto) { double saldo = konto->saldo; saldo *= ((FremdKonto)konto)->konvertierung; return saldo; } Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 13
14 Ein C Konstruktor Konto newkonto(char* waehrung, char* kontonr, double saldo) Konto konto; if (!strcmp(euro, waehrung) ) { konto = (Konto) malloc(sizeof(struct konto_struct)); konto->getsaldo = geteurosaldo; } else { konto = (Konto) malloc(sizeof(struct fremdwaehrungs_ konto->getsaldo = getforeignsaldo; Konto->konvertierung = getkonvertierung(waehrung); } konto->waehrung = waehrung; konto->kontonr = kontonr; konto->saldo = saldo; return konto; } Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 14
15 Transparenter Methodenaufruf Der Aufruf der unterschiedlichen Konten ist jetzt bis auf den Konstruktor identisch: Konto konto = newkonto(euro, " ",10000); Konto fremd = newkonto(usd, " ", 500); printf(" EuroKonto %f \n", konto->getsaldo(konto) ); printf(" FremdKonto %f \n",fremd->getsaldo(fremd) ); Beim Fremdkonto wird jedoch automatisch eine andere Implementierung der getsaldo Methode aufgerufen, ohne das der Aufrufer diese bemerkt! Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 15
16 Doppelte Verkettung Was stört, ist die doppelte Verwendung der Konto Struktur: konto->getsaldo(konto); Zum einen enthält die Kontostruktur den Pointer auf die zu verwendende Methode, zum anderen benötigt diese Methode genau die Attribute der Struktur zum Berechnen des Saldos... Hier kann der Präprozessor kosmetisch helfen: #define actualsaldo(k) (k)->getsaldo((k)) printf(" Saldo von %f \n", actualsaldo(konto) ); Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 16
17 Ein Diagramm Editor Ein Diagramm Editor soll generische 2D-Objekte zeichnen und verwalten können. Es gibt unterschiedliche 2D-Objekte, wie Rechtecke, Kreise, Textfelder, etc. Die 2D-Objekte werden durch den ADT Shape modelliert, der den abstrakten Oberbegriff und die gemeinsamen Attribute und Methoden bereitstellt. Shapes werden durch eine entsprechende C Struktur implementiert. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 17
18 Diagramm Editor Design Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 18
19 Verkettung von Strukturen Die Struktur eines Shapes ist für alle geometrischen Objekte einheitlich: #ifndef SHAPE_H_ #define SHAPE_H_ #include <assert.h> #include <stdarg.h> typedef struct shape_struct* Shape; struct shape_struct { int x; int y; void (*draw) (Shape ashape); }; Shape.h Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 19
20 Erweiterungen von Strukturen Die zusätzlichen Argumente des Rechtecks werden dann hinten angehängt : #ifndef RECT_H_ Rect.h #define RECT_H_ #include "Shape.h" typedef struct rect_struct* Rect; struct rect_struct { int x; int y; void (*draw) (Shape ashape); int w; int h; }; Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 20
21 Casting von Strukturen Die unterschiedlichen Pointer von Shape Strukturen lassen sich gefahrlos aufeinander casten, solange die Strukturen zueinander kompatibel sind: Shape int x; int y; draw Cast-Grenze Circle int x; int y; draw int r; drawcircle Rect int x; int y; draw int w; int h; drawrect Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 21
22 Gefährliches Casten Diese Art von Strukturvererbung ist zwar sehr elegant aber auch sehr gefährlich. Was ist wenn die Shape.h Struktur verändert wird ohne das Rect.h angepasst wird? Shape char t; int x; int y; draw Circle int x; int y; draw int r; xfe32 10 xfe32:drawcircle Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 22
23 Gefährliches Casten Wird ein solches Rect Struct auf ein Shape gecasted so ist dies auf Grund der Strukturveränderung nicht mehr konform. Der Methoden Pointer zeigt in den Datenbereich und wird zu einem Absturz führen. Circle Shape 10:Nirwana char int x; t; int y; x; draw inty; draw int r; xfe32 10 xfe32:drawcircle Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 23
24 Automatisierung der Vererbung Gesucht wird eine Möglichkeit diese gefährlichen Seiteneffekte zu verhindern: struct p2d { int x; int y; }; struct p2d { int x; int y; }; struct p3d { int x; int y; int z; }; struct p3d { struct p2d p2; int z; }; Die rechte Version garantiert, dass alle Änderungen von p2d automatisch auch für p3d gelten. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 24
25 Vererbung versus Aggregation Leider drückt die rechte Seite nicht dasselbe wie die linke Seite aus. Wir versuchen mit C Vererbung zu emulieren. Die rechte Seite modelliert jedoch keine Vererbung sondern eine Aggregation! Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 25
26 Verwendung von Point3D Der Unterschied wird sehr schnell deutlich, wenn die rechte Variante instanziiert und verwendet wird: struct p2d point2 = { 2, 4 }; struct p3d point3 = { {1, 4}, 5}; struct p3d another= { point2, 5}; point2.x = 1; point2.y = 0; point3.p2.x = 3; point3.p2.y = 4; point3.z = 3; point3 enthält eine Instanz von p2d. Er ist jedoch kein Subtyp von p2d. anonymous structs seit C11 können helfen Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 26
27 Automatisierung durch Macros Die einzige Chance hier weiter zu kommen ist es den C Präprozessor einzusetzen. #define ATTRIBUTE_2D() \ int x,y; #define ATTRIBUTE_3D() \ ATTRIBUTE_2D() \ int z; struct p2d { ATTRIBUTE_2D() }; struct p3d { ATTRIBUTE_3D() }; Änderungen an der 2D Struktur werden automatisch auch an die 3D Struktur propagiert. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 27
28 Operationen Bis lang konzentrierte sich alles auf die Attribute der mit C-Structs modellierten Shapes. Was ist wenn weitere Methoden hinzukommen? struct shape_struct { int x; int y; void (*draw) (Shape ashape); void (*moveto) (Shape ashape, int x, int y); void (*erase) (Shape ashape); }; Die Shapes unterscheiden sich nur durch ihre Attribute. Alle Shapes vom selben Typ müssen die gleichen Operationen und Methodenpointer haben. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 28
29 GTK Separationsansatz Das Linux Graphical Toolkit GTK ist ein gutes Beispiel für ein modulares Design. Es ist vollkommen in C programmiert, bietet jedoch eine objektorientierte API an. Jedes graphische Element ist als ein GtkWidget modelliert, dass entsprechende Methoden zur Verfügung stellt. Die Attribute und die zugehörigen Methoden werden in zwei getrennten Structs modelliert. => Der Speicherplatz für die Methoden wird nicht pro Instanz benötigt sondern geteilt. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 29
30 Shapes revisited Die Aufteilung in Methoden und Attribute erfolgt in zwei Structs XXX_Instance und XXX_Class: typedef struct shape_instance* Shape; typedef struct shape_class { void (*draw) (Shape ashape); void (*erase) (Shape ashape); void (*moveto) (Shape ashape, int x,int y); } ShapeClass; struct shape_instance { ShapeClass *class; int x; int y; }; Jede Instanz hat einen Pointer auf die Methoden. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 30
31 Der kanonische C ADT Die kanonische Form besteht aus zwei Strukturen: Eine Struktur für das Verhalten, sie repräsentiert die Methoden und stellt das Klassengerüst dar. Eine Struktur für den Zustand, sie repräsentiert die Attribute und stellt Instanzen dar. typedef struct ADT_Instance* ADTInstance; typedef struct ADT_Class { rettype (*adtmethod) (ADTInstance obj); } ADTClass; struct ADT_Instance { ADTClass *class; attrtype adtvariable; }; Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 31
32 Java Klassen und Objekte Die JVM verwaltet auf diese Art Klassen und ihre zugehörigen Instanzen/Objekte. Zu jedem Objekt kann mit obj.getclass() die Klasse ermittelt werden. Das class Objekt verwaltet u.a. alle Methoden. Per Reflection API kann auf diese Methoden Zeiger zugegriffen und das Objekt manipuliert werden. Diese API ist auch zum Verständnis von Java Native Calls per JNI wichtig. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 32
33 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 x; int y; } ShapInstance; Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 33
34 Rect kanonische Form Die Rect Strukturen sind fast identische Kopien der Shape Strukturen: typedef struct Rect_Instance_struct* Rect; typedef struct Rect_Class_struct { void (*draw) (Shape ashape); void (*erase) (Shape ashape); void (*moveto) (Shape ashape, int x,int y); void (*resize) (Shape ashape, int w,int h); } RectClass; typedef struct Rect_Instance_struct { RectClass *class; int x; int y; int w; int h; } RectInstance; Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 34
35 Präprozessoroperatoren Der Präprozessor kann helfen solche generischen Strukturen, die fast identische Kopien sind und sich nur durch Namen entscheiden, zu generieren. Es lassen sich Macros definieren, die als Vorlagen ähnlich den C++ Templates dienen und den Quellcode durch Textersetzung erzeugen. Eine wichtige Rolle spielen hierbei die beiden Präprozessoroperatoren # und ##: # setzt den Parameter in Hochkomma als String ## konkateniert zwei Symbole zu Einem Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 35
36 Zeichen Macros #define makestr(x) #x #define concat(x,y) x ## y Der Ausdruck makestr(hello) wird dann zum String "hello" expandiert. Der Ausdruck concat(shape, Class) ergibt das Symbol ShapeClass (nicht als String!). Mit diesen beiden Operatoren lassen sich Quelltexte generieren. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 36
37 C Klassen per Makros Die kanonische Aufteilung in Instanz und Class Strukturen lässt sich per Coding by Convention durch Makros erzwingen und generieren. BEG_DEFINE_CLASS(T) generiert die Class Struktur zum Typen T. BEG_DEFINE_INSTANCE(T) generiert die Instanz Struktur zum Typen T und beinhaltet auch den Zeiger auf die Class Struktur. Ähnlich wie bei C++ Templates oder Java Generics ist T ein Platzhalter für den Typen, z.b. Shape. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 37
38 Shapes per Macro generieren #define BEG_DEFINE_CLASS(T) \ typedef struct T##_Instance_struct* T; \ typedef struct T##_Class_struct { #define END_DEFINE_CLASS(T) \ } T##Class; #define BEG_DEFINE_INSTANCE(T) \ typedef struct T##_Instance_struct { \ T##Class *clazz; #define END_DEFINE_INSTANCE(T) \ } T##Instance; \ extern T new##t(int* args); Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 38
39 Shape Attribute + Methoden #define SHAPE_METHODES \ void (*draw) (Shape ashape); \ void (*erase) (Shape ashape); \ void (*moveto) (Shape ashape, int x,int y); #define SHAPE_ATTRIBUTES \ int x; \ int y; Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 39
40 Cleveres malloc Mit dem Präprozessor lässt sich auch der malloc Aufruf vereinfachen und typsicher machen: #define alloc(t) (T) malloc( \ sizeof(t ## Instance)) Mit diesem Macro wird immer Code zum passenden ADT erzeugt und die Verwendung von malloc vereinfacht sich von: Rect obj = (Rect) malloc( sizeof(struct Rect_Instance_struct)); zu: Rect obj = alloc(rect); Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 40
41 Shape.h mit Macros BEG_DEFINE_CLASS(Shape) SHAPE_METHODES END_DEFINE_CLASS(Shape) BEG_DEFINE_INSTANCE(Shape) SHAPE_ATTRIBUTES END_DEFINE_INSTANCE(Shape) So einfach und aufgeräumt kann eine *.h Datei sein Allerdings sind die Strukturen schwieriger zu verstehen, da die Macros vieles verstecken. Rect.h wird mit genau den selben Macros erzeugt. Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 41
42 Rect.h mit Macros #ifndef RECT_H_ #define RECT_H_ #include "Shape.h" BEG_DEFINE_CLASS(Rect) RECT_METHODES SHAPE_METHODES void (*resize) (Rect r, int w, int h); END_DEFINE_CLASS(Rect) BEG_DEFINE_INSTANCE(Rect) SHAPE_ATTRIBUTES int w; RECT_ATTRIBUTES int h; END_DEFINE_INSTANCE(Rect) #define size(r,x,y) R->clazz->resize(R, (x), (y)) #endif /* RECT_H_ */ Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 42
43 Rect kanonische Form Diese einfachen Macro Templates generieren zur Compile Zeit die komplette Rect Header Datei: typedef struct Rect_Instance_struct* Rect; typedef struct Rect_Class_struct { void (*draw) (Shape ashape); void (*erase) (Shape ashape); void (*moveto) (Shape ashape, int x,int y); void (*resize) (Shape ashape, int w,int h); } RectClass; typedef struct Rect_Instance_struct { RectClass *class; int x; int y; int w; int h; } RectInstance; Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 43
44 Rect.c static void resize(rect obj, int h, int w) { obj->h = h; obj->w = w; } static RectClass rectclass = {draw, erase, moveto, resize }; Shape newrect(int args[]) { Rect obj = alloc(rect); obj->clazz = &rectclass; obj->x = args[0]; obj->y = args[1]; obj->h = args[2]; obj->w = args[3]; return (Shape) obj; } Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 44
45 Vererbung automatisieren Eine Vererbungshierarchie lässt sich durch zwei weitere Makros EXTENDS und INSTANCE_OF deklarativ implementieren: BEG_DEFINE_CLASS(Circle) EXTENDS(Shape) METHODS(Circle) END_DEFINE_CLASS(Circle) BEG_DEFINE_INSTANCE(Circle) INSTANCE_OF(Shape) ATTRIBUTES(Circle) END_DEFINE_INSTANCE(Circle) Wie sind EXTENDS und INSTANCE_OF definiert? Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 45
46 Kürzer geht es nicht... Wem selbst dies noch zu viel ist, der kann noch das Makro DEFINE_BASE_TYPE für eine Wurzelklasse wie z.b. Shape DEFINE_BASE_TYPE(Shape) und DEFINE_EXTENDED_TYPE für eine Kindklasse wie z.b. Rect definieren: DEFINE_EXTENDED_TYPE(Rect,Shape) Debugen wird schwieriger mit gcc save-temps kann der generierte Code gespeichert werden... Prof. Dr. Nikolaus Wulff Höhere Programmierkonzepte 46
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
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 Calls. Einbinden von C Bibliotheken in Java Klassen. Prof. Dr. Nikolaus Wulff
Java Native Calls Einbinden von C Bibliotheken in Java Klassen Prof. Dr. Nikolaus Wulff GUI und Model Die GUI des DeviceEditors ist in Java implementiert. Die Anwendung ist allerdings ohne eine fachliche
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
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrJava 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
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
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
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
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 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
MehrProgrammierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Inhalt Compiler/Editor Klassendeklaration
MehrC++ - Objektorientierte Programmierung Polymorphie
C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie
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
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object
Mehr6. Globalübung (zu Übungsblatt 8)
6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006
MehrObjekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.
Objekte und Klassen INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? typedef struct Konto { double saldo; int id; Konto; Modul "konto" konto.h konto.c Prozedurale Programmierung:
Mehr1 Einleitung Generizität Syntax... 2
Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................
MehrKapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt
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
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
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
MehrTag 7 Repetitorium Informatik (Java)
Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrFakultä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 **
MehrSystempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2
Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 29.10. Foliensatz 2 Modularisierung (T) Eigene Headerdateien und Bibliotheken (P) Arten der Parameterübergabe (P) Arrays und Strukturen
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
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
MehrÜberblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen
MehrVariablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
MehrEinführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
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
MehrEinführung in C# Teil 3. Matthias Nübling
Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts
MehrProf. Dr. Uwe Schmidt. 17. August Aufgaben zur Klausur C und Objektorientierte Programmierung im SS 2010 (WI h103, II h105, MI h353)
Prof. Dr. Uwe Schmidt 17. August 2010 Aufgaben zur Klausur C und Objektorientierte Programmierung im SS 2010 (WI h103, II h105, MI h353) Zeit: 150 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre
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
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter
MehrVorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3
Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrObjektorientierung (OO)
Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members
MehrVokabeln. 4.1 Benutzer definierte Datentypen. Kapitel 4. Prof. Dr. Gerhard Berendt C++ oop? SS 2002 Arbeitsblatt 4
4.1 Benutzer definierte Datentypen C++ unterstützt die Einführung benutzer definierter Datentypen (auch Abstrakte Datentypen (ADT) genannt). ADTs bieten einen guten Einstieg in das Paradigma der objekt
MehrProgrammierkurs Java
Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie
MehrKapitel 13. Definition von Klassen. OOP Thomas Klinker 1
Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche
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
MehrAbend 4 Übung : Erweitern von Klassen durch Vererbung
Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren
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,
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
MehrInhalte der Grundlagen
Inhalte der Grundlagen Programmieren mit Klassen Operatoren für Klassen Laufzeit- und Codeoptimierung Referenzen und Konstanten UGE - IPD Freunde und andere Typen Templates UGE - IPD UGE - IPD UGE - IPD
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:
MehrKlausur Software-Entwicklung März 01
Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,
MehrA practical guide to C++
A practical guide to Janis Fehr fehr@informatik.uni-freiburg.de SommerCampus2004 Janis Fehr A practical guide to Kapitel 2 Start Kurstag 2: Agenda Wiederholung der Themen von Tag 1 Codeoptimierung Namespace
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
MehrProgrammieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff
Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen
MehrEinleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens
Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
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
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
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:
MehrEinführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin
Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
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
MehrKlassen und Objekte 1
Klassen und Objekte 1 Retrospektive Für die die Modellierung von Dingen oder Sachverhalten nutzt man in in c Strukturen. Strukturen sind dabei benutzerdefinierte Datentypen, die die Komponenten verschiedenen
MehrEinleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrDie abstrakte Klasse Expression:
Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die
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
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
MehrMusterübung 09: Vererbung und Dynamische Bindung
Musterübung 09: Vererbung und Dynamische Bindung Abgabetermin: TT.MM.JJJJ Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Hofer) G4 (Angerer) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben
Mehr7. Objektorientierung. Informatik II für Verkehrsingenieure
7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete
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
MehrIT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots. falls Zeit: Scheduling 8.11.
IT I: Heute Nachbetrachtung Wissensüberprüfungen Einführung Vererbung Roboter in becker.robots falls Zeit: Scheduling 8.11.2016 IT I - VO 5 1 Organisatorisches VO nächste Woche im Peter-Tunner-HS! Tutorium
MehrProgrammierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden
MehrProgrammierkurs. Steffen Müthing. November 30, Interdisciplinary Center for Scientific Computing, Heidelberg University
Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University November 30, 2018 Objektorientiertes Programmieren Kapselung const und Klassen Initialisierung und
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrProgrammierkurs C++ Abstrakte Klassen und Methoden
Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double
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
MehrPraxis der Programmierung
Liste, Ausnahmefehler, Template-Funktionen und -Klassen Institut für Informatik und Computational Science Henning Bordihn 1 Stack als einfach verkettete Liste 2 Aufgabe 1 1. Kopieren Sie aus /home/rlehre/w13
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
MehrJava Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017
Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java
MehrMusterlösung der Testklausur zur Vorlesung. Programmieren in C. Prof. Dr. Nikolaus Wulff WS/SS 2004/05
Musterlösung der Testklausur zur Vorlesung Programmieren in C Prof. Dr. Nikolaus Wulff WS/SS 2004/05 Juni 2005 1 Der Lottogewinn #define MAX_TIPS 6 typedef struct lotto_schein *LottoSchein; typedef struct
MehrProgrammieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
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
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
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:
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default
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
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrExkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen
Mehr10.4 Konstante Objekte
10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären
MehrC-Kurs 2010 Pointer. 16. September v2.7.3
C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next
MehrAllgemeines - Prinzipien
OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 IDE - Integrated Development Environment
MehrObjektorientierte Programmierung
C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen
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
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
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
Mehreinlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
MehrProf. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen
Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen
Mehr