Grundlagen Objektorientierung
Motivation
Ziel: Bessere Strukturierung von Programmen, sauberes API („Schnittstelle", Application Programmers Interface), Wiederverwertbarkeit. Die wichtigsten Mechanismen zum Erreichen dieses Ziels:
- Kapselung: Zugriffsbeschränkung auf die Daten (Membervariablen)
- private: nur innerhalb der Klasse
- public: von außerhalb
- protected: auch von abgeleiteten Klassen
- Funktionen: (Member functions, Methoden)
- Lese- und Schreibzugriff auf die Membervariablen
- Spezielle: Konstruktor, Destruktor
- Vererbung: Ableitung von einer oder mehreren Basisklassen (person -> schueler)
- Überladen von Funktionen: Auswahl der verwendeten Funktion anhand der Übergabeparameter:
setData(char *name);
setData(char *name, int kennzahl);
- Polymorphie: Basisfunktion, die in den vererbten Klassen unterschiedlich definiert wird.
- Unterschied struct – class: Members bei struct standardmäßig public, bei class private.
- Beispiele für objektorientierte Sprachen: C++, C#, Java, Python, Javascript
- Objekt: Instanz einer Klasse
schueler x; // schueler -> Klasse, x -> Objekt
schueler x(„franz", 6014572018001);// Erzeugung+Initialisierung
Mächtigere Datentypen
Basisdatentypen (C / C++)
int x = 0;
int … Datentyp („Bauplan")
x … Instanz (eigentliche Element im Speicher)
Struktur: erweiterter Datentyp mit mehreren Basisdatentypen (C / C++)
struct schueler {
char name[20];
int kennzahl;
};
Klasse: erweiterter Datentyp mit wichtiger Zusatzfunktionalität (C++)
class schueler {
public:
schueler(char *name, int kennzahl); // Konstruktor
void show(); // Lesen
void setData(char *name, int kennzahl); // Schreiben
private:
char name[20]; // Membervariablen
int kennzahl;
};