Programmierbefehle - Woche 10 PDF
Document Details
Uploaded by FervidDune
ETH Zurich
Tags
Summary
This document provides a summary and examples of C++ programming concepts, data types, iterators, and standard functions, as covered in programming class examples. The content is geared towards an undergraduate level of education.
Full Transcript
Programmier-Befehle - Woche 10 Datentypen class Datencontainer mit Kapselung Eine Klasse besteht aus Daten und Funktionen, genannt Member, und erlaubt deren Kapselung via Zugriffkontrolle: Auf Member im privaten Teil (private) einer Klasse kann nur durch die Klasse selbst...
Programmier-Befehle - Woche 10 Datentypen class Datencontainer mit Kapselung Eine Klasse besteht aus Daten und Funktionen, genannt Member, und erlaubt deren Kapselung via Zugriffkontrolle: Auf Member im privaten Teil (private) einer Klasse kann nur durch die Klasse selbst, d.h., deren Member-Funktionen zugegriffen werden. Zugriff von ausserhalb der Klasse muss über öffentliche (public) Member erfolgen. Per default sind die Member einer Klasse privat. Einziger Unterschied gegenüber structs: Member in structs sind per default öffentlich (public). Deklarationsreihenfolge von Membern ist irrelevant. class my class { public: // public section double some public member; private: // private section double some private member; };... my class inst; inst.some public member = 1.0; inst.some private member = 0.0; // ERROR: cannot access private // members directly Seite 1 von 9 Programmier-Befehle - Woche 10 Memberfunktion Funktionalität auf Klassen Memberfunktionen stellen Funktionalität auf einer Klasse bereit. Sie ermöglichen den kontrollierten Zugang zu den privaten Daten und priva- ten Memberfunktionen. Die Deklaration einer Memberfunktion erfolgt immer in der Klassendefinition, die Definition der Memberfunktion ist auch extern möglich (ermöglicht vorkompilierte Libraries). Dann muss allerdings die Zugehörigkeit zur Klasse explizit erwähnt werden mittels der ::-Schreibweise. Der Aufruf einer Memberfunktion ist obj.mem func(arg1, arg2,..., argN). Der Teil obj. kann weggelassen werden, falls aus der Class heraus auf einen Member des aufrufenden Objekts (siehe Eintrag *this) zugegriffen wird. // Internal Definition vs. External Definition class Insurance { public: void set rate i (const double v) { rate = v; } // int. void set rate e (const double v);... private: double rate;... }; void Insurance::set rate e (const double v) {rate = v;} // ext. ------------------------------------------------------------------ // Call from Inside vs. Call from Outside class Insurance { public: double get rate () { if (!is up to date) update rate(); // from inside return rate; } double get cost () {return get rate() *...;} // from inside... // e.g. stuff which sets the data members private: bool is up to date; double rate; double update rate () { rate =...; } };... Insurance insurance;... std::cout Complex) Complex(const float i) : real (i), imag (0) { } private: float real; float imag; }; Seite 4 von 9 Programmier-Befehle - Woche 10 Iteratoren Iterator (auf Iterieren über einen Vektor. Vektor) Erfordert: #include Wichtige Befehle (gelte std::vector a (6, 0);): Definition: std::vector::iterator itr =...; Iterator auf a: a.begin() Past-the-End-Iterator: a.end() Zugriff auf Iterator: itr = otr itr // Iterator gets new target. Zugriff auf Target: *itr = 5 // Target gets new value 5. Vergleich: itr == otr itr // Same target? itr != otr itr // Different targets? Anstelle des... in der Definition eines Iterators müssen andere Iteratoren stehen (z.B. a.begin()). Um lange Zeilen zu vermeiden, siehe Eintrag Typ-Alias. Der * Operator, um auf das Targets eines Iterators zuzugreifen, wird auch Dereferenz-Operator genannt. // Example for vectors. // Read 6 values into a vector std::cout > *i; // read into object of iterator // Output: a+a, a+a, a+a for (std::vector::iterator i = a.begin(); i < a.begin()+3; ++i) { assert(i+3 < a.end()); // Assert that i+3 stays inside. std::cout