Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:objekt-orientierte_programmierung

Objekt-Orientierte Programmierung (OOP)

Bei der Objekt-Orientierten Programmierung (kurz OOP) wird das Programm in viele kleine Objekte zerlegt, die sich über Nachrichten miteinander unterhalten. Wie ein Objekte aussieht, wird in seinem Bauplan beschrieben. Diesen Bauplan nennt man Klasse. Er beinhaltet die Attribute und die Methoden. Alle Objekte haben diese Attribute und Methoden.

Objekt-orientiere Software kann mit Hilfe von UML-Diagramme beschrieben (modelliert) werden. Es gibt insgesamt 14 Diagramme für unterschiedliche Anwendungsgebiete. Am wichtigsten sind die folgenden Diagramme:

  • Verhalten (Behavior Diagrams): Use Case Diagram, Activity Diagram, Statechart Diagram, Sequence Diagram, ( selten Timing Diagram)
  • Struktur (Structural Diagrams): Class Diagram, Package Diagram, (selten Object Diagram)

Einige dieser Diagramme werden in den folgenden Abschnitten beschrieben.

Ein Beispiel: Max und Moni

Es gibt viele Menschen auf der Welt: z.B. Max, 17 Jahre alt und seine Freundin Moni, 18 Jahre alt. Max und Moni unterscheiden sich durch viele Dinge. Aber beide haben einen Namen und ein Alter. Für den Namen würden wir als Datentyp eine Zeichenkette (englisch string), für das Alter eine ganze Zahl (englisch integer) wählen. Da Max und Moni Menschen sind, können sie natürlich auch etwas machen. Beide können z.B. laufen und essen – und natürlich noch viel mehr.

So sehen die beiden Objekte Max und Moni aus, wenn wir sie in einen Computer stecken würden.

max: Mensch
name: „Max“
alter:17
laufen()
essen()
moni:Mensch
name: „Moni“
alter:18
laufen()
essen()

Wie wir sehen, haben Max und Moni viele Gemeinsamkeiten. Diese Gemeinsamkeiten wollen wir nun in einem Bauplan - einer Klasse - zusammenfassen. Der Bauplan für Menschen wie Max oder Moni sieht also wie folgt aus:

Mensch
name: string
alter:integer
laufen()
essen()

Objektdiagramme

UML-Objektdiagramme stellen Objekte und ihren Zustand zu einem bestimmten Zeitpunkt während der Ausführung des Programms dar.

Das Verfahren von Abbott beschreibt, wie man aus einer Problemstellung die notwendigen Objekte erhält.

Aufbau und Zweck

  • Objektdiagramme stellen die Objekte eines Programms zu einem bestimmten Zeitpunkt der Programmausführung dar.
  • Name und Typ des Objektes werden an den Kopf eines Kastens geschrieben und unterstrichen.
  • Attribute und deren Werte werden darunter angegeben.
  • Im Gegensatz zum Klassendiagramm werden keine Methoden eingetragen.
  • Beziehungen zwischen den Objekten können eingetragen werden.

Klassendiagramme

Häufig stellt man fest, dass es Objekte gibt, die sich in ihren Eigenschaften oder Verhalten (Attributen oder Methoden) ähneln. Diese Gemeinsamkeiten werden in Klassen zusammengefasst. Zusätzlich haben Klassen Methoden, die aufgerufen werden können. Alle Objekte einer Klasse haben den gleichen Aufbau und verhalten sich ähnlich. Man kann sie übersichtlich in Klassendiagrammen darstellen.

Aufbau und Zweck

  • Warum? Um Übersicht über ein komplexes Programm zu erhalten.
  • Für jede Klasse wird ein Kasten gezeichnet.
  • Der Kasten hat drei Bereiche:
    1. oben steht der Klassenname
    2. in der Mitte stehen die Attribute
    3. unten stehen die Methoden
  • Rückgabewerte von Methoden und Datentypen von Attributen und Parametern stehen am Ende und sind durch einen Doppelpunkt getrennt.
  • Sichtbarkeiten public/private/protected werden durch +/-/# abgekürzt.
  • Beziehungen zwischen Klassen lassen sich darstellen: „besteht aus“, „erbt von“

Klassen in C# und Python

