oop und angewandte mathematik - gm.fh-koeln.deafomusoe/ws2011_12/lecture00__12102011.pdf · oop und...
TRANSCRIPT
OOP und Angewandte Mathematik
Eine Einführung in die Anwendungobjektorientierter Konzepte in derj p
angewandten Mathematik
WS 2011/12WS 2011/12
Organisatorisches
Dozenten Gruppe: Ango Fomuso Ekellem(2.250), Ludger Buchmann(2.250) Webseite: http://www.gm.fh-koeln.de/~afomusoe Fachemail: [email protected] Sprache: Deutsch und Englisch Voraussetzung: keineg Unterlagen: Vorlesungsfolien, Skript, RRZN/Uni Hannover - C++ für
C-Programmierer(1998) und RRZN/Uni Hannover Grundlagen der Programmierung mit Beispielen in C++ und Java(2000)
Sprechstunden: Mittwochs und Freitags (9:30-10:30 und 13:00-15:00) Erwartungen:
Aktive Teilnahme an Vorlesung und Übung ( Punktsystem )Aktives eigenständiges Programmieren (mind. 1 Übungsaufgabe pro Rubrik!)Auseinandersetzen mit den Übungsaufgaben, zumindest Fragen formulieren können!Gemeinsam Spaß beim Studium von C++ und OOP programmierung haben
OOP und Angewandte Mathematik2
Fomuso Ekellem
p p g g
Vorlesungen
Immer ab 11:00Uhr12.10.2011(4 Std) – Wiederholung und objektorientiert denken
OOP(OOP K t Obj kt Kl G d ü t d D t t )19.10.2011- OOP(OOP Konzepte, Objekte, Klassen, Grundgerüste und Datentypen)26.10.2011- OOP(Zugriffsrechten, Konstruktoren(Constructors), Methoden)02.11.2011- OOP(Vererbung und Polymorphie)09.11.2011- Templates, Ausdrucke, Arrays, Zeiger, Referenzen und dynamische Speicherallokation16.11.2011(keine Vorlesung)23.11.2011(4 Std-Praktikum)- Matrizen30.11.2011-Strings und Iteratoren07 12 2011- Debugging und Kosten von Algorithmen07.12.2011 Debugging und Kosten von Algorithmen14.12.2011-Baum - Strukturen21.12.2011-Listen und Sortierung11.01.2011-Vectorraum
F i ih18.01.2011-Fourier reihen25.01.2011-Fourier-Transformation01.02.2011- Wiederholung und Ausblick
OOP und Angewandte Mathematik3
Fomuso Ekellem
Inhalt
Tools Ein wenig Theorie
Grundgerüst Compiler Namensraum
S Streams Beteiligte Dateien Definition und Deklaration
Objektorientiert denken Objektorientiert denken Klassengerüst
Paradigmen Wiederholung Wiederholung
Datentypen, Speicher und CPU
OOP und Angewandte Mathematik4
Fomuso Ekellem
Tools
Zur Programmierung benötigen Sie einen Editor und einen Compiler: Sie wissen schon: Programme werden als einfacher (ASCII-)Text in einem g ( )
Editor aufgesetzt. Es gibt einfache bis komplexe Editoren mit sehr schönen
Benutzeroberfläche.Benutzeroberfläche. Wir werden beide Exemplare benutzen. Programmiersprache für Vorlesung: C++
All i b h Alles was wir brauchen: Mingw GCC für C++ Hilfsprogram – Notepad++ (Hilfsprogramm zum Kodieren) Visual C++ 2010 Express
Merken: Vermeiden Sie jede Art von Ablenkung. Verwenden Sie nur diese Tools für die ganze Vorlesung.
OOP und Angewandte Mathematik5
Fomuso Ekellem
GrundgerüstGrundgerüst
Typisch C++ C-Stil
#include <iostream> #include <stdio.h>
int main() {hier einsetzen
R t 0
int main ( ) { hier einsetzen
return 0;Return 0;}
;}
OOP und Angewandte Mathematik6
Fomuso Ekellem
Grundgerüst mit Start-Beispiel
// Ein Kommentar: Das Program schreibt Hallo Welt/*HalloWelt.cpp*/pp
#include <iostream> U i tdUsing namespace std;
int main(){cout << "Hallo Welt!" << endl; // in C-Stil: printf("\n Hallo Welt\n"); Return 0;Return 0;}
OOP und Angewandte Mathematik7
Fomuso Ekellem
Compiler
Was passiert wirklich, wenn C++ Programme kompiliert werden? Programme(Quelltext kodiert) enthalten nur Befehle.g (Q ) Ein Computer versteht nur bestimmten Satz an elementaren Befehle. Die Befehle sind als Folge von Nullen und Einsen codiert.
Ei C il i t i f h i Üb t Ein Compiler ist einfach ein Übersetzungsprogramm. Die Quelltextdateien werden in einer Maschine Sprache umgewandelt und
mit Hilfe von eingefügte Bibliotheken ausgeführt.
OOP und Angewandte Mathematik8
Fomuso Ekellem
Compiler
Die genaue Handhabung der Compiler variiert sehr stark von System zu System. Zum Beispiel in UNIX mit Kommandozeile oder Makefiles starten und MS-DOS/Windows meist mit integrierten grafischen Oberflächen.
Steht das Programm komplett in einer Datei progname.cpp, dann lässt es sich beispielsweise mit dem „Mingw GCC“ Compiler auf jedem System p g p j yübersetzen mit dem Aufruf "g++ progname.cpp -o progname" und starten mit "progname" -o in diesem Sinne bedeutet Output Ordner, und progname ist der Ordner.p p g progname ist ein Executable Datei. Also progname.exe Der Compiler g++ kompiliert progname.cpp und erstellt die progname.exe
OOP und Angewandte Mathematik9
Fomuso Ekellem
KompilierungQuelldateien
Präprozessor
Entfernen von Kommentaren undInterpretation alle Header-Dateien gekennzeichnet durch #. z.B. #include, #define
Compilerp
Assembly Code
Assembler
Libraries Objekt Code
Link Editor
j
10
Ausführbare Code
Namensraum (Namespace)
#include <iostream>Using namespace std;
Bedeutung
All D t i i d C++ St d dg p ;
int main(){
Alle Dateien in der C++ Standard-Bibliothek erklären alle ihre Einheiten im std-Namespace. Deshalb wird in der Regel using{
cout << "Hallo Welt!" << std::endl;Return 0;}
Deshalb wird in der Regel „usingNamespace std“ allgemein benutzt für alle Programme die irgendeine Einheit von „ iostream“ aufruft.} Einheit von „ iostream aufruft.
“using namespace std; “ heißt: wirbrauchen nicht überall in unseremQ ll “ d ” hQuelltext “std::” vorhängen.
OOP und Angewandte Mathematik11
Fomuso Ekellem
Streams- Ausgabe
#include <iostream>Using namespace std;
Bedeutung In der Stream-Bibliothek wird der g p ;
int main(){
In der Stream Bibliothek wird der Ausgabeoperator << und der Eingabeoperator >> für die elementaren Typen definiert:{
cout << "Hallo Welt!" << endl;Return 0;}
ypdouble x = 5.6;int a = 3;cout << "a=";
} cout << a;cout << ’\n’;cout << x;
E h h Es geht auch so: cout << "a=" << a << ’\n’;Dieses Statement wird folgendermaßen abgearbeitet:
((cout << "a=") << a) << ’\n’;((cout << a ) << a) << \n ;
OOP und Angewandte Mathematik12
Fomuso Ekellem
Streams- Eingabe
#include <iostream>#include <string>
Bedeutung Für die Eingabe gibt es die Klasse
Using namespace std;int main(){string mystring;
Für die Eingabe gibt es die Klasse istream, die für die elementaren Typen den Operator >> zur Verfügung stellt.string mystring;
Int i;cout << “Bitte ein Wert eingeben: "; cin >> i;
g g cin >> mystring; wird auch
benutzt, aber sobald eine Leerstelle erscheint, stoppt das
cout << “i =:" << i << endl;cout << “Schreiben Sie bitte etwas:" << endl;getline (cin, mystring);
Leerstelle erscheint, stoppt das Lesen.
cout << mystring << endl;Return 0;}
OOP und Angewandte Mathematik13
Fomuso Ekellem
Streams- File-I/O
Um von Files zu lesen, muß zusätzlich <fstream.h> inkludiert werden. Dort werden die Klassen fstream, ifstream und ofstream definiert und zur Verf¨ugung gestellt.
#include <fstream.h>
fstream f; // Definition eines Ein- und Ausgabestromsifstream fi; // Definition eines Eingabestromsifstream fi; // Definition eines Eingabestromsofstream fo; // Definition eines Ausgabestromsofstream fe; // Definition eines Ausgabestroms
OOP und Angewandte Mathematik14
Fomuso Ekellem
Beteiligte Dateien
Headerdatei Eine besonders wichtige Funktion des Präprozessors ist das Einsetzen von
„Header-Files“ in den Eingabestrom, den der eigentliche Compiler geliefert bekommt (per #include).
In diesen Dateien findet man Deklarationen von Konstanten und Prototypen von F kti ( B Bibli th k ) Si llt k i ht C d th lt Si Funktionen (z.B. aus Bibliotheken). Sie sollten keinen echten Code enthalten. Sie haben die Endung .h wie bei C, manchmal findet man allerdings auch .hpp oder .hxx.
Standard Header Dateien z B Standard-Header-Dateien, z.B.:
iostream.h Ein-/Ausgabe mit C++-Streams, stdio.h Ein-/Ausgabe im C-Stil,
dlib h S d d Bibli h k F k i i stdlib.h Standard-Bibliotheks-Funktionen: exit, qsort, stddef.h Standardtypen und -Werte: size_t, NULL, string.h String-Verwaltungsfunktionen: strcpy, strlenmath.h usw…
OOP und Angewandte Mathematik15
Fomuso Ekellem
Beteiligte Dateien
Quelldatei
Ein C++-Programm entsteht durch Kompilieren einer oder mehrerer C++- Ein C++ Programm entsteht durch Kompilieren einer oder mehrerer C++Quelltexte in ASCII-Format und Linken mit Bibliotheken (und gegebenenfalls mit bereits übersetzten weiteren Teilen).
Files mit C++-Quelltexten haben meistens die Extension .cpp Es gibt auch .cc oder auch .C
OOP und Angewandte Mathematik16
Fomuso Ekellem
Deklaration und Definition
Definition und Deklaration sind zwei verschiedene Dinge in C++ oder in der Programmierung überhaupt. Eine Deklaration informiert den Compiler über die Eigenschaften etwa von einem
Typen oder einer Funktion, definiert aber keinen Code, der im ausführbaren Programm verwendet wird. Also namens Gebung von Variablen und Methoden.
Wenn wir ein struct/Method/Klasse/Variable deklarieren, deklarieren wir im Grunde nur ein Muster.
Beispiel: void hallo(); // Deklaration von "hallo" (ohne Definition)i fi i i d i d fi i d i f h b Eine Definition andererseits, definiert etwas, das im ausführbaren Programm
tatsächlich existiert, etwa eine Variable oder Code-Zeilen.void hallo(){ ::std::cout << "Hallo!\n"; } // Definition von "hallo"
***int main(){ hallo ();Return 0; } // Verwendung von "hallo„ in main
OOP und Angewandte Mathematik17
Fomuso Ekellem
Objektorientiert denken
Der Trick, den die OOP anwendet, besteht darin, zusammengehörende Daten und Funktionen, die auf diesen Daten operieren, in Objekte zu kapseln. D.h. Verallgemeinerung von Eigenschaften und Funktionalität.
Nehmen wir an, Sie wollen ein Program zur Manipulierung von Matrizen! Name der Matrix Zeilen Anzahl Spalten Anzahl Matrix-Werte Matrix Werte
Des weiteren gibt es verschiedene Operationen, die auf dem Matrix ausgeführt werden: Addieren Addieren Subtraktion Multiplikation Tranpose Inverse Determinante usw Tranpose ,Inverse, Determinante usw….
OOP und Angewandte Mathematik18
Fomuso Ekellem
Objektorientiert denken
Ohne objektorientierte Konzepte wird der Matrix in Ihrem Program durch eine Sammlung von einzelnen Variablen(Daten) und g ( )Funktionen(Operationen) repräsentiert.
Die Beziehung zwischen diesen Daten und Funktionen wird vor allem nur in Ihrem Kopf hergestellt.p g
OOP und Angewandte Mathematik19
Fomuso Ekellem
Klassengerüst
Class Klassenname{private:p
Datentyp name; //InstanzvariableStatic Datentyp name; //Klassenvariable
blipublic:Klassenname(); //Default KonstructorKlassenname(Datentyp parameter); //KonstruktorDatentyp Funktion1(); //MemberfunktionDatentyp Funktion2(Datentyp parameter); Datentyp Funktion3() const; // const-MemberfunktionDatentyp Funktion3() const; // const-Memberfunktionstatic Datentyp Funktion4() //static-Memberfunktion
}; // Typisch für C++
OOP und Angewandte Mathematik20
Fomuso Ekellem
Klassengerüst mit DefinitionKlassengerüst mit Definition
Variante 1Class Klassenname{
Variante 2Class Klassenname{
//DeklarationDatentyp Funktion2(Datentyp parameter);
//Gleichzeitig Deklaration und Definition
}; Datentyp Funktion2(Datentyp parameter){Anweisung}
//DefinitionDatentyp Funktion2(Datentyp parameter){
}
};
Anweisung}
OOP und Angewandte Mathematik21
Fomuso Ekellem
Klassengerüst mit HeaderdateiKlassengerüst mit HeaderdateiVariante 1- Nicht empfehlungswert Headerdatei mit Definition!!!//Headerdatei mit h
Variante 2- Wird empfohlen Headerdatei mit Deklaration//Headerdatei mit h//Headerdatei mit .h
class Klassenname{//DeklarationDatentyp Funktion2(Datentyp parameter);
//Headerdatei mit .h//DeklarationDatentyp Funktion2(Datentyp parameter);class Klassenname{yp ( yp p );
//DefinitionDatentyp Funktion2(Datentyp parameter){
{//Definition und Main in C++ QuelldateiDatentyp Funktion2(Datentyp parameter){
Anweisung}};//Nur Main in C++ Quelldatei
Anweisung}};
//Nur Main in C++ QuelldateiInt Main(){Return 0;
Int Main(){Return 0;
} }
OOP und Angewandte Mathematik22
Fomuso Ekellem
Klassen/Funktional Vergleich
Siehe Vergleichdatei.
OOP und Angewandte Mathematik23
Fomuso Ekellem
Paradigmen
Paradigma bedeutet- "Ein Beispiel, das als Muster oder Modell dient.„
Vier Haupttypen:Vier Haupttypen: Prozedurale/Imperative Funktionelle
L i h Logischen Objektorientierte
OOP und Angewandte Mathematik24
Fomuso Ekellem
Pause
Tools Installation!!!!!
OOP und Angewandte Mathematik25
Fomuso Ekellem
Compiler installieren
Mingw GCC für C++Mingw.org
26
Compiler installieren
Mingw GCC für C++Mingw.org
27
Compiler installieren
Mingw GCC für C++
28
Compiler installieren
Mingw GCC für C++ Nach erfolgreicher Installation, PATH
festlegen. z.B für win 7g Systemsteuerung-> System und Sicherheit->y System-> Erweitete Systemeinstellung->y g Systemeigenschaften-> Umgebungsvariablen
29
Compiler installieren
Mingw GCC für C++ Path bearbeiten:Path bis jetzt; Pfad von mingw\binPath bis jetzt; Pfad von mingw\bin
30
Compiler installieren
Hilfsprogram – Notepad++Notepad++ download
31
Compiler installieren
Hilfsprogram – Notepad++
32
Mingw und Notepad++ testen
Mingw testen: Windows-> start->cmd
33
Mingw und Notepad++ testen
Program mit Notepad++ so schreiben
Ordner für C++ Programme anlegen und abspeichern mit Name h llhello.cpp.
Compilieren: Windows->Start->cmd-> cd(change directory) „für C++ Programme“
Prompt: g++ hello.cpp -o hello" und starten mit hello" und starten mit „hello .
Siehe nächste Seite…
34
Mingw und Notepad++ testen
Hurra!
35
Compiler installieren
Visual C++ Expressvisual C++ express download
36
Compiler installieren
Visual C++ Express
37