class Stud1 { // einfache Klasse fuer Studenten-Daten public: string name, fach; int semester, alter; double diplomnoten[4]; ... }; // end of class definiton ... // Anwendung Stud1 sta; // Erzeugung Variable vom typ Stud1 sta.name = "Albert Unirock"; sta.fach = "Physik"; sta.alter = 25; ... Stud1 stb; // Erzeugung Variable vom typ Stud1 stb.name = "Berta Bohne"; stb.fach = "Informatik"; stb.alter = 19; ...
Weiteres Beispiel: Klasse für einfachen Dreier-Vektor
class Dumb3Vec { // einfache Klasse fuer 3-er Vektoren public: double x, y, z; }; // end of class definition ... // Anwendung Dumb3Vec v; // Erzeugung Variable vom typ Dumb3Vec Dumb3Vec w; // Erzeugung Variable vom typ Dumb3Vec v.x = 1.0; v.y = 0.5; y.z = -0.8; w.x = 1.5; w.y = -0.5; w.z = -2.8; ... // Laenge ausrechnen double len = sqrt(v.x*v.x + v.y*v.y + v.z*v.z ); Dumb3Vec u; // u und v addieren u.x = v.x + w.x; u.y = v.y + w.y; u.z = v.y + w.z; ...
Anstatt gängige Operationen jedesmal wieder neu zu programmieren wäre es geschickt wenn dies gleich die Klasse übernehmen könnte:
class Smart3Vec { // Klasse fuer 3-er Vektoren mit Methoden public: double x, y, z; // member variables double Length() { return( sqrt(x*x + y*y + z*z )); }; Smart3Vec Add( Smart3Vec a ) { Smart3Vec t; t.x = x + a.x; t.y = y + a.y; t.z = z + a.z; return(t); }; }; // end of class definiton //... // Anwendung int main() { Smart3Vec v; // Erzeugung Variable vom typ Smart3Vec Smart3Vec w; // Erzeugung Variable vom typ Smart3Vec v.x = 1.0; v.y = 0.5; v.z = -0.8; w.x = 1.5; w.y = -0.5; w.z = -2.8; //... // v kann seine Laenge selbst ausrechnen ... double len = v.Length(); // ... und weiss auch wie es einen anderen Vektor addiert Smart3Vec u = v.Add(w); // ... }
Klassen nicht nur zum Definieren beliebiger Datenstrukturen sondern auch
gleich Operationen bzw. Methoden mit diesen Daten
Grundkonzept für Objektorientiertes Programmieren