Hydroinformatik I: Klassen

Ähnliche Dokumente
Hydroinformatik I - WiSe 2018/2019 V5: Klassen

Hydroinformatik I: Klassen

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Strings

Hydroinformatik I: IO - Files

Hydroinformatik I: Strings

7. Übung Informatik II - Objektorientierte Programmierung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Hydroinformatik I: Hello World

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Hydroinformatik I: Hello World

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Hydroinformatik I: Synthese-Übung Sprachelemente

Objektorientiertes Design

Hydroinformatik I - WiSe 2018/2019 V11: BigData

Programmieren in C/C++ und MATLAB

Aufbau von Klassen. class punkt {...

Lösung der OOP-Prüfung WS12/13

Hydroinformatik II: Grundlagen der Kontinuumsmechanik

Modellierung Hydrosysteme: Finite-Differenzen-Methode (FDM)

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Modellierung Hydrosysteme: Finite-Differenzen-Methode (FDM)

Hydroinformatik II: Gerinnehydraulik

Programmierung und Angewandte Mathematik

Modellierung Hydrosysteme: ] Finite-Differenzen-Methode (FDM)

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test

Klassen. Kapitel Klassendeklaration

Programmieren in C++ Templates

3 Dateien 5. 4 Aufgaben 5. 5 Ausblick 6. Wir wenden uns der Implementierung von Datenstrukturen mittels objekt-orientierter Programmierung

Angewandte Mathematik und Programmierung

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Angewandte Mathematik und Programmierung

Klassen. C++ Übung am 02. Juni 2016

Objektorientierung Grundlagen

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Objektorientierte Programmierung

Kap. 11 Objektorientierung: ein Beispiel

7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor

9. Vektoren. (auch Felder/array)

C++ - Objektorientierte Programmierung Vererbung

Einführung in die Programmierung Wintersemester 2018/19

c) Zur Ausgabe der Transaktion soll statt print der Operator << verwendet werden.geben Sie die dazu nötigen Änderungen an.

Programmierkurs C++ Kapitel 6 Module Seite 1

Praxisorientierte Einführung in C++ Lektion: "Namespaces"

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Verwendung von Klassen in C++

Zusammenfassung. Mit bjam und ein paar Zeilen in einem Jamroot oder Jamfile lässt sich das Kompilieren und Linken einfach automatisieren

Vorkurs C++ Programmierung

Auswahlen (Selektionen)

C/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson.

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };

Crashkurs C++ Wiederholung

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

C++ - Objektorientierte Programmierung Polymorphie

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29.

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Einführung in die Programmiersprache C

C++ - Objektorientierte Programmierung Konstante und statische Elemente

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren

C++ - Objektorientierte Programmierung Klassen und Objekte

Programmieren in C++ Überblick

Hydroinformatik I C++ und Visual C++

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Einführung in C ++ und die Objektorientierte Programierung

Programmieren 2 C++ Überblick

Programmieren in C/C++ und MATLAB

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Algorithmen und Datenstrukturen

Einführung in die Programmierung

Mikrorechentechnik II. Klassen in C++

Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung

Hydroinformatik II: Gerinnehydraulik

Einführung in die Programmierung Wintersemester 2011/12

Globale Variablen Diverses. Globale Variablen. Globale Variablen

Einstieg in die Informatik mit Java

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Objektorientierte Programmierung mit C++ SS 2007

Hydroinformatik I Abschluss C++ Big Data

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

Vorlesungsprüfung Programmiersprache 1

SimpleStat mit Methoden

Objektorientierte Programmierung und Klassen

Klausurvorbereitung Lösung

Programmierung III. Pointer für Fortgeschrittene Marc Ruberg. Arrays von Pointern ( Zeigervektoren ): Pointer auf Pointer:

Einführung in die Programmiersprache C

Implementieren von Klassen

Grundlagen der Programmierung in C Klassen

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

