Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

C++ FÜR cOMPUTERSPIELENTWICKLER

Ähnliche Präsentationen


Präsentation zum Thema: "C++ FÜR cOMPUTERSPIELENTWICKLER"—  Präsentation transkript:

1 C++ FÜR cOMPUTERSPIELENTWICKLER
Klassen und Objekte C++ FÜR cOMPUTERSPIELENTWICKLER

2 Objektorientierung Denkmodell, welches von C++ unterstützt wird
OO-Design kann in C++ implementiert werden Verwendung von OO-Features nicht zwingend OO-Design! Erstellen von Architektur und Design hat den stärksten Einfluss auf die Software konzeptuelle Änderungen können Auswirkungen auf das gesamte Programm haben Instabilitäten bis hin zum kompletten Redesign Abstraktionsschichten

3 Klassen und Objekte Eine Klasse beschreibt Eigenschaften und Funktionalität einer bestimmten Gruppe von Objekten. Eine Klasse ist ein (komplexer) Datentyp. Objekte sind spezielle Ausprägungen (Instanzen) einer Klasse in einem bestimmten Zustand. Ein Objekt ist eine Variable.

4 Klassen class YetAnotherClass { private: int32 *myValue_; // Zustandsvariable public: YetAnotherClass(int32 a_Value); // Konstruktor ~YetAnotherClass(); // Destruktor const int32 *GetMyValue(); // Methode }; const int32 *YetAnotherClass::GetMyValue() return myValue_; }

5 Objekte int main(int argc, char *argv[]) { YetAnotherClass myYAC (42); cout << "Die Antwort ist " << *myYAC.GetMyValue() << endl; cout << *myYAC.myValue_; return (0); }

6 Klassen - Zugriffsmodifizierer
private: Zugriff nur durch Methoden, die in der gleichen Klasse definiert sind, sowie friend-Funktionen und Klassen protected: Wie private, zusätzlich dürfen Methoden aus abgeleiteten Klassen zugreifen public: alle Funktionen und Methoden dürfen zugreifen

7 Klassen - Konstruktoren
Wird nach der Reservierung des Speichers für die Instanz aufgerufen Overloading, dh. mehrere Konstruktoren mit unterschiedlichen Parametersätzen möglich default Konstruktor nimmt keinen Parameter entgegen wird automatisch erzeugt, wenn kein anderer Konstruktor definiert wurde copy Konstruktor nimmt als Parameter die „eigene“ Klasse entgegen wird automatisch erzeugt

8 Konstruktoren class YetAnotherClass { … // default constructor YetAnotherClass(); // constructor with a parameter YetAnotherClass(int32 a_Value); // copy constructor YetAnotherClass(const YetAnotherClass &src); };

9 Konstruktoren YetAnotherClass::YetAnotherClass() { myValue_ = new int32(0); } YetAnotherClass::YetAnotherClass(int32 value) myValue_ = new int32(value); YetAnotherClass::YetAnotherClass(const YetAnotherClass &src) myValue_ = new int32(src.myValue_);

10 Konstruktoren int main(int argc, char *argv[]) { YetAnotherClass first; YetAnotherClass second(42); YetAnotherClass third(second); return (0); }

11 Klassen - Destruktoren
~Klassenname(); wird vor dem Freigeben des durch die Klasse belegten Speichers aufgerufen es gibt genau einen (parameterlosen) Destruktor ein nicht deklarierter Destruktor wird implizit erstellt

12 Destruktoren class YetAnotherClass { … // destructor ~YetAnotherClass(); }; YetAnotherClass::~YetAnotherClass() delete myValue_; }

13 Aufgabe 14: Bitte melde dich
Erstelle eine einfache Klasse, die einen Integerwert speichert Erstelle für diese Klasse einen default-Konstruktor, einem Kopierkonstruktur und einem für die Initialisierung mit einem Wert Erstelle einen Destruktor Die Konstruktoren und der Destruktor sollen ihren Aufruf über die Konsole mitteilen Erstelle Instanzen dieser Klasse, die je einen der Konstruktoren verwendet

14 Klassen – class member Variable oder Methode, die für alle Instanzen der Klasse gleich ist und nicht für jedes Objekt extra existiert Deklaration über static Definition erforderlich – auch für die Variable! (üblicherweise im zugehörigen *.cpp-File)

15 Klassen – class member // im Headerfile class MyClass { protected: static uint16 instance_count_; public: static uint16 GetInstanceCount(); … } // im *.cpp-File uint16 MyClass::instance_count_ = 0; uint16 MyClass::GetInstanceCount() return instance_count_;

16 Klassen – class member Zugriff über den Scope Operator (::)
cout << "Anzahl Instanzen: " << MyClass::GetInstanceCount() << endl; wenn eine Instanz der Klasse vorhanden ist, kann auf einen class member auch über dieses Instanz zugegriffen werden

17 Klassen – statische Konstanten
Wertzuweisung in der Klassendeklaration class myClass { … static const uint8 FRONT_SIDE = 0x01; … }; Zusätzlich muss die Definition im zugehörigen cpp-File erfolgen const uint8 myClass::FRONT_SIDE;

18 Aufgabe 14: Selbstzähler
Erstelle eine Klasse, die automatisch die Anzahl der von ihr erstellten Instanzen zählt Teste die Klasse, indem du ein Programm schreibst, welches eine Funktion enthält, die 2 Instanzen der Klasse erstellt und am Ende die Anzahl der Instanzen ausgibt in der main Funktion folgende Schritte durchführt Erstelle eine Instanz der Klasse und gib die Anzahl der Instanzen aus Rufe die Funktion zum Erstellen der 2 Instanzen auf gib die Anzahl der Instanzen aus Erstelle eine weitere Instanz der Klasse und gib die Anzahl der Instanzen aus


Herunterladen ppt "C++ FÜR cOMPUTERSPIELENTWICKLER"

Ähnliche Präsentationen


Google-Anzeigen