schule:objekt-orientierte_programmierung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
schule:objekt-orientierte_programmierung [2016-07-12 08:16] – [Klassendiagramm für Python] marco.bakera | schule:objekt-orientierte_programmierung [2019-12-24 13:29] (aktuell) – Klassendiagramm ausgelagert marco.bakera | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
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. | 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 ===== | ===== Ein Beispiel: Max und Moni ===== | ||
Zeile 41: | Zeile 48: | ||
===== Klassendiagramme ===== | ===== Klassendiagramme ===== | ||
- | Gleichartige Objekte haben Eigenschaften (Attribute) gemeinsam. Diese Gemeinsamkeiten werden in Klassen zusammengefasst. Zusätzlich haben Klassen | + | → [[Klassendiagramm]] |
- | + | ||
- | ==== 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 '' | + | |
===== Sequenzdiagramme ===== | ===== Sequenzdiagramme ===== | ||
- | [[wpde> | ||
- | {{: | + | → [[Sequenzdiagramm]] |
- | 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, | ||
- | * 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 [[https:// | ||
===== Aktivitätsdiagramme ===== | ===== Aktivitätsdiagramme ===== | ||
- | {{: | ||
- | Das [[wpde>Aktivitätsdiagramm]] | + | → [[Aktivitätsdiagramm]] |
- | Programm-Ablauf-Plan eine Funktionalität bzw. Aktivität in einem Programm. Einzelne // | + | |
- | Details stehen in [[https:// | + | ===== Links ===== |
- | ===== Links ===== | ||
- | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[http:// | * [[http:// |
schule/objekt-orientierte_programmierung.1468304177.txt.gz · Zuletzt geändert: 2017-04-19 08:39 (Externe Bearbeitung)