10.4 Konstante Objekte
|
|
- Fritzi Grosse
- vor 5 Jahren
- Abrufe
Transkript
1 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 sie in der Klasse als const deklariert. Es dürfen nur Methoden aufgerufen werden, die die Attribute nicht ändern. Ausgenommen hiervon ist der Konstruktor, welcher genau einmal zum Initialisieren aufgerufen wird. Alle Eigenschaften und Regeln von konstanten einfachen Datentypen lassen sich auf konstante Klassen übertragen. int main () const Point p1 ( 47, 11 ); Während die Aufrufe der Methoden SetPt und AddPt sicherlich für konstante Objekte nicht sinnvoll sind, sollte der Aufruf von Print schon möglich sein, da diese Methode keine internen Daten verändert. Um dem Compiler mitzuteilen, daß eine Methode keine Attribute der Klasse ändert, sind diese mit Hilfe des Schlüsselwortes const als konstant festzulegen. Das Schlüsselwort wird dabei sowohl in der Deklaration als auch in der Definition der entsprechenden Methode hinter den Methodennamen und die Parameterliste geschrieben: class Point void Print () const; ; // Folgendes funktioniert nicht: p1.setpt ( 4, 2 ); p1.addpt ( Point ( 4, 2 ) ); p1.print (); void Point::Print() const WS 2001/02 Programmierkurs C++ Seite 151 WS 2001/02 Programmierkurs C++ Seite Kopieren von Objekten Es ist einfach möglich, eine Kopie eines Objektes anzulegen, indem man diesem bei der Definition ein bestehendes Objekt gleichen Typs zuweist. Folgendes Codebeispiel Point p1 ( 47, 11 ); Point p2 = p1; p2.print (); liefert die (erwartete) Ausgabe (47,11) Der Compiler sorgt in so einem Fall also dafür, daß die Werte aller Attribute von einem Objekt zu dem anderen Objekt kopiert werden. Das dies nicht immer zu den gewünschten Ergebnissen führt, zeigt das folgende Beispiel: 1 c l a s s S t r i n g 2 3 p r i v a t e : 4 unsigned l e n ; 5 char s t r i n g ; 6 7 public : 8 S t r i n g ( ) ; 9 S t r i n g ( c o n s t char s ) ; 10 ~ S t r i n g ( ) ; void DelLastChar ( ) ; 13 void P r i n t ( ) c o n s t ; 14 ; void S t r i n g : : DelLastChar ( ) i f ( l e n > 0 ) 19 s t r i n g [ l e n ] = 0 ; i n t main ( ) S t r i n g s1 ( " H a l l o " ) ; 25 S t r i n g s2 = s1 ; s1. P r i n t ( ) ; 28 s2. P r i n t ( ) ; s1. DelLastChar ( ) ; s1. P r i n t ( ) ; 33 s2. P r i n t ( ) ; 34 WS 2001/02 Programmierkurs C++ Seite 153 WS 2001/02 Programmierkurs C++ Seite 154
2 Dieses Beispielprogramm erzeugt die Ausgabe Hallo (5 Zeichen) Hallo (5 Zeichen) Hall (4 Zeichen) Hall (5 Zeichen) Wir sehen, daß die Ausgaben nach dem Aufruf der Funktion DelLastChar nicht richtig sind: Es wurden die Inhalte beider Variablen s1 und s2 verändert Die Länge der Zeichenkette wurde nur bei s1 entsprechend angepasst. Richtig wäre für uns die Ausgabe von Hallo (5 Zeichen) in der letzten Zeile gewesen. Den Grund für das unerwartete Verhalten erkennen wir, wenn wir zusätzlich noch die Adressen der Zeiger string ausgeben lassen; diese sind immer identisch. Hall (4 Zeichen) Hall (5 Zeichen) Es wird also nicht der Speicherbereich, auf den der Zeiger zeigt kopiert, sondern nur der Zeiger an sich. Der Copy-Konstruktor Um das Problem lösen zu können, benötigen wir einen speziellen Konstruktor, den sogenannten Copy-Konstruktor. Als einzigen Parameter besitzt dieser eine konstante Referenz auf ein Objekt der entsprechenden Klasse: class KLASSE public: KLASSE ( const KLASSE& s ); ; KLASSE::KLASSE ( const KLASSE& s ) // Anweisungen um das gewünschte // Objekt richtig zu kopieren. WS 2001/02 Programmierkurs C++ Seite 155 WS 2001/02 Programmierkurs C++ Seite 156 Fügen wir folgenden Copy-Konstrukter zu der Klasse string hinzu: 1 # i n c l u d e < i o s t r e a m > 2 3 c l a s s S t r i n g 4 5 / /... 6 public : 7 S t r i n g ( c o n s t S t r i n g & s ) ; 8 / /... 9 ; S t r i n g : : S t r i n g ( c o n s t S t r i n g & s ) l e n = s. l e n ; s t r i n g = new char [ l e n + 1 ] ; f o r ( unsigned i = 0 ; i < = l e n ; i ++) 18 s t r i n g [ i ] = s. s t r i n g [ i ] ; 19 so erreichen wir (ohne Änderungen in main) den gewünschten Effekt: Hallo (5 Zeichen) Hall (4 Zeichen) Zu beachten ist, daß der Copy-Konstruktor nur verwendet wird, wenn bei der Variablendeklaration dem neuen Objekt ein altes zugewiesen wird, z.b. String s2 = s1; Sobald wir eine Zuweisung unabhängig von der Deklaration verwenden, stehen wir wieder vor dem am Anfang des Abschnitts aufgeworfenen Problem: int main () String s1 ( "Hallo" ); String s2; s2 = s1; // Restlicher Code analog // zum vorherigen Beispiel liefert Hall (4 Zeichen) Hall (5 Zeichen) Eine Lösung stellen wir später vor (Zuweisungsoperator). WS 2001/02 Programmierkurs C++ Seite 157 WS 2001/02 Programmierkurs C++ Seite 158
3 10.6 Überladen von Operatoren In Aufgabe 16 haben wir Brüche mittels Strukturen dargestellt. Dies können wir nun auch durch eine Klasse lösen und die Rechenfunktionen direkt als Methoden implementieren: private: long zaehler, nenner; void kuerze (); ; public: Bruch (); Bruch (long zaehler,long nenner=1); Bruch (const Bruch& b); ~Bruch (); Bruch add ( const Bruch& b ); Bruch sub ( const Bruch& b ); Bruch mul ( const Bruch& b ); Bruch div ( const Bruch& b ); Wir können nun schon auf relativ einfache Weise mit Brüchen arbeiten: Bruch b1 ( 47, 11 ), b2 ( 4, 2 ); b1 = b1.add ( b2 ); b1 = b2.div ( b1 ); Nun wäre es aber wünschenswert, wenn wir die Syntax für die fest eingebauten Datentypen (int, double,...) auch für eigene Klassen verwenden könnten. Dies wird möglich, indem wir Operatoren überladen, das heißt wir schreiben Funktionen, welche der Compiler aufruft, wenn der entsprechende Operator verwendet wird. Folgende Operatoren lassen sich überladen: Wertezuweisungen (=,*=,-=) Arithmetische Operatoren (+,-,*,/,%) Vergleichsoperatoren (==, <, <=) logische Operatoren (!,&&, ) Bit-Operatoren, insb. << und >> im Zusammenhang mit Streams (später) die Operatoren [], (), new, delete, new[], delete[] und -> WS 2001/02 Programmierkurs C++ Seite 159 WS 2001/02 Programmierkurs C++ Seite 160 Es gibt zwei Möglichkeiten Operatoren zu überladen: Operatoren als Methoden eines Objektes Operatoren als Funktion außerhalb eines Objekts Beidesmal heißt die zu einem Operator gehörige Funktion operatorxxx, wobei XXX durch das entsprechende Symbol des Operators ersetzt wird. Je nach Operator benötigt die Funktion ein oder zwei Parameter. Operatoren als Methoden eines Objektes Operatoren können als Methoden innerhalb von Objekten implementiert werden. Für manche Operatoren, wie z.b. den []-Operator, ist dies sogar Pflicht. Das erste Argument des Operators ist immer das Objekt der entsprechenden Klasse. dadurch fällt der erste (und manchmal einzige) Parameter der Funktion weg. bei vielen Operatoren (z.b. Zuweisungen) ist dies immer der Fall. das schränkt aber auch den Gebrauch ein. Beispiel: Bruch operator+ (const Bruch& b); Bruch operator- (const Bruch& b); Bruch operator- (); ; Bruch Bruch::operator- (const Bruch& b) Bruch c; c.zaehler = zaehler * b.nenner - b.zaehler * nenner; c.nenner = nenner * b.nenner; return c; Bruch Bruch::operator- () Bruch c (-zaehler, nenner); return c; WS 2001/02 Programmierkurs C++ Seite 161 WS 2001/02 Programmierkurs C++ Seite 162
4 Wir sehen neben dem Operator für die Addition + auch zwei Operatoren für die Subtraktion - : in Bruch operator- (const Bruch& b) wird der Ausdruck a-b berechnet. Bruch operator- () Liefert die Negation -a zurück. Es ist also grundsätzlich möglich, daß gleiche Operatoren unterschiedliche Bedeutungen haben, je nachdem wieviele Argumente übergeben werden. Weiterhin ist es möglich, daß sich die Operatoren in der Art ihrer Argumente unterscheiden: Bruch operator+ (const Bruch& b); Bruch operator+ (long l); ; Diese Klasse ermöglicht uns, zu einem Bruch sowohl einen anderen Bruch, als auch eine ganze Zahl zu addieren. Der Compiler erkennt anhand der Signatur, welche Methode gemeint ist. Operatoren als Funktion außerhalb eines Objekts Nicht immer ist es möglich, Operatoren direkt innerhalb der Klasse zu implementieren. Beispiel: Bruch operator+ (const Bruch& b); Bruch operator+ (long l); ; Mit Hilfe dieser Klasse können wir nun folgende Rechnungen durchführen: Bruch bruch (47, 11); long zahl = 42; bruch = bruch + zahl; WS 2001/02 Programmierkurs C++ Seite 163 WS 2001/02 Programmierkurs C++ Seite 164 Es kann nun gewünscht sein, auch folgende Operation zuzulassen: Bruch bruch (47, 11); long zahl = 42; bruch = zahl + bruch; Die ganze Zahl steht nun links vom Operator. Dies ist mit einem Operator als Methode eines Objektes nicht möglich. Lösung: Operatoren können als Funktion außerhalb von Objekten definiert werden: ; Bruch operator+ (long zahl,const Bruch& a) int main () bruch bruch (47, 11); long zahl = 42; bruch = zahl + bruch; Wir stehen nun jedoch vor einem anderen Problem: der Compiler sollte den Operator als fehlerhaft erkennen. Dieser versucht nämlich auf als private gekennzeichnete Attribute der Klasse Bruch zuzugreifen. Es bleiben uns zwei Lösungsmöglichkeiten: Die Attribute als public zu definieren. Dem Compiler mitzuteilen, daß dieser spezielle Operator Zugriff auf die Interna der Klasse haben darf. Freunde Nachdem die erste Ansatz nicht wünschenswert ist, bietet C++ uns die Möglichkeit, sogenannte Freunde von Klassen festzulegen. Hierzu wird innerhalb der Klassendefinition mit dem Schlüsselwort friend festgelegt, welchen Funktionen oder Klassen der Zugriff auf eigentlich geschützte Bereiche erlaubt wird. WS 2001/02 Programmierkurs C++ Seite 165 WS 2001/02 Programmierkurs C++ Seite 166
5 friend Bruch operator+ (long zahl,const Bruch& a); ; // Folgender Operator darf auf die // privaten Attribute von Bruch zugreifen: Bruch operator+(long zahl,const Bruch& a); // Diese Funktion darf es nicht: Bruch operator+(const Bruch& a,long zahl); Hinter dem Schlüsselworf friend muß genau der entsprechende Funktionskopf stehen. Hierbei ist nicht nur der Name, sondern auch die Signatur, welche sich aus den Parametern ergibt, von Bedeutung. Auf gleiche Weise lassen sich andere Klassen und einzelne Methoden von Klassen als friend einer Klasse erklären: // KlasseA darf auf alles in Bruch // zugreifen friend class KlasseA; // KlasseB nicht, sondern nur die // entsprechende Methode A () friend int KlasseB::A (); Generell sollte die Anzahl der Freunde einer Klasse so klein wie möglich gehalten werden. Eine ganze Klasse als friend zu erklären spricht meist für ein fehlerhaftes Design des Programms. WS 2001/02 Programmierkurs C++ Seite 167 WS 2001/02 Programmierkurs C++ Seite 168 Zuweisungsoperatoren Wir sind bisher immer davon ausgegangen, daß Zuweisungen wie a=b für beliebige Objekte funktionieren. Obwohl das bei der Klasse Bruch immer gut funktioniert hat, geht das z.b. bei der String-Klasse nicht mehr (s. Folie 158). Wir müssen also auch die Funktion operator= für die Klasse String überladen, um ein konsistentes Verhalten zu erzielen: class String void operator= (const String& s); ; void operator= (const String& s) if (string!= NULL) delete string; len = s.len; string = new char [ len + 1 ]; for (unsigned i = 0; i <= len; i++) string [ i ] = s.string [ i ]; WS 2001/02 Programmierkurs C++ Seite 169 Der Zeiger this Neugierige Leute probieren spätestens jetzt einmal das Folgende mit der Klasse String aus: String s1 ( "Hallo" ); s1 = s1; Es handelt sich hierbei um eine (eigentlich harmlose) Selbszuweisung. Schauen wir uns jedoch den Quelltext des Zuweisungsoperators nochmal genauer an: 1 void S t r i n g : : operator = ( c o n s t S t r i n g & s ) 2 3 i f ( s t r i n g! = NULL ) 4 d e l e t e s t r i n g ; 5 6 l e n = s. l e n ; 7 s t r i n g = new char [ l e n + 1 ] ; 8 9 f o r ( unsigned i = 0 ; i < = l e n ; i ++) 10 s t r i n g [ i ] = s. s t r i n g [ i ] ; 11 In den Zeilen 3 und 4 wird als erstes der String der Zielklasse gelöscht um Platz für die neue Zeichenkette zu schaffen. Da jedoch Quell und Zielklasse übereinstimmen wird somit auch der zu kopierende String entfernt. Das folgende Verhalten ist undefiniert. WS 2001/02 Programmierkurs C++ Seite 170
6 Aus diesem Grund sollte ein Zuweisungsoperator überprüfen, ob es sich um das gleiche Objekt handelt. Bei einem Operator als Funktion außerhalb einer Klasse kann man das folgendermaßen lösen: void operator= (const String& s1, const String& s2) if ( &s1 == &s2 ) return; Wichtig hierbei ist, daß die Zeiger auf die Objekte überprüft werden um festzustellen ob es wirklich die selben Objekte sind und nicht nur zwei Objekte, die zufällig die gleichen Dateninhalte haben. Wenn wir den Operator als Methode einer Klasse implementieren, fehlt uns der erste Parameter s1. Um diesen Vergleich trotzdem durchzuführen greifen wir auf den Zeiger this zurück. Dieses Attribut existiert zu jeder Klasse und zeigt auf das Objekt selbst. Unser Operator lautet also: void String::operator= (const String& s) if ( this == &s ) return; Rückgabewerte von Zuweisungen Unsere bisherigen Zuweisungen haben keinen Wert zurückgeliefert. Nun sind in C++ jedoch Anweisungen wie int a, b, c; a = b = c = 42; üblich und sollten auch mit eigenen Klassen funktionieren. Zuweisungsoperatoren sollten also immer eine konstante Referenz auf sich selbst zurückliefern. Da wir mit this einen Zeiger auf das entsprechende Objekt besitzen, können wir bei als Methoden implementierten Zuweisungsoperatoren immer *this als Argument von return angeben: const String& String::operator= (const String& s) if ( this == &s ) return *this; return *this; Ansonsten geben wir den ersten Parameter wieder zurück. WS 2001/02 Programmierkurs C++ Seite 171 WS 2001/02 Programmierkurs C++ Seite Mindestanforderungen an eine Klassenimplementation Jede Klasse sollte mindestens folgende vier Methoden besitzen um ein unerwartetes Verhalten der entsprechenden Objekte zu vermeiden: Default-Konstruktor: Um ein leeres Objekt zu erzeugen. Copy-Konstruktor: Um ein Objekt mit Hilfe eines Objekts gleichen Typs zu initialisieren (i.a. kopieren). Zuweisungsoperator: Um ein Objekt mit den Daten eines anderen Objekts gleichen Typs zu füllen. Destruktor: Damit das Objekt die Gelegenheit bekommt, aufzuräumen. Sollte eine dieser Methoden außerhalb der Klasse nicht sinnvoll einsetzbar sein, so muß man sie als private deklarieren. Dies trifft oft auf den Default-Konstruktor zu. WS 2001/02 Programmierkurs C++ Seite 173
C++ - 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
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
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrThemen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren
Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
Mehr7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
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
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrWas Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:
Kapitel 8 Operatoren Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Operatoren definieren Es ist in C++ möglich, Operatoren wie +, oder für
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
MehrFunktionen: Rückgabewert
Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung
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
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
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
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
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
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrKlassen als Datenstrukturen
Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung
MehrPolymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr.
Polymorphie Überladen Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele Dr. Beatrice Amrhein Definition 2 Definition: Überladen (von Namen) Überladen bedeutet, dass
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
MehrC++ Klassen weitere Funktionen
C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten
MehrPROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy
PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion
MehrUmsetzung einer Klassenkarte in einer Programmiersprache
Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,
Mehr7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor
7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor Das Programmbeispiel aus dem letzten Abschnitt läßt sich bisher nicht zufriedenstellend zu Ende bringen. Unerklärliche Abstürze und Fehlverhalten
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
MehrVorlesung Objektorientierte Programmierung Klausur
Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrProgrammieren in C++ Überladen von Methoden und Operatoren
Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
MehrKlassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.
Objektzugriff Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Attribute sind in der Klasse mit Datentyp und Namen deklariert im Objekt sind sie mit jeweils
MehrKlassen. Kapitel Klassendeklaration
Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)
MehrObjekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3
Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................
Mehr3. Klassen Statische Komponenten einer Klasse. Klassenvariablen
Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.
MehrC++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11
C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen
MehrProgrammiertechnik Klassenvariablen & Instantiierung
Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen
MehrDr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund
EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrEinführung in die Programmierung für NF MI. Übung 07
Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare
MehrEinstieg in die Informatik mit Java
1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
MehrMapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017
Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 9. Klassen und Methoden Was sind Klassen? Seite 2 sprachliches Mittel von C++ um objektorientierte Programmierung
MehrÜbungsblatt 1. Java Vorkurs (WS 2017)
Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrJAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
MehrKapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 10 Verweise und Referenzen Inhalt von Kapitel 10 Verweise und Referenzen 10.1 Das Schlüsselwort this Definition Verwendungszweck Klassenmethoden EINSCHUB: Musterlösung zu Übung 4.1 10.2 Objektreferenzen
MehrAlgorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Algorithmen und Datenstrukturen I Blatt 2 Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:05 Aufgabe 1 struct, Parameterübergabe und const Das Repository für diese
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
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrII. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )
Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition
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
MehrÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
MehrPods und Objects (Klassen)
Pods und Objects (Klassen) Grundbegriffe: Pods = Plain Old Data: Es handelt sich dabei hauptsächlich um die schon in C eingebauten Datentypen wie Ganzzahltypen: char, short, int, long, long long (auch
MehrC++ - Objektorientierte Programmierung Vererbung
C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.
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
MehrKlassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:
Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf
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
MehrC++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17
C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen
MehrVariablen und Parameter
D3kjd3Di38lk323nnm Variablen und Parameter Eine Variable repräsentiert einen Speicherbereich, der einen veränderbaren Wert enthält. Eine Variable kann eine lokale Variable, ein Parameter (value, ref oder
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
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
MehrProf. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
MehrProjekt 3 Variablen und Operatoren
Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.
MehrDie Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein
Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter
MehrEinführung in die Programmierung
Einführung in die Programmierung by André Karge Übung - Operatoren, Methoden, Primitives 25. Oktober 2018 Einführung in die Programmierung WS18/19 André Karge 1/29 Notizen Standard Linux Befehle: http://images.linoxide.com/linux-cheat-sheet.pdf
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
MehrVorkurs 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:
MehrArrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
MehrAngewandte Mathematik in OOP WS 2011/12. Abschluss-Test
Angewandte Mathematik in OOP WS 2011/12 Abschluss-Test 012 6 5 4 5 6 Aufgabe 1 (9 Punkte 1 Punkt je Antwort) Bitte jeweils eine Antwort ankreuzen (je nach Fragestellung die richtige oder falsche): a.)
MehrInstitut für Informatik
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 4 Prof. R. Westermann, A. Lehmann,
MehrMethoden. (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun. Letzte Änderung: :40. Methoden 1/44
Methoden (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun Letzte Änderung: 02.03.2018 12:40 Methoden 1/44 Was Sie bereits wissen müssen: Siehe Softwareentwicklung I (IB) Methoden 2/44 Überladen Methoden
Mehr1 Abstrakte Klassen, finale Klassen und Interfaces
1 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,
MehrKapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08
Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für
MehrEINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16
EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
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
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
MehrHSR Rapperswil 2001 Markus Rigling. Programmieren: Smart Pointer Auflage
HSR Rapperswil 2001 Markus Rigling Programmieren: Smart Pointer 1 1. Auflage Inhaltsverzeichnis: 1. Smart Pointer3 2. Vor- Nachteile von Smart Pointer..3 3. auto_ptr..3 4. Umsetzung / Anwendung:.4 5. Wertzuweisung
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
Mehr3.2 Datentypen und Methoden
Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte
MehrC++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.
MehrJavaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden
Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
Mehr1 KLASSENKOMPONENTEN. Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen
1 KLASSENKOMPONENTEN Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen zusammengesetzt. Die Komponentenfunktionen haben über eine Zeigervariable direkten Zugriff auf das Objekt. Die
Mehr1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
Mehr1. Referenzdatentypen: Felder und Strings
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
Mehr2. Unterprogramme und Methoden
2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf
MehrEinführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java
Ludwig-Maximilians-Universität München München, 20.11.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt
MehrC++ 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
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
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Freitag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Blockkurs: "Einführung in C/C++" 2 Vererbung Klassen erben die Member von Basisklassen:
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 03: Wiederholung Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Wiederholung Klassen, Objekte, Attribute und Methoden Das Schlüsselwort
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
Mehr