/* * Programmieren fuer Physiker, SS 2010 * * Beispiel fuer eine Klasse und Methoden * hier: Minuten und Sekunden speichern und bisschen mit rechnen */ #include #include using namespace std ; // ------ Klasse minsek und Mitgliederfunktionen class minsek { private: // von "aussen" i.A. unzugaengliche Komponenten int min ; int sek ; public: void set( int m, int s) ; // Zeit setzen void print() ; // Zeit ausgeben void add( minsek t2) ; // zweite Zeit dazu addieren void operator+=( minsek t2) ; // zweite Zeit dazu, schoenere Syntax... minsek() // Konstruktor ohne Argument {} ; minsek( int m, int s) ; // Konstruktor mit Wertzuweiseung friend ostream& operator<<( ostream& str, minsek t) ; // <-- befreundete freie Funktion, ermoeglicht Ausgabe in cout mit "<<" } ; minsek::minsek( int m, int s) { min = m; sek = s; } void minsek::set(int m, int s) { min = m ; sek = s ; } void minsek::print() { cout << "(Min:Sek) = " << min << ":" << sek ; return ; } void minsek::add(minsek t2) { // Addiere Argument zwei zur aktuellen Objektinstanz sek += t2.sek ; min += t2.min ; // Uebertrag zu naechster Stelle min += sek/60 ; sek %= 60 ; } void minsek::operator+=(minsek t2) { // Addiere Argument zwei zur aktuellen Objektinstanz sek += t2.sek ; min += t2.min ; // Uebertrag zu naechster Stelle min += sek/60 ; sek %= 60 ; } ostream& operator<<( ostream& str, minsek t) { str << "(m:s)=(" << t.min << ":" << t.sek << ")" ; return str ; } int main() { minsek zeit1(0,45) ; // Konstruktoraufruf minsek zeit2 ; zeit2 = zeit1 ; // Komponentenweise Zuweisung ist ok zeit2.set(1,30) ; cout << "Dies ist Zeit 1: " ; zeit1.print() ; cout << endl ; // Addition mit Methode "add" // zeit1.add(zeit2) ; // schoener gehts mit "operator+=" zeit1 += zeit2 ; // kurz fuer zeit1.operator+=(zeit2) // bequeme Ausgabe dank operator<< fuer minsek-klasse cout << "Nach Addition: " << zeit1 << endl ; }