Klassen werden in C# mit dem Schlüsselwort class beschrieben. Attribute werden zu Beginn gelistet und haben einen Typ gefolgt von einem Namen. Methoden haben einen Namen (häufig ein Verb), ggf. Parameter und einen Rückgabewert (void, falls es keinen gibt).

class Person
{
  string name;
  int alter;
 
  public string erfrageName()
  {
    return name;
  }
 
  public int erfrageAlter()
  {
    return alter;
  }
 
  public void alterFestlegen(int neuesAlter)
  {
    alter = neuesAlter;
  }
 
  public void laufen()
  {
    // ...
  }
  public void essen(Nahrung nahrungsMittel)
  {
    nahrungsmittel.aufessen();
  }
}

Klassen werden in Python mit dem Schlüsselwort class beschrieben. Attribute werden im Konstruktor __init__(self) mit self an die erzeugte Instanz gebunden. Methoden haben einen Namen (häufig ein Verb), ggf. Parameter und ggf. einen Rückgabewert.

class Person:
 
    def __init__(self):
        self.name = ""
        self.alter = 0
 
    def erfrage_Name(self):
        return self.name
 
    def erfrage_Alter():
        return self.alter
 
    def alter_Festlegen(self, neues_Alter):
        self.alter = neues_Alter
 
    def laufen():
        # ...
        pass
 
    def essen(self, nahrungsMittel):
        nahrungsmittel.aufessen()

Kapitel 8: Objektorientierte Programmierung in dem Buch Raspberry Pi programmieren mit Python beschreibt, wie die Objekt-Orientierte Programmierung in Python realisiert wurde.

Klassendiagramme in Visual Studio

Visual Studio unterstützt den Entwickler, da es Klassendiagramme nahtlos in die Entwicklungsumgebung integriert.

Klassendiagramme für Python

Mit dem Programm pyreverse können Klassendiagramm aus Python-Quelltext automatisch erstellt werden. Es ist Bestandteil des größeren Paketes Pylint, das den Quelltext analysieren und auf Fehler hinweisen kann.

Ein Klassendiagramm wird mit dem folgenden Aufruf erstellt

pyreverse -o png -f ALL quelltext.py

Die Option -o gibt das Ausgabeformat und -f einen Filter an (ALL zeigt alle Zugriffsebenen: private, public und protected). Leider ermittelt das Programm keine Rückgabewerte und zeigt auch keine Parameter von Methoden an.

Klassendiagramme in IHK-Prüfungen

Klassendiagramme kommen häufig in IHK-Prüfungen vor. So z.B. in 2015, Winter, Handlungsschritt 2.

Sequenzdiagramme

Sequenzdiagramme können einen konkreten Ablauf in einem Programm darstellen.

Für ein konkretes Beispiel sieht es folgendermaßen aus.

  • Sie dienen z. B. der Dokumentation komplexer Abläufe, an denen viele Objekte beteiligt sind
  • Jedes Objekt erhält eine eigene Lebenslinie, die von oben nach unten verläuft.
  • Name und Typ des Objektes – getrennt durch einen Doppelpunkt – werden an den Kopf der Lebenslinie geschrieben. Ist der Name nicht relevant, kann er entfallen.
  • Pfeile zu den Objekten beschreiben Methoden, die auf diesen Objekten aufgerufen werden. Die Pfeilspitze zeigt auf das Objekt, zu dem die Methode gehört.

Unter websequencediagrams.com lassen sich Sequenzdiagramme in einem Editor im Browser erstellen.

Aktivitätsdiagramme

cc: von Wikipedia-Nutzer Gubaer.

Das Aktivitätsdiagramm beschreibt wie ein Struktogramm oder Programm-Ablauf-Plan eine Funktionalität bzw. Aktivität in einem Programm. Einzelne Aktionen werden durch abgerundete Kästen dargestellt und mit Pfeilen verbunden. Verzweigungen werden durch eine Raute (◊) dargestellt. Bedingungen für den weiteren Verlauf des Programms werden in eckigen Klammern an die ausgehenden Kanten notiert. Objekte, die von den Aktionen erzeugt oder konsumiert werden, sind als Kästen ohne abgerundete Ecken dargestellt.

Details stehen in UML Pocket Reference (Acitivity Diagrams).

schule/objekt-orientierte_programmierung.txt · Zuletzt geändert: 19.04.2017 08:39 (Externe Bearbeitung)