• Increase font size
  • Default font size
  • Decrease font size

Klassenkonzept am Beispiel

E-Mail Drucken PDF

Die Klasse Flugplatz stellt einen Namensraum (Objektbaukasten) dar, mit dem es möglich ist, Flugplätze zu generieren, die die Attribute und Methoden der Klasse besitzen. Aus Gründen der Übersicht wird die Klasse Flugplatz nur mit dem Attribut status initialisiert. Um auf dieses Attribut zuzugreifen, verfügt die Klasse über die Methoden schliessen und oeffnen, die in ihrer Funktion dem Wortlaut entsprechen. Für Flugzeuge ist es notwendig, zu erfahren, ob der Flugplatz nun zu oder auf ist. Aus diesem Fakt heraus ist es sinnvoll, zusätzlich die Methode get_status zur Verfügung zu stellen.

Die Klasse stellt sich nun wie folgt dar :

   01       class  flugplatz :
02 def __init__(self, status) : self.st = 1
03 def schliessen (self) : self.st = 0
04 def oeffnen (self) : self.st = 1
05 def get_status (self) : return self.st

Um nun Flugzeuge auf einem initialisierten Flugplatz landen zu lassen, ist es auch hier notwendig, eine Klasse Flugzeug zu generieren, um einzelne Flugzeuge (später Instanzen) bereitzustellen. Diese Flugzeuge haben als Attribut einen typ der mittels der Methoden set_typ und get_typ verändert und zurückgeliefert werden kann. Darüber hinaus verfügen sie überraschenderweise über die Fähigkeit zu starten, wenn die Erlaubnis (.. vom Flughafen) vorliegt.

Das Ganze sieht dann so aus.

01   class flugzeug:
02
03
def __init__(self, typ) : self.typ = typ
04          def set_typ (self,fz_typ) : self.typ      = fz_typ
05 def get_typ (self,fz_typ) : return fz_typ
06          def starten (self, erlaubnis) :  
07 if erlaubnis == 1 : print "gestartet "
08 elif erlaubnis == 0 : print "keine Freigabe "

Ein dritte Klasse Amt dient der externen Öffnung und Schließung des Flugplatzes. Der Aufbau ist hier entsprechend. Ein Unterschied besteht allerdings in der Tatsache, dass hier der zu schließende bzw. zu öffnende Flugplatz zu übergeben ist. Da Python eine Sprache ist, in der Daten, so auch Objekte, referenziert werden, ist es möglich, eine Referenz auf den - in der konkreten Testumgebung - zu initialisierenden Flugplatz zu übergeben.

01   class amt :
02
03
def __init__(self, ort): self.ort = ort
04          def fh_schliessen (self, flugplatz):  
05                     flugplatz.schliessen()
06 print "Flughafen wurde geschlossen"
...

In der Testumgebung werden nun die Klassen initialisiert, es werden Namensräume geschaffen. Nachdem der geschaffene Flugplatz vom Amt geschlossen wurde, können keine Flugzeuge mehr starten.

01   if __name__=="__main__":
02
03
airbus1 = flugzeug ("AIRBUS")
04 boing1 = flugzeug ("BOING" )
05
06 flughafen1 = flugplatz (1)
07 stadt1 = amt("Stadt1")
08 stadt1.fh_schliessen (flughafen1)
09 flughafenstatus2 = flughafen1.get_status()
10 airbus1.starten (flughafenstatus2)

Die einzelnen Klassen sind beliebig erweiterbar. Die dargestellten Grundprinzipien bleiben erhalten. Die vorgeschlagene Implementierung ist teilweise etwas spröde und stellt einen möglichen Ansatz dar. Eine mögliche Weiterführung der Implementierung wäre die Verteilung auf mehrere Dateien und eine Spezifikation für die einzelnen Methoden, um eine arbeitsteilige Arbeitsweise zu ermöglichen.

[SOURCE]

Aktualisiert ( Mittwoch, 04. Februar 2009 um 18:19 Uhr )  

(c) g-ymnasium.de 2006 - 2013 + Administrator