schule:objekt-orientierte_programmierung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
schule:objekt-orientierte_programmierung [2016-07-12 08:11] – [Klassendiagramm für Python] marco.bakera | schule:objekt-orientierte_programmierung [2019-12-24 13:25] – [Sequenzdiagramme] ausgelagert marco.bakera | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Objekt-Orientierte Programmierung (OOP) ====== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Bei der Objekt-Orientierten [[Programmieren|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): | ||
+ | |||
+ | 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 // | ||
+ | |||
+ | So sehen die beiden Objekte Max und Moni aus, wenn wir sie in einen Computer stecken würden. | ||
+ | |||
+ | ^ __max: Mensch__ | ||
+ | | name: " | ||
+ | | laufen() \\ essen() | ||
+ | |||
+ | ^ __moni: | ||
+ | | name: " | ||
+ | | 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: | ||
+ | | laufen() \\ essen() | ||
+ | |||
+ | ===== Objektdiagramme ===== | ||
+ | [[wpde> | ||
+ | |||
+ | Das [[http:// | ||
+ | |||
+ | ==== 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]], | ||
+ | |||
+ | ==== 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: | ||
+ | - oben steht der Klassenname | ||
+ | - in der Mitte stehen die Attribute | ||
+ | - 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/ | ||
+ | * Beziehungen zwischen Klassen lassen sich darstellen: " | ||
+ | |||
+ | === Klassen in C# und Python === | ||
+ | Klassen werden in C# mit dem Schlüsselwort '' | ||
+ | |||
+ | <code csharp> | ||
+ | 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 '' | ||
+ | |||
+ | <code python> | ||
+ | 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, | ||
+ | self.alter = neues_Alter | ||
+ | |||
+ | def laufen(): | ||
+ | # ... | ||
+ | pass | ||
+ | |||
+ | def essen(self, nahrungsMittel): | ||
+ | nahrungsmittel.aufessen() | ||
+ | </ | ||
+ | |||
+ | //Kapitel 8: Objektorientierte Programmierung// | ||
+ | |||
+ | ==== Klassendiagramme in Visual Studio ==== | ||
+ | |||
+ | Visual Studio unterstützt den Entwickler, da es Klassendiagramme nahtlos in die Entwicklungsumgebung integriert. | ||
+ | |||
+ | < | ||
+ | <iframe src="// | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Klassendiagramme für Python ==== | ||
+ | |||
+ | Mit dem Programm '' | ||
+ | |||
+ | Ein Klassendiagramm wird mit dem folgenden Aufruf erstellt | ||
+ | |||
+ | pyreverse -o png -f ALL quelltext.py | ||
+ | | ||
+ | Die Option '' | ||
+ | |||
+ | ==== Klassendiagramme in IHK-Prüfungen ==== | ||
+ | |||
+ | Klassendiagramme kommen häufig in IHK-Prüfungen vor. So z.B. in //2015, Winter, Handlungsschritt 2//. | ||
+ | |||
+ | ===== Sequenzdiagramme ===== | ||
+ | |||
+ | → [[Sequenzdiagramm]] | ||
+ | |||
+ | |||
+ | ===== Aktivitätsdiagramme ===== | ||
+ | |||
+ | → [[Aktivitätsdiagramm]] | ||
+ | |||
+ | ===== Links ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * Werkzeuge zum Zeichnen von UML-Diagrammen sind: [[https:// | ||
+ | * [[http:// | ||
schule/objekt-orientierte_programmierung.txt · Zuletzt geändert: 2019-12-24 13:29 von marco.bakera