Modulo
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int x=10;
int y=3;
// Modulo Operation
cout << "Modulo:\t";
cout << (x % y);
cout << endl;
// Modulo selbst programmiert
cout << "Modulo:\t";
cout << x-y*(floor(x/y));
cout << endl;
}
Generalisierung
- Definition
- Beziehung einer einzigen Klasse zu einer beliebigen Anzahl von verfeinerten Versionen der selben
- Abgeleitete Klassen
- Basisklasse <–> Abgeleitete Klasse (verfeinert)
- Abgeleitete Klasse enthält mehr Atribute und Methoden
- Basisklasse enthält alle geteilten Attribute und Methoden der Abgeleiteten Klassen ( Gruppierung)
- Jedes Objekt vom Typ einer abgeleiteten Klasse ist gleichzeitig ein Typ aller Vorfahren
- Vererbung
- Vererbung ist der Prozess/Mechanismus die Attribute und Methoden der Basisklasse zu nutzen
- Mechanismus ist über alle Vererbungsebenen hinweg transitiv (Vorfahren-/Nachkommens-Klassen)
- Vererbungen sind immer Public-Methoden
- Private-Methoden und Attribute von Vorfahren sind auch durch Kapselung geschützt
- Private-Attribute müssen noch immer via get-Methode geholt werden!
- Darstellung
- Aufgebaut als hierarchische Struktur
- Basisklasse wird mittels „Dreieck“ an die abgeleiteten Klassen verbunden
Diskriminator
- Beschriftung wird an das Dreieck angefügt
- Unterscheidungskriterium zwischen Vererbungensklassen / Gruppierung
struct – Struktur
- Vorgänger der Klassen
- Enthält „Attribute“ und „Methoden“
- Vererbung ist möglich
- Kapselung ist nicht enthalten
- Beispiel:
- Manager sind auch Angestellte mit besonderen Funktionen
- Manager-Struktur enthält ein Memberobjekt des Typs Angestellter
- Manager sind dadurch nicht automatisch Angestellte (Problem!)
- Auslesen aller Angestellter benötigt somit zusätzlichen Aufwand
- Besser:
- Manager zu abgeleiteten Angestellten umwandeln
- Manager besitzt somit alle Eigenschaften von Angestellten
- Manager wird um eigene Eigenschaften erweitert