EGE/OOP

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
== Klassen und deren Instanzen ==
<code id="5c5af592f2187">class Bierflasche: # Namen von Klassen sollten groß geschrieben werden
   def __init__(self, marke_neu):
      self.marke = marke_neu
      self.istLeer = False
 
   def trinkeFlasche(self):
      self.istLeer = True
 
   def zustand(self):
      fuellstand = ""
      if self.istLeer:
         fuellstand = "leere"
      else:
         fuellstand = "volle"
      return "eine " + fuellstand + " Flasche " + self.marke
 
# Instanzen (konkrete Objekte) erstellen
fiedler = Bierflasche("Fiedler")
warsteiner = Bierflasche("Warsteiner")
 
# auf eine Instanz zugreifen
print(fiedler.zustand())
fiedler.trinkeFlasche()
print(fiedler.zustand())</code>

Die Methode zustand() könnte auch in die magische Methode __str__() umgeschrieben werden, damit man nur noch schreiben muss: print(fiedler). So hatten wir das auch bei den Brüchen gemacht: print(bruch1) ruft die Methode bruch1.__str__() auf.


== Kapselung ==
<code id="5c5af592f21f9">class Klasse1:
    def __init__(self):
        self.__V1 = 0
        self.__V2 = 0
        self.V3 = 0
     
    def __UP1(self):
        # mach etwas
        pass
     
    def UP2(self):
        self.__UP1()
             
    def UF3(self,x):
        return x+self.__V1
 
 
Objekt = Klasse1()
print(Objekt.UF3(123))</code>
Zwei Unterstriche setzen ein Datenfeld privat und ist somit von außen nicht mehr änderbar.

== Vererbung ==
<code id="5c5af592f225c">class Person:
    def __init__(self, vorname, nachname, geburtsdatum):
        self.__vorname = vorname
        self.__nachname = nachname
        self.__geburtsdatum = geburtsdatum
         
    def __str__(self):
        ret = self._vorname + " " + self._nachname
        ret += ", " + self._geburtsdatum
        return ret
 
    def getName(self):
        return self._nachname + ", " + self._vorname
         
class Angestellter(Person):
    def __init__(self, vorname, nachname, geburtsdatum, personalnummer):
        Person.__init__(self, vorname, nachname, geburtsdatum) # Nutzung der Elternklasse
        self.__personalnummer = personalnummer
         
    def __str__(self):
        return Person.__str__(self) + " " + self.__personalnummer
     
 
x = Angestellter("Homer", "Simpson", "09.08.1969", "007")
print(x)
print(x.getName()) # Methode wurde von Elternklasse Person geerbt.
</code>