Transkript:

Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 11. November 2016 1/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Semesterplan 2/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Status IDE (Compiler) (MW)... Überblick C++ (TK) 3/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Objekt-Orientierung 4/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Objekt-Orientierung 5/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Objekt-Orientierung - Typen 6/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Objekt-Orientierung - Typen https://www.youtube.com/watch?v=jbjjnqg0bp8 http://www.stroustrup.com/ https://en.wikipedia.org/wiki/bjarne_stroustrup... wenn das I tut 7/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Objekt-Orientierung - OGS 8/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Objekt-Orientierung - OGS - History 9/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Klassen Das Sprachelement der Klassen sind das entscheidende Kriterium von objekt-orientierten Konzepten und die objekt-orientierte Programmierung (OOP). Klassen sind eine Art Schablone für einen benutzerdefinierten Datentypen. Darüber hinaus enthält die Klasse neben den Daten auch alle Methoden (Funktionen), um mit den Daten der Klasse operieren zu können. Unser Beispiel für Klassen, das uns im Verlaufe der Vorlesung beschäftigen wird, ist - wie könnte es anders sein - CStudent (Abbildung). Für die Konzipierung von Klassen spielt die Abstraktion der Daten einer Klasse eine besonders wichtige Rolle. 10/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Abbildung: Das Klassen-Konzept - CStudent 11/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Daten-Abstraktion Die Abbildung illustriert uns, dass eine Abstraktion von Daten (d.h. Eigenschaften) der Klasse Studenten eine durchaus vielschichtige Angelegenheit sein kann. Eine Aufstellung von Daten / Eigenschaften, die es aus ihrer Sicht zu berücksichtigen gilt, ist ihre nächste Hausaufgabe. 12/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

C vs. C++ Der nächste Block zeigt ihnen das Schema der Syntax der Klassen-Definition CStudent. Das Schlüsselwort für die Klassen-Definition ist class, der Name ist CStudent. Der Klassen-Rumpf ist in geschweifte Klammer eingebettet. Wichtig ist der Abschluss mit einem Semikolon. Wie bereits erwähnt, eine Klasse enthält Daten (Eigenschaften) und Methoden (Funktionen) auf den Daten. Prinzipiell geht diese Datenabstraktion auch mit anderen Sprachen wie C. typedef struct { char* name_first; char* name_last; long matrikel_number; } TDStudent; TDStudent *student = NULL; class CStudent { data:... methods:... }; 13/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Daten-Abstraktion Ein weiterer Vorzug von OO-Sprachen ist z.b. die Sichtbarkeit / Zugreifbarkeit von Daten zu regeln. Der nachfolgende Block zeigt das Datenschutz-Konzept von C++ (Sicherheitsstufen): Daten können öffentlich sein (public) oder gezielt für Freunde verfügbar gemacht werden (protected) oder nur exklusiv für die eigene Klasse sichtbar zu sein (private). class CStudent { private:... protected:... public:... }; 14/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Klassen-Deklaration Im vorangegangenen Abschnitt haben wir uns mit der Datenabstraktion mittels Klassen beschäftigt. So sollte konsequenterweise jede Klasse auch ihre eigenen - sorry - eigenen Quelldateien besitzen. Die Deklaration von Klassen erfolgt üblicherweise in einer sogenannten Header-Datei *.h. Für die Methoden / Funktionen der Klasse ist eine *.cpp Datei reserviert. Für uns bedeutet dies, zwei Dateien anlegen: student.h - die Deklaration der Klasse CStudent student.cpp - die Methoden der Klasse CStudent 15/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Klassen-Deklaration Um mit der Klasse arbeiten zu können, müssen wir das entsprechende Header-File inkludieren. Dies erfolgt mit der Anweisung #include student.h am Anfang unseres Main-Files. #include "student.h" int main { return 0; } 16/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Instanzen einer Klasse An dieser Stelle möchten wir unsere Eingangsgraphik erinnern. Instanzen sind Kopien einer Klasse mit denen wir arbeiten können, dass heißt diese bekommen echten Speicher für ihre Daten (die natürlich für jede Instanz einer Klasse unterschiedlich sein können). 17/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Instanzen einer Klasse Es gibt zwei Möglichkeiten, Instanzen einer Klasse zu erzeugen: #include "student.h" void main() { // Creating an instances of a class - 1 CStudent m_std_a; // Creating an instances of a class - 2 CStudent *m_std_b; } 18/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Instanzen einer Klasse Der direkte und der mittels eines sogenannten Zeigers (hierfür gibt ein Extra-Kapitel). Wir werden sehen, dass der zweite Weg oft der bessere ist, da wir z.b. die Initialisierung und das Speichermanagement für unsere Daten selber in die Hand nehmen können. Dies können wir mittels sogenannter Konstruktoren und Destruktoren erledigen. Damit beschäftigen wir uns im nächsten Abschnitt. 19/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++

Instanzen einer Klasse #include "student.h" #include <iostream> using namespace std; int main() { CStudent *m_std_cpp; // pointer to an instance cout << "E41: Instances of classes" << endl; cout << "What have we created?\t : " << m_std << endl; cout << "What size has it?\t : " << sizeof(m_std) << endl; TDStudent *m_std_c; // pointer to TD return 0; } 20/20 Prof. Dr.-Ing. habil. Olaf Kolditz Hydroinformatik I C++