C++ FÜR cOMPUTERSPIELENTWICKLER

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

1 Funktionstemplates Einbinden von Templates: –Eine *.o Datei, die durch Übersetzen einer Datei nur mit Templates erzeugt wurde, enthält keinen Programmcode.
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
Objektorientierte Programmierung Definition von Klassen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Abstrakter Datentyp in C++ I - Klasse -
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Presenter: Daniel Walzenbach Technologieberater
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Einführung in die Programmierung
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Ham EST Das Schwein Schmatz.. Fressen Beginnen wir.... mit einer Geschichte:
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Dynamische Datentypen
Objektorientiertes Konstruieren
Dienstag Informatik 1 Tag 2
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Instanzmethoden
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
A Workshop About this chapter General description Units Time Schedule
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Abstrakte Klassen und das Interface-Konzept
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
S INGLETON P ATTERN IN M ATLAB By Giuseppe
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Singletons, Exceptions und (s)printf. Template Klassen  äquivalent zu Template-Funktionen  beim Erzeugen von Instanzen muss der Typ angegeben werden.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Friends C++ ermöglicht, einzelne Funktionen oder ganze Klassen zu friends zu erklären. Friendfunktionen haben Zugang zu den privaten Daten einer Klasse.
Grundkurs Informatik 11-13
Definition Felder Konstruktor Methoden Beispiel
Implementieren von Klassen
Statische und Nichtstatische Methoden Properties / Eigenschaften
Grundkurs Informatik 11-13
 Präsentation transkript:

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

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

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.

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_; }

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

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

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

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

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_);

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

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

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

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

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)

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_;

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

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;

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