ich programmiere erst seit ein paar Tagen mit Python. Meine Vorkenntnisse beschränken sich auf wenige VBA-Programme mit geringem Umfang. OOP ist für mich gänzlich neu, alles Bisherige war prozeduales Programmieren.
Eine grundsätzliche Frage, die sich bisher ergeben hat bezieht sich auf den Umgang mit Klassen, die andere Klassen benutzen sollen.
Mal angenommen, ich wäre Unternehmer und möchte Außenbüros gründen, könnte die Vorlage für eine Datenbank ja so aussehen:
Code: Alles auswählen
#! /usr/bin/python
# -*- coding: utf-8 -*-
class Mitarbeiter:
def __init__(self,name):
self.name=name
def pMA(self):
print "\t\t"+self.name
class Geschaeftsfuehrer:
def __init__(self,name):
self.name=name
def pGF(self):
print "\t\t"+self.name
class Aussenbuero:
def __init__(self):
self.MA1=Mitarbeiter("Harald E.")
self.MA2=Mitarbeiter("Gerd F.")
self.GF1=Geschaeftsfuehrer("Albert S.")
AB_Berlin=Aussenbuero()
print "\nAußenbüro Berlin:"
print "\tGeschäftsführer:\t"
AB_Berlin.GF1.pGF()
print "\tMitarbeiter:"
AB_Berlin.MA1.pMA()
AB_Berlin.MA2.pMA()
print
Da hier nur die Hauptklasse auf zwei Unterklassen zugreift, bleibt das Ganze sehr übersichtlich und der Methodenaufruf zum Ausgeben auch noch recht einfach (z. B. AB_Berlin.G1.pGF()). Was ist aber nun, wenn ich die Klasse PKW habe, die auf die Klasse Antriebsstrang zurückgreift, die wiederum auf die Klasse Motor zurückgreift, die wiederum auf die Klasse Kurbelwelle zurückgreift, wobei die Kurbelwelle das Attribut Gewicht hat, welches ich im Hauptprogramm ausgeben möchte. Nach obiger Methode müsste ich dann das Attribut dann zum Beispiel über Opel.AntriebsstrangNormal.Motor75kW.KWgeschmiedet.printGewicht() ausgeben, was mir aber doch recht unhandlich erscheint. Ich habe mir auch verschiedene Beispiele hinsichtlich Vererbung angeschaut, aber bei Vererbung geht der Bezug verloren, d.h wenn ich Kurbelwelle als Basisklasse für Motor, Motor als Basisklasse für Abntriebsstrang usw. nehme, kann ich zwar mit Opel.printGewicht() das Attribut Gewicht ausgeben, nur fehlt dem dann jede offensichtliche Verknüpfung zur Kurbelwelle, außerdem dürfte ich die Methode printGewicht in keiner anderen Klasse verwenden.
Außenbüro Berlin:
Mitarbeiter:
Harald E.
Gerd F.
Geschäftsführer:
Albert S.
Für ein paar prinzipielle Tipps wäre ich sehr dankbar. Dürfen gerne auch Literaturhinweise u.ä. sein.
Grüße
TheBen