Programmierkurs C/C++
|
|
- Alfred Linden
- vor 6 Jahren
- Abrufe
Transkript
1 Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti WS 2008/09 1
2 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter Umständen verschiedenen Typs). int Alter; char Name[256]; Man beachte das ; am Ende der Definition des Structs. Die Variablen innerhalb eines Structs werden auch die Datenmember des Structs genannt. Programmierer anderer objektorientierter Programmiersprachen kennen Datenmember auch unter der Bezeichnung Properties. Anmerkung: In C++ wird das Struct-Konzept zum Klassen-Konzept ausgebaut (siehe unten). In C++ definiert der Code oben bereits einen Typ namens Hamster. In C muss man dafür wiederum auf typedef zurückgreifen: typedef struct Irgendeinname int Alter; char Name[256]; } Hamster; Statt Irgendeinname wäre hier z.b. _Hamster (mit _ am Anfang) oder eine andere Variation des späteren Typnamens üblich. 2
3 Blockkurs: "Einführung in C/C++" 3 Objekte = Exemplare von Klassen Objekte erzeugt man wie andere Variablen auch: int Alter; char Name[256]; Hamster billy; Typ Objekt Frage: Wie deklariert man ein Objekt? Durch die Definition des Objekts wird Speicher für alle Member-Variablen angelegt. Ein Objekt deklariert man (ohne es dabei zu definieren) wie jede andere Variable: Mit extern (nur bei static-objekten). 3
4 Blockkurs: "Einführung in C/C++" 4 member selection : Der. -Operator Auf die Member eines Objektes kann man mit dem member-selection-operator. zugreifen: int Alter; char Name[256]; Hamster billy; billy.alter = 4; Bei der Definition einer Klasse werden noch keine Variablen angelegt. Dies geschieht erst, sobald ein Objekt der Klasse erzeugt wird. In diesem Fall wird ein kompletter Satz aller Datenmember der Klasse erzeugt und kann anschließend über den member selection operator aufgerufen werden. 4
5 Der -> -Operator Blockkurs: "Einführung in C/C++" 5 Hat man einen Pointer auf ein Objekt, so kann man auch den Pfeiloperator -> benutzen. Hamster billy; Hamster * mein_hamster = & billy; mein_hamster->alter = 3; ist das gleiche wie: (*mein_hamster).alter = 3; Man beachte, dass bei der zweiten schreibweise der Ausdruck (*mein_hamster) in Klammern stehen muss, da der member-selection-operator. stärker bindet als der indirection-operator *. Darum bringt der Pfeiloperator -> eine deutliche Verbesserung der Lesbarkeit des Programmes. 5
6 Blockkurs: "Einführung in C/C++" 6 Objektpointer als Member Eine Klasse C kann Member vom Typ C* enthalten. Bsp.: Hamster * Sohn; Hamster * Mutter; Hamster nina; Hamster billy; billy.mutter = & nina; billy.mutter->sohn = & billy; Anmerkung: Wie man hier klar erkennen kann, hat jedes Objekt seinen eigenen Satz an Membervariablen. In diesem Beispiel gibt es zwei Objekte nina und billy, und beide besitzen jeweils ein Member Sohn und ein Member Mutter. 6
7 Aggregate Structs lassen sich initialisieren: Blockkurs: "Einführung in C/C++" 7 int Alter; char Name[200]; double Preis; Hamster billy = 2, "Billy", 9.95 Die Reihenfolge der Parameter im Aggregat (innerhalb der }) muss der Reihenfolge der Member des structs entsprechen. Im Beispiel wird Alter also auf 2, Name auf Billy und Preis auf 9.95 initialisiert. Anmerkung: Diese Art der Initialisierung ist nur bei C-artigen structs möglich, nicht aber bei C++-Klassen, die Konstruktoren bzw. Destruktoren besitzen. Für C++-Klassen braucht man auch keine Aggregate, da es in C++ ja das viel mächtigere Konstruktor-Konzept gibt. 7
8 Blockkurs: "Einführung in C/C++" 8 Aufgabe: Verkettete Listen Schreiben Sie eine Datenstruktur für eine einfach verkettete Liste, in der Alter und Namen von Hamstern gespeichert werden können! struct ListElement int Alter; char Name [200]; ListElement * Next; 8
9 Blockkurs: "Einführung in C/C++" 9 Aufgabe: Element einfügen Gegeben Pointer auf Listenanfang und Name und Alter eines Hamsters. Fügen Sie ein neues Listenelement an den Anfang der Liste ein! ListElement * inserthamster( ListElement * anfang, int neues_alter, char * neuer_name) //??? } 9
10 Blockkurs: "Einführung in C/C++" 10 Lösung: Element einfügen ListElement * inserthamster( ListElement * anfang, int neues_alter, char * neuer_name) ListElement * neu = new ListElement; neu->alter = neues_alter; strcpy(neu->name, neuer_name); neu->next = anfang; } return neu; 10
11 Blockkurs: "Einführung in C/C++" 11 aus Structs werden Klassen In C++ werden die Structs aus C um etliche Features erweitert: - Member-Funktionen - Konstruktoren, Destruktoren - eigene Operatoren - Vererbung -... Außerdem kann man in C++ auch class statt struct schreiben. Der einzige Unterschied zwischen class und struct in C++: Bei class ist vom Default her alles private, bei struct hingegen public, und zwar sowohl bei den Membern als auch bei der Verwerbung (zum Thema private Vererbung siehe unten). 11
12 Member-Funktionen Zusätzlich zu Daten-Membern kennt C++ Member-Funktionen: Blockkurs: "Einführung in C/C++" 12 int Alter; char Name[256]; void fuettern(); Hamster billy; billy.fuettern(); Member-Funktionen kennt man bei anderen Programmiersprachen auch unter dem Namen "Methoden". 12
13 Blockkurs: "Einführung in C/C++" 13 Member-Funktionen definieren Member-Funktionen müssen definiert werden. 1. Möglichkeit: Innerhalb der Klassendefinition void fuettern() //jetzt bekommt der Hamster Futter! } Daten-Member müssen nicht extra Definiert werden: Sie werden bei der Erzeugung eines Objektes automatisch miterzeugt. Dies gilt jedoch nicht für statische Daten-Member (siehe unten). 13
14 Blockkurs: "Einführung in C/C++" 14 Member-Funktionen definieren (2) 2. Möglichkeit: Außerhalb der Klassendefinition void fuettern(); void Hamster::fuettern() //jetzt bekommt der Hamster Futter! } 14
15 Blockkurs: "Einführung in C/C++" 15 Deklaration und Definition Deklaration Definition Klassen: ; int gewicht; int fuettern(int); Member-Funktionen: int Hamster::fuettern(int x) int fuettern(int); gewicht += x; } Mehrfache Klassendefinitionen stören zwar den Compiler (bei jedem Compile- Durchgang), jedoch nicht den Linker, da bei einer Klassendefinition kein Code erzeugt wird, der verlinkt werden müsste. Darum ist es auch statthaft, Klassen in Header-Dateien zu definieren, und diese Header-Dateien dann in verschiedene cpp-dateien einzubinden. Member-Funktionen können natürlich auch während der Klassendefinition mitdefiniert werden und sind dann automatisch inline. Bei extern definierten Memberfunktionen sieht es hingegen wieder anders aus: Hier würde sich wiederum bei Mehrfachdefinition auch der Linker beschweren es sei denn, die Memberfunktion ist inline definiert. 15
16 Typisches Vorgehen: Blockkurs: "Einführung in C/C++" 16 Klassen programmieren In eine.h-datei: Klassendefinition In eine.cpp-datei: Definition der Member- Funktionen. Anmerkung: Klassen dürfen also in einer Headerdatei definiert werden. (Frage: Wieso?) Verstößt man beim Definieren von Klassen in Headern nicht gegen die "one definition rule", sobald man die Headerdatei in mehr als zwei.cpp-dateien inkludiert? Nein, denn: Es spielt keine Rolle, dass die Klasse für jede.cpp-datei, die den Header einbindet, erneut definiert wird, da eine Klassendefinition keinen Speicherplatz reserviert und auch keinen Code erzeugt. Trotzdem darf eine Klasse nicht zweimal in der gleichen.cpp definiert werden, d.h. die Headerdatei darf von einer.cpp nicht doppelt "includet" werden. Anmerkung: Im Gegensatz zu gewissen anderen Kaffee-Programmiersprachen gibt es in C++ keinen Zwang, die Dateien so zu nennen, wie die Klassen, die sie definieren. Man darf auch ruhig mehrere Klassen in einer Datei definieren, auch wenn dies nicht unbedingt empfohlen wird. 16
17 Blockkurs: "Einführung in C/C++" 17 Member-Funktion kennt Objekt Eine Member-Funktion weiß, zu welchem Objekt sie aufgerufen wurde: void fuettern() ++Gewicht; } int Gewicht; Hamster billy; billy.fuettern(); cout << billy.gewicht; erhöhe 17
18 Der this-pointer Blockkurs: "Einführung in C/C++" 18 In einer Member-Funktion zeigt der this-pointer auf das aktuelle Objekt: void fuettern() ++( this->gewicht ); } int Gewicht; this hat den Typ Hamster * Man hätte in fuettern auch einfach schreiben können: ++ Gewicht; Der this-pointer ist nur innerhalb einer Memberfunktion bekannt, dort aber ohne weitere Deklaration. Tatsächlich wird der this-pointer beim Aufruf der Funktion fuettern() der Funktion als verstecktes erstes Argument übergeben. Auch Konstruktoren und der Destruktor (siehe unten) kennen den this-pointer. 18
19 public und privat Blockkurs: "Einführung in C/C++" 19 private schützt Member vor Zugriff von außen : private: bool ist_satt; public: void fuettern() ist_satt = true; } Hamster billy; billy.ist_satt = true; //Fehler! Bei Klassen, die mit dem Schlüsselwort class statt struct erzeugt werden, sind die Member ohne Angaben des Schlüsselwortes public automatisch private. Es gibt außerdem das Schlüsselwort protected. Member, die protected deklariert worden sind, verhalten sich so, als wären sie private deklariert, ausgenommen für abgeleitete Klassen: Eine abgeleitete Klasse kann auf die protected Member ihrer Basisklasse (oder der Basisklasse ihrer Basisklasse, usw.) zugreifen. 19
20 Konstruktoren Blockkurs: "Einführung in C/C++" 20 Konstruktoren = Spezielle Member-Funktionen, die automatisch bei der Erzeugung eines Objektes aufgerufen werden: Hamster() Alter = 0; } int Alter; Konstruktoren geben keinen Typen zurück (nicht einmal void). Konstruktoren werden vor allem dazu verwendet, ein Objekt zu initialisieren. Ein Konstruktor, der ohne Argument aufgerufen werden kann, wird Default- Konstruktor genannt. 20
21 Blockkurs: "Einführung in C/C++" 21 Konstruktoren mit Argumenten Konstruktoren können Argumente haben: Hamster( int alter ) Alter = alter; } int Alter; Hamster billy(3); Wichtig: Den Default-Konstruktor (ohne Argument) ruft man ohne Klammern auf! Wenn es für die Klasse Hamster also einen Default-Konstruktor gibt (wie auf der vorangegangenen Folie), dann schreibt man einfach: Hamster billy; nicht aber Hamster billy(); //Fehler! 21
22 Destruktor Blockkurs: "Einführung in C/C++" 22 Destruktoren werden aufgerufen, wenn das Objekt zerstört wird. Hamster (char * name = "Billy") Name = name; printf("hamster geboren! :-)\n"); } ~Hamster () printf("hamster stirbt! :-(\n"); } char * Name; (Das Programm geht auf der nächsten Folie weiter) 22
23 (Fortsetzung) Blockkurs: "Einführung in C/C++" 23 void hamsterleben() Hamster billy; printf("es lebe der Hamster!\n"); printf("er heißt %s.\n", billy.name); } Starte: hamsterleben() Ausgabe:? Hamster geboren! :-) Es lebe der Hamster! Er heißt Billy. Hamster stirbt! :-( Bei Destruktoren gibt es keine Möglichkeit der Überladung: Jede Klasse kann nur einen Destruktor haben. 23
24 Blockkurs: "Einführung in C/C++" 24 mehrere Konstruktoren Konstruktoren sind oft überladen: Hamster () Gewicht = 0; } Hamster (int X) Gewicht = X; } int Gewicht; Hamster billy(20); std::cout << billy.gewicht; //20 24
25 Blockkurs: "Einführung in C/C++" 25 Überladung bei normalen Funktionen Verschiedene Funktionen mit gleichem Namen: int max(int a, int b) if (a > b) return a; return b; } int max(int a, int b, int c) return max( max(a, b), c ); } 25
26 Überladung: Regeln Blockkurs: "Einführung in C/C++" 26 Die überladenen Funktionen müssen sich (paarweise) voneinander unterscheiden: Durch die Zahl ihrer Argumente oder Durch den Typ des i-ten Arguments Es reicht nicht, wenn sich nur der Typ des Rückgabewertes unterschiedet. Bsp.: int f()... } char f()... } // Fehler! Beide f haben 0 Argumente. 26
27 Blockkurs: "Einführung in C/C++" 27 Überladene Member-Funktionen Memberfunktionen können überladen werden: void fuettern(int X) Gewicht += X; } void fuettern() ++Gewicht; } int Gewicht; 27
28 Blockkurs: "Einführung in C/C++" 28 Objekte auf Heap und Stack Objekte auf Stack oder auf Heap erzeugen: int main() Hamster a; Hamster b[100]; Hamster * c = new Hamster[50]; //... } delete [] c; return 0; Der new Operator ruft die Konstruktoren aller 50 Hamsterobjekte auf. Man beachte, dass hier der delete []-Operator verwendet werden sollte, damit auch am Ende der Funktion die Destruktoren aller 50 Hamsterobjekte aufgerufen werden. 28
29 Aufgaben zum Donnerstag: 9. Aufgabe: Schreiben Sie verschiedene Klassen, wobei sie Anzahl, Typen und die Reihenfolge der Daten-Member variieren. Lassen Sie sich anschließend mit sizeof() die Größe des für die Objektinstanzen benötigten Speichers ausgeben. Probieren Sie ein wenig herum und stellen Sie anschließend eine Theorie darüber auf, wie sich die Größe einer Klasse aus den Membern ableiten lässt. 10. Aufgabe: Schreiben Sie eine Klasse, die eine doppelt verkettete Liste implementiert und Zahlen vom Typ int speichert. Implementieren Sie die Member-Funktionen insert und extract zum Einfügen eines neuen Elements in die Liste hinter dem aktuellen Element bzw. zum Löschen des aktuellen Elements aus der Liste PRÜFUNGSAUFGABE: Schreiben Sie eine Klasse "best3", die folgende Member-Funktionen exportiert: 1. Eine Member-Funktion "push(unsigned int x)", mit der man der Klasse eine Zahl x übergeben kann. 2. Eine Member-Funktion "print()", welche die Werte der drei größten Zahlen, die bisher mit "push" übergeben worden sind, auf dem Bildschirm ausgibt. Sollten bisher weniger als drei Zahlen mit "push" eingegeben worden sein, so soll die Funktion auch nur diese bisher eingegebenen Zahlen ausgeben. Hinweis: In einem Objekt vom Typ "best3" müssen tatsächlich zu jedem Zeitpunkt nur drei der bislang eingegebenen Zahlen gespeichert werden, d.h. es ist nicht nötig, alle mit "push" eingegebenen Zahlen in "best3" abzuspeichern. Denken Sie daran, dass sie bis morgen (Freitag) alle vier Prüfungsaufgaben fertig haben sollten. 29
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:
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
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:
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
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
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
Fortgeschrittene C++-Programmierung
Vorlesung: "Fortgeschrittene C++-Programmierung" 16.04.2009 Fortgeschrittene C++-Programmierung SS 2009 Teil 1 Sandro Andreotti - andreott@inf.fu-berlin.de 1 Vorlesung: "Fortgeschrittene C++-Programmierung"
Java Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
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
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
Alltagsnotizen eines Softwareentwicklers
Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,
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
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
Objektorientierte Programmierung
1. Begriffe Objektorientierte Programmierung mit C++ Prozedurale Programmierung Sprachen: C, Pascal, Cobol, Basic,... Objektorientierte Programmierung Sprachen: C++, C#, Java... Methode: - Gesamtproblem
5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
Vererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Codingstandard. Softwareentwicklung Praktikum Stand: 27.02.2008
I. Einleitung II. Codingstandard Softwareentwicklung Praktikum Stand: 27.02.2008 Wie in der Vorlesung schon ausgeführt wurde, ist die Lesbarkeit und Wartbarkeit des Sourcecodes ein sehr wichtiges Kriterium
einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();
Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
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
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
Grundlagen. Die Komponenten eines C Programms. Das erste Programm
Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen
Einführung in C++ mit Microsoft VS
Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger
Javakurs für Anfänger
Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen
Eine Einführung in C-Funktionen
Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................
GetName(), GetName(), GetGeschlecht() und AelterWerden().
11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer
Probeklausur: 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,
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
1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik
Software-Technik: Vom Programmierer zur erfolgreichen Software-Technik: Vom Programmierer zur erfolgreichen 1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation
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.
Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
13 OOP MIT DELPHI. Records und Klassen Ein Vergleich
13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,
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
10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private
Meeting C++ C++11 R-Value Referenzen
Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit
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
C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek
C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage
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
Praktikum Betriebssysteme 1. Aufgabe (1)
FG TECHNISCHE INFORMATIK U BS 041 01 TH 09 Praktikum Betriebssysteme 1. Aufgabe (1) Es wird ein unter LINUX lauffähiges C++-Programm ptab, mit dem Informationen über die Partitionierung von Festplatten
Objektorientierte Programmierung
Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with
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/
Technische Infor matik 2 C/C++-Kurs. Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1
Technische Infor matik 2 C/C++-Kurs Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1 Overloading Überladene Funktionen Auswahl einer Funktion anhand ihrer Signatur Signatur : Name + Parameter Rückgabe-Wer
1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung
K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:
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!
Programmieren - Vererbung & Polymorphie
Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.
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
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
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
Zusammengesetzte Datentypen -- Arrays und Strukturen
Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
Einführung in die. objektorientierte Programmierung
Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie
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
Klassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
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.
13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)
13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik
Objektorientiertes Programmieren für Ingenieure
Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen
Ü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
Einführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
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
In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch
Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS2013/14 Inhalt Übung(Aufklärung) Vererbung(wdh.) Initilisierung bei Vererbung
1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
C++ - Operatoren. Eigene Klassen mit neuen Funktionen
C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,
Moderne C-Programmierung
Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon
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
Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff
Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet
PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl
PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen
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
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
Von der UML nach C++
22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete
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
Klassen in Java. Klassen
Klassen in Java Klassen Klassen beschreiben Objekte, die abstakte oder konkrete Sachverhalte modellieren. Objekte sind durch einen Status gekennzeichnet (State). Der Status eines Objektes ergibt sich aus
Institut für Informatik
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.
Informatikpraktikum CE2. Übung 1: Einfach verkettete Liste
Informatikpraktikum CE2 Übung 1: Einfach verkettete Liste c Torben Nehmer 1998 INHALTSVERZEICHNIS INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Anforderungen an die Liste 3 1.1 Beschreibung
Teil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 9: Vererbung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 9 Vererbung... 3 9.1 Motivation... 3 9.2 Deklaration und Zugriffsrechte...
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
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 **
PIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
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
7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
C++ - Einführung in die Programmiersprache Objektorientierte Programmierung
C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Projekt
Jürgen Bayer. OOP mit C++ Von einfachen Klassen über Vererbung zum Polymorphismus
Jürgen Bayer OOP mit C++ Von einfachen Klassen über Vererbung zum Polymorphismus Inhaltsverzeichnis 1 Einführung 1 1 Die Basis der OOP: Die Klasse 2 1.1 Klassen und Strukturen 2 1.2 Die Strukturierung
Folge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Bis jetzt: Heute: Entwicklungsumgebung
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
Proseminar C-Programmierung. Strukturen. Von Marcel Lebek
Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11
Name: Klausur Programmierkonzepte SS 2011
Prof. Dr.-Ing. Hartmut Helmke Ostfalia Hochschule für angewandte Wissenschaften Fakultät für Informatik Matrikelnummer: Punktzahl: Ergebnis: Freiversuch F1 F2 F3 Klausur im SS 2011: Programmierkonzepte
C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Dr. Monika Meiler. Inhalt
Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11
EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Inhalt. Max Lini. ax. inie. Einleitung... VII
rst Inhalt Einleitung....................................................... VII 1 Schöne neue Welt: Objektorientierte Programmierung in PHP 5.............. 1 Klassen, Interfaces und Objekte...................................
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
Objektorientierung: Klassen und Objekte
Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in
Kapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben