Gängige Dateiformate
Programmierrichtlinien
Wie schlagen sich die Script- und Programmiersprachen im Vergleich?
C#
JavaScript & TypeScript (mit node.js)
Welche Entwicklungsumgebung (IDE) ist die Beste?

Objektorientierte Programmierung

Objektorientierte Programmierung (oft abgekürzt als OOP) ist ein Ansatz, um Software zu schreiben, der sich an der realen Welt orientiert. Das Grundprinzip ist einfach: Wir modellieren die Welt in Form von Objekten, die miteinander interagieren, um Aufgaben zu lösen.

Wenn du zum Beispiel über ein Auto nachdenkst, kannst du es in der Programmierung als ein Objekt darstellen. Dieses Auto hat Eigenschaften wie Farbe, Marke und Geschwindigkeit (sogenannte Attribute) und es kann Dinge tun wie fahren oder bremsen (sogenannte Methoden).


Die wichtigsten Begriffe der OOP

Lass uns die wichtigsten Konzepte der objektorientierten Programmierung Schritt für Schritt anschauen:

  1. Klasse:
    • Eine Klasse ist wie eine „Blaupause“ oder ein Bauplan. Sie definiert, wie ein bestimmtes Objekt aussehen soll und was es tun kann.
    • Beispiel: Eine Klasse „Auto“ beschreibt Eigenschaften (z. B. Farbe) und Fähigkeiten (z. B. fahren).
  2. Objekt:
    • Ein Objekt ist die fertige Version der Klasse – es wird anhand der Klasse erstellt (das nennt man auch Instanziierung).
    • Beispiel: Ein bestimmtes Auto in der Farbe Rot ist ein Objekt der Klasse „Auto“.
  3. Attribute:
    • Das sind die Eigenschaften eines Objekts.
    • Beispiel: Die Farbe eines Autos, die Marke und die aktuelle Geschwindigkeit.
  4. Methoden:
    • Das sind die Aktionen, die ein Objekt ausführen kann.
    • Beispiel: Ein Auto kann „starten“, „fahren“ oder „bremsen“.
  5. Vererbung:
    • Mit Vererbung kann eine Klasse die Eigenschaften und Methoden einer anderen Klasse übernehmen.
    • Beispiel: Eine Klasse „Elektroauto“ erbt von der Klasse „Auto“ und fügt neue Eigenschaften hinzu, z. B. „Batteriekapazität“.
  6. Kapselung:
    • Kapselung bedeutet, dass die Details eines Objekts (z. B. seine Attribute) „versteckt“ werden, sodass man nur mit bestimmten Methoden darauf zugreifen kann.
    • Beispiel: Du kannst die aktuelle Geschwindigkeit eines Autos nicht direkt ändern, sondern musst die Methode „beschleunigen()“ nutzen.
  7. Polymorphismus:
    • Der Begriff bedeutet „Vielgestaltigkeit“. Verschiedene Klassen können dieselbe Methode nutzen, aber sie verhalten sich unterschiedlich.
    • Beispiel: Ein Auto und ein Fahrrad haben beide die Methode „fahren()“, aber sie funktioniert unterschiedlich.

Vorteile der OOP

  • Modularität: Du kannst deinen Code in kleine, eigenständige Teile (Klassen) zerlegen, die leichter zu verstehen und zu warten sind.
  • Wiederverwendbarkeit: Dank Vererbung kannst du Teile deines Codes wiederverwenden, statt alles neu zu schreiben.
  • Flexibilität: Änderungen im Code können leichter umgesetzt werden, da Objekte meist voneinander unabhängig sind.
  • Lesbarkeit: Der Code wird strukturierter und einfacher zu verstehen.

Sprachen, die objektorientiert arbeiten

Einige Programmiersprachen unterstützen nur das objektorientierte Paradigma. Beispiele sind:

  1. Smalltalk: Eine der ersten rein objektorientierten Sprachen.
  2. Ruby: Eine beliebte Sprache, die vollständig objektorientiert ist.
  3. Eiffel: Diese Sprache bietet starke Unterstützung für OOP.
  4. Java (teils): Häufig wird gesagt, dass Java vollständig OOP ist, obwohl es primitive Typen wie int gibt, die nicht OOP-typisch sind.

Viele andere Sprachen, darunter Python, unterstützen sowohl objektorientierte als auch andere Programmierstile.


Objektorientierte Programmierung in Python

Python ist multiparadigmatisch (d. h., es unterstützt verschiedene Ansätze wie prozedurale, funktionale und objektorientierte Programmierung). Hier sind ein paar Beispiele, wie objektorientierte Programmierung in Python funktioniert.


Beispiel 1: Ein Auto modellieren

# Definition der Klasse Auto
class Auto:
def __init__(self, farbe, marke):
self.farbe = farbe
self.marke = marke

def fahren(self):
print(f"Das {self.farbe}e {self.marke} fährt!")


# Erstellen von Objekten (Instanziierung)
auto1 = Auto("rote", "BMW")
auto2 = Auto("blaue", "Audi")

# Methoden von Objekten aufrufen
auto1.fahren()
auto2.fahren()

Erklärung:

  • Mit class Auto wird eine Klasse definiert.
  • __init__ ist der Konstruktor. Es wird aufgerufen, sobald ein Objekt erstellt wird.
  • auto1 und auto2 sind Objekte der Klasse „Auto“. Sie haben unterschiedliche Farben und Marken.

Beispiel 2: Tiere mit Vererbung

# Basisklasse
class Tier:
def __init__(self, name):
self.name = name

def sprechen(self):
print(f"{self.name} macht ein Geräusch.")


# Abgeleitete Klassen
class Hund(Tier):
def sprechen(self):
print(f"{self.name} bellt.")


class Katze(Tier):
def sprechen(self):
print(f"{self.name} miaut.")


# Objekte erstellen
hund = Hund("Bello")
katze = Katze("Mimi")

# Methoden aufrufen
hund.sprechen()
katze.sprechen()

Erklärung:

  • Die Klasse Hund und Katze erben von der Klasse Tier.
  • Beide überschreiben die Methode sprechen(), um spezifische Geräusche zu definieren.

Beispiel 3: Daten verstecken (Kapselung)

class Konto:
def __init__(self, inhaber, kontostand):
self.inhaber = inhaber
self.__kontostand = kontostand # Doppelt unterstrichen = "privates" Attribut

def einzahlen(self, betrag):
self.__kontostand += betrag
print(f"{betrag}€ wurden eingezahlt. Neuer Kontostand: {self.__kontostand}€")

def abrufen_kontostand(self):
print(f"Der Kontostand von {self.inhaber} beträgt {self.__kontostand}€.")


# Objekt erstellen
konto = Konto("Max", 100)

# Methoden verwenden
konto.abrufen_kontostand()
konto.einzahlen(50)

Erklärung:

  • Das Attribut __kontostand wird durch doppelten Unterstrich „privat“ gemacht, sodass darauf nur über Methoden zugegriffen werden kann.
  • Das schützt die Daten vor direkter Manipulation.

Zusammenfassung

Die objektorientierte Programmierung ist ein mächtiges Werkzeug in der Welt der Softwareentwicklung. Sie ermöglicht es uns, Programme zu schreiben, die sich an der realen Welt orientieren – mit Objekten, Klassen und nachvollziehbaren Beziehungen.

Durch die Konzepte wie Vererbung, Kapselung und Polymorphismus wird der Code modular, einfacher zu warten und wiederzuverwenden. Python ist ein wunderbarer Einstieg in die OOP, da es einfach zu erlernen ist und mächtige Tools bietet.

Solche einfach strukturierten Programme, wie die oben gezeigten Beispiele, sind nur der Anfang. OOP wird in größeren Projekten viel wertvoller, wo viele verschiedene Objekte zusammenarbeiten, um komplexe Probleme zu lösen!