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>