/* * 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) ; // gleiches in schoenerer Notation int convert_sek() ; // Zeit in Sekunden zurueckgeben } ; 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 ; } // Addition mit "operator"-Funktionsname void minsek::operator+= (minsek t2) { sek += t2.sek ; min += t2.min ; // Ueberlaeufe: min += sek/60 ; sek %= 60 ; } int minsek::convert_sek() { return 60*min+sek ; } int main() { minsek zeit1, zeit2 ; zeit1.set(0,45) ; 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) ; cout << "Nach Addition: " ; zeit1.print() ; cout << endl ; // Und dazuaddieren mit schoenerer Operator-Syntax zeit1 += zeit2 ; // kurz und schoen fuer zeit1.operator+=(zeit2) cout << "Nach nochmaliger Addition: " ; zeit1.print() ; cout << endl ; // Umwandlung in Sekunden cout << "Dies ist in Sekunden: " << zeit1.convert_sek() << endl ; }