Computer-Masters.de > Artikel > Programmieren > C++ > C++ Einsteigerkurs > C++ Einsteigerkurs: Kapitel 12: Klassen

C++ Einsteigerkurs: Kapitel 12: Klassen

Im Kapitel 1 bis 11 haben Sie nun schon so einiges gelernt und können auch das eine oder andere kleine Programm schreiben und damit Ihre Freunde und Familie erfreuen.
Doch schon bald stößt man mit diesen Grundlagen an die Grenzen des machbaren oder der Code wird schnell redundant und unübersichtlich.
Das rettende Stichwort lautet Objektorientierung.

In der Objektorientierung (kurz: OO), wird ein komplexes Programm oder allgemein System in einzelne Objekte zerlegt, die untereinander kommunizieren können.
Doch wie funktioniert das in der Praxis?
Folgendes Beispiel beschreibt das Grundprinzip hinter der Objektorientierten Programmierung (kurz: OOP):

Um die OOP zu verstehen, muss man wissen, dass man damit real existierende Dinge (z.B. Autos) mit einem Computer modellieren, also vereinfachen will.
Jedes Auto hat gewisse Eigenschaften (Attribute), z.B. Farbe, und man kann damit gewisse Dinge anstellen (Methoden), wie zum Beispiel fahren.
Folglich kann man alle Autos zu einer Klasse zusammenfassen.
Zwar hat nicht jedes Auto die gleiche Farbe, aber jedes Auto hat die Eigenschaft Farbe.
Außerdem kann jedes Auto gefahren werden. Defekte Autos werden zur Vereinfachung nicht in das Modell mit einbezogen.
Wenn man jetzt zum Beispiel eine Kreuzung simulieren will, braucht man mehr als ein Auto. Man schreibt sich also eine entsprechende Klasse und kann dann nach belieben Objekte (also Autos) erzeugen die auf der Kreuzung umherfahren.
Der Fahrer eines Autos braucht sich auch nicht dafür zu interessieren, wie der Motor seines Autos (also die Methoden der Klasse) genau funktioniert, hauptsache es fährt.
Um das Modell einfach zu halten, soll man bei einem Objekt der Klasse Auto also nur die Farbe festlegen können und man soll damit fahren können.

Klasse schreiben und Objekte erzeugen

Wenn Sie das Beispiel verstanden haben, interessiert Sie als nächstes die Syntax, also wie man so etwas nun in C++ schreibt.
Folgender Code richtet sich nach dem obigen Beispiel:


Cpp-Script

#include <iostream>
#include <windows.h>

using namespace std;

class Auto
{
    //ffentliche Variablen
public:
    char * color;
    
    //Der Konstruktor der beim erzeugen eines Objekts aufgerufen wird
    Auto (char * farbe)
    {
        color = farbe;
    }

    //Die Methode fahre
    void fahre()
    {
        cout<<"Das "<<color<<"e Auto faehrt.\n";
    }

};

// Die Main-Funktion wird als int definiert.
int main()
{   
    //Objekte der Klasse Auto erzeugen (beliebig viele mglich)
    Auto fahrzeug1("blau");
    Auto fahrzeug2("gelb");

    //Fahrzeug 1 fahren lassen
    fahrzeug1.fahre();
    
    //Pause
    Sleep(1000);

    //Fahrzeug 2 fahren lassen
    fahrzeug2.fahre();
    
    //Das Programm wird bis Tastendruck angehalten.
    system("Pause");
    
    //Die Main-Funktion vom Typ Int muss einen Wert zurckgeben (in diesem Fall 0)
    return 0;
1

class Auto

So einfach schreibt man also eine Klasse.
class: es ist eine Klasse
Auto: Name der Klasse

Das Stichwort 'public:' besagt, dass die Variablen der Klasse öffentlich sind, man also auch von außerhalb der Klasse darauf zugreifen kann.
Das Gegenteil von 'public' ist 'private'.

Auto (char * farbe)

Das ist der Konstruktor der Klasse Auto. Der Konstruktor trägt immer den selben Namen wie die Klasse und wird beim erzeugen eines Objekts der Klasse automatisch aufgerufen.
Der Konstruktor dient dazu ein Objekt zu initialisieren.
In diesem Fall wird einfach nur die Variable 'farbe' vom Typ 'char *' mit einem Wert belegt.

Methoden

Jetzt folgen die Methoden der Klasse. Es kann beliebig viele Methoden geben.
In diesem Fall gibt es der Einfachheit halber nur eine.

Objekterzeugung

Die Klasse ist nach dem Semikolon fertig und es folgt die altbekannte main-Funktion.
In dieser main-Funktion werden dann Objekte der Klasse Auto erzeugt. Es können beliebig viele Objekte erzeugt werden (bis der Speicher des Computers voll ist).
Das Erzeugen eines Objekts einer Klasse ist ähnlich wie das Erzeugen einer Variable:
Auto fahrzeug1("blau");
Der Klassenname entspricht dem Datentyp und
der Objektname dem Variablennamen.
Der Unterschied ist, dass der Konstruktor der Klasse mit aufgerufen wird, und in diesem Fall einen Parameter als 'char *' verlangt.

Methodenaufruf

Die Methoden der Klasse werden mit Punktnotation über das Objekt aufgerufen.
Objektname.Methodenname();

fahrzeug1.fahre(); hat ein anderes Ergebnis als fahrzeug2.fahre();, da die Objekte mit jeweils unterschiedlichen Variablen belegt wurden.
Dieses einfache Beispiel lässt schon erahnen, welche großen Vorteile Objektorientierte Programmierung mit sich bringt.

Da dieser Kurs nur ein Einsteigerkurs ist, wird Vererbung und die weiteren schönen Dinge der OOP nicht behandelt. Das Tutorial endet mit diesem Kapitel.
Lesen Sie den Ausblick im nächsten Kapitel, um über Ihr weiteres Vorgehen beim Erlernen von C++ nachzudenken.

 

 

 

Download der Codedateien aus Kapitel 12

application/zip Kapitel 12 Quellcode (1,8 KiB)
Computer-Masters.de > Artikel > Programmieren > C++ > C++ Einsteigerkurs > C++ Einsteigerkurs: Kapitel 12: Klassen

Anzeige: