Abstecher objektorientiertes programmieren in Python

Inspiriert durch das Kapitel objektorientiertes Programmieren in Python, habe ich es gewagt, einen Abstecher in diese Richtung zu machen.

Vorweg: Es ist nicht ganz einfach. 🙂 Für mich -als nicht programmierer- ist einiges nicht „einfach mal so“ nachvollziehbar.

Grundlagen

In der oo-P (objektorientierten Programmierung) gibt es Klassen und Methoden und Attribute. Das ist zumindest das, was ich bislang „gelernt“ habe.

Nehmen wir folgendes Beispiel:

class artikel: # Es wird die Klasse artikel definiert
    def __init__(self):
        self.lagerstand = 0 # Diese Klasse bekommt das Attribut lagerstand = 0

    def erfassen (self, menge): # Es wird die Methode "erfassen" definiert
        self.lagerstand = self.lagerstand + menge

    def verkaufen(self, menge): # Es wird die Methode "verkaufen" definiert
        self.lagerstand = self.lagerstand - menge
        print 'Lagerstand: ', self.lagerstand

notebook = artikel() # Erzeugt eine sog. Instanz der Klasse artikel
desktop = artikel () # Erzeugt eine weitere sog. Instanz der Klasse artikel

Somit haben wir nun also die Klasse artikel. In der Klasse artikel, sind die Methoden erfassen und verkaufen definiert. wobei diese Methoden genau eine Variable entgegen nehmen, nämlich die menge der verkauften bzw. der eingekauften Artikel.

Starten wir nun das Programm und geben in der Python Shell folgendes ein:

notebook.erfassen(5)

nimmt die Instanz notebook der Klasse Artikel als den Wert 5 als Variable menge entgegen und rechnet dann lt. Programm self.lagerstand = self.lagerstand + menge aus.

Da Lagerstand = 0 haben wir dann also den lagerstand 5.

Die Eingabe von

notebook.lagerstand

in der Python-Shell ruft die Variable lagerstand der Klasseninstanz notebook auf. Diese sollte jetzt auf 5 stehen.

desktop.lagerstand ist noch bei null, da wir ja mit der Instanz notebook gearbeitet haben.

Soweit, so gut… jetzt heißt es üben üben üben und vor allem verstehen 🙂

 

 

 

Python Grundkurs: Teil 2: Schleifen

Nein, kein Mittel zur Verzierung :-). Schleifen kommen immer dann zum Einsatz, wenn etwas x mal wiederholt werden soll, oder so lange wiederholt werden soll, bis ein gewisser Zustand erreicht worden, oder durch den User ausgelöst worden ist.

Unterschieden wird hier zwischen while und for. While kommt dann zum Zug, wenn man nicht weiß, wie oft die Schleife durchlaufen wird. (So lange bis der Anwender das Programm stoppt).

For hingegen ist in der Laufzeit (Schleifendurchläufe) limitiert. (Man weiß, dass die Schleife 5x durchlaufen soll):

 

Beispiele – for – Schleife

for i in range(1,11):
   x = raw_input('Wert eingeben: ')

Beispiel whileSchleife

x = "1"
while x != "":
   x = raw_input ('Eingabe :')

An obigem Beispiel sieht man nun den Unterschied. In der while Schleife hängt es vom Benutzer ab, wann er als Wert nichts eingibt (also nur Return drückt) und somit die while Bedingung nicht mehr erfüllt wird. Sie besagt, dass die Schleife so lange durchlaufen wird, so lange der Wert der Variablen x nicht „“ (also leer) ist.

Wir wissen also bei while nicht, wann der Anwender nichts mehr eingeben will!

Python Grundkurs: Teil 1.2: Grundlegende Operatoren

Variablen haben wir bereits kennen gelernt. Nun geht es darum, auch kurz einen Blick auf die grundlegenden Operatoren zu werfen. Hierbei gibt es vor allem bei = und == einen großen Unterschied!

Während folgender Code bedeutet, dass die Variable x den Wert 10 zugewiesen bekommt:

x = 10

bedeutet folgendes, dass x mit dem Wert 10 verglichen wird (sozusagen: Entspricht x dem Wert 10?)

x == 10

Gut einprägen!

Weitere Operatoren

  • + –
  • * /
  • < > >= <=
  • % (Modulooperator – zeigt den Rest einer Division)
  • or, and, not, in

Genauer betrachten möchte ich hier kurz den Modulooperator. Dieser gibt – wie bereits kurz angeschnitten, den Rest einer Division aus.

Das probieren wir gleich mal aus und tippen direkt in der Pythonshell folgendes ein:

10%3

Als Ausgabe erhalten wir 1. Warum? Weil 3 in 10 3x enthalten ist (3×3 = 9) Rest = 1. Modulo (also %) gibt immer den Rest einer Division aus.

 

 

1 2