#include"JWI_Klassen_Liste.cpp"


class Geschaeftspartner
{
// Attribute
	public:		//	Notwendig, damit die abgeleiteten Klasse die Daten direkt verändern können

	char* name;	//	Name des Kunden bzw. Lieferanten
	char* strasse;	//	Straße und Hausnummer des Kunden bzw. Lieferanten
	char* ort;		//	Ort des Kunden bzw. Lieferanten
	char* plz;		//	Postleitzahl des Kunden bzw. Lieferanten
	char* tel;		//	Telefonnummer des Kunden bzw. Lieferanten
	int gnr;			//	Nummer des Kunden bzw. Lieferanten

//Operationen
	public:

//	Konstruktor		
		Geschaeftspartner(char* n="", char* s="", char* o="", 
				char* p="", char* t="", int nu=0)
			: name(n), strasse(s), ort(o), plz(p), tel(t), gnr(nu) {}

//	Destruktor
		~Geschaeftspartner(void) {}

//	Daten abfragen		
		char* HoleNamen(void);
		char* HoleStrasse(void);
		char* HoleOrt(void);
		char* HolePlz(void);
		char* HoleTel(void);
};



//	abgeleitete Klassen
//	nur notwendig für den eindeutigen Bildschirmdialog der Operation Neu
//	und der darin geforderten Kunden- bzw. Lieferantennummer


class Kunde: public Geschaeftspartner
{
//	Operationen
	public:

//	abgeleiteter Konstruktor
		Kunde(char* n="", char* s="", char* o="", char* p="", char* t="", int nu=0)
			: Geschaeftspartner (n, s, o, p, t, nu) {}

//	weitere Daten abfragen
		int HoleKundenNr(void);

//	ändert über einen Bildschirmdialog die Daten des Objektes
		void DatenAendern(void);

//	ein neuer Kunde wird initialisiert 
//	- übernahme ins System über die Klasse Verwaltung: NeuerKunde
		void Neu(int kundennr);
};


class Lieferant: public Geschaeftspartner
{
//	Operationen
	public:

//	abgeleiteter Konstruktor
		Lieferant(char* n="", char* s="", char* o="", char* p="", char* t="")
			: Geschaeftspartner (n, s, o, p, t) {}

//	weitere Daten abfragen		
		int HoleLieferantenNr(void);

//	ändert über einen Bildschirmdialog die Daten des Objektes		
		void DatenAendern(void);

//	ein neuer Lieferant wird initialisiert 
//	- übernahme ins System über die Klasse Verwaltung: NeuerLieferant
		void Neu(int lieferantennr);
};



//	von der Klasse Liste werden weitere Klasse abgeleitet, die als Karteien bezeichtnet werden
//	diese Beszeichnung soll andeuten, daß diese Klasse durch Operationen erweitert werden 
//	können, die diese Liste ggf. auf einem externen Datenträger anlegen:

class KundenKartei: public Liste<Kunde>{};

class LieferantenKartei: public Liste<Lieferant>{};
