#include <iostream>
using namespace std;

class Vehicle {
public:
	Vehicle() {
		cout << "Default Konstruktor der Basis-Klasse" << endl;
	}

	Vehicle(int x) {
		cout << "param. Konstruktor der Basis-Klasse" << endl;
	}
	string brand = "Ford";
	void honk() {
		cout << "Tuut, tuut \n";
	}
};

class Car : public Vehicle {
public:
	Car() : color("red") {		// Constructor with initialization list
	}
	Car(string col) : color(col) {
		//_maxSpeed = 200;
		cout << "Konstruktor der Car-Klasse" << endl;
		setMaxSpeed(200);
	}
	Car(string col, int s) : color(col) {
		//_maxSpeed = 200;
		setMaxSpeed(s);
	}
	string color;				// Atributen, Membervariable
	
	void drucke() {
		cout << "Farbe: " << color << brand << endl;
		Vehicle::honk();
	}
	// getter/setter
	void setMaxSpeed(int s) {
		if(s < 160)
			_maxSpeed = s;
		else
			_maxSpeed = 160;
	}
	int getMaxSpeed() {
		return _maxSpeed;
	}
private:
	int _maxSpeed;
};

int main() {
	Car myObj("blue");			// Erzeugen das Objekt myObj der Klasse Car
	
	cout << "Farbe: " << myObj.color << endl;
	myObj.color = "red";
	myObj.drucke();
	printf("Farbe: %s \n", myObj.color.c_str());
	myObj.setMaxSpeed(200);
	printf("Max Speed: %d \n", myObj.getMaxSpeed());
	cout << myObj.brand << endl;
	myObj.honk();
	return 0;
}