Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:objekt-orientierte_programmierung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
schule:objekt-orientierte_programmierung [12.07.2016 08:16]
Marco Bakera [Klassendiagramm für Python]
schule:objekt-orientierte_programmierung [24.12.2019 13:29] (aktuell)
Marco Bakera Klassendiagramm ausgelagert
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): ​ Class Diagram, Package Diagram, (selten Object Diagram)
 +
 +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 ​[[Methoden]], die aufgerufen werden können. Alle Objekte einer Klasse haben den gleichen Aufbau und verhalten sich ähnlich. Man kann sie übersichtlich in [[wpde>Klassendiagramm|Klassendiagrammen]] darstellen. +→ [[Klassendiagramm]]
- +
-==== Aufbau und Zweck ==== +
- +
-{{:​schule:​prog:​klassendiagramm_beispiel.png|}} +
- +
-  * 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/​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). +
- +
-<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();​ +
-  } +
-+
-</​code>​ +
- +
-Klassen werden in Python mit dem Schlüsselwort ''​class''​ beschrieben. Attribute werden im Konstruktor ''<​nowiki>​__init__(self)</​nowiki>''​ mit ''​self''​ an die erzeugte Instanz gebunden. [[Methoden]] haben einen Namen (häufig ein Verb), ggf. Parameter und einen ggf. Rückgabewert. +
- +
-<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,​ neues_Alter):​ +
-        self.alter = neues_Alter +
- +
-    def laufen(): +
-        # ... +
-        pass +
- +
-    def essen(self, nahrungsMittel):​ +
-        nahrungsmittel.aufessen() +
-</​code>​ +
- +
-//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. +
- +
-<​html>​ +
-<iframe src="//​player.vimeo.com/​video/​22473499"​ width="​400"​ height="​290"​ frameborder="​0"></​iframe>​ +
-</​html>​ +
- +
- +
-==== Klassendiagramme für Python ==== +
- +
-Mit dem Programm ''​pyreverse''​ können Klassendiagramm aus Python-Quelltext automatisch erstellt werden. Es ist Bestandteil des größeren Paketes [[https://​www.pylint.org/​|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.+
  
 ===== Sequenzdiagramme ===== ===== Sequenzdiagramme =====
-[[wpde>​Sequenzdiagramm|Sequenzdiagramme]] können einen konkreten Ablauf in einem Programm darstellen. 
  
-{{:​schule:​prog:​sequenzdiagramm-allgemein.jpg?​nolink|}}+→ [[Sequenzdiagramm]]
  
-Für ein konkretes Beispiel sieht es folgendermaßen aus. 
  
-{{:​schule:​prog:​sequenzdiagramm_beispiel.png?​nolink|}} 
- 
-  * 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 [[https://​www.websequencediagrams.com/​|websequencediagrams.com]] lassen sich Sequenzdiagramme in einem Editor im Browser erstellen. 
 ===== Aktivitätsdiagramme ===== ===== Aktivitätsdiagramme =====
-{{:​schule:​prog:​uml-activity-beispiel2.png?​nolink|cc:​ von Wikipedia-Nutzer Gubaer. }} 
  
-Das [[wpde>Aktivitätsdiagramm]] ​beschreibt wie ein Struktogramm oder +→ [[Aktivitätsdiagramm]]
-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 [[https://​tbs1.de/​owncloud/​public.php?​service=files&t=2247927edec78ea54ca13aeb8f12823b|UML Pocket Reference (Acitivity Diagrams)]].+===== Links =====
  
-===== Links ===== 
-  * [[https://​tbs1.de/​owncloud/​public.php?​service=files&​t=09e171fc725b1b99d42ac367247840c4|UML-Diagramme (Übersicht)]] 
   * [[https://​dzone.com/​refcardz/​getting-started-uml|UML Reference Card]] - Übersicht der wichtigsten Elemente der UML-Notation.   * [[https://​dzone.com/​refcardz/​getting-started-uml|UML Reference Card]] - Übersicht der wichtigsten Elemente der UML-Notation.
   * [[http://​oszhdl.be.schule.de/​gymnasium/​faecher/​informatik/​oop/​index.htm|Informationen zur OOP]] des Oberstufenzentrum Handel 1.   * [[http://​oszhdl.be.schule.de/​gymnasium/​faecher/​informatik/​oop/​index.htm|Informationen zur OOP]] des Oberstufenzentrum Handel 1.
schule/objekt-orientierte_programmierung.1468304177.txt.gz · Zuletzt geändert: 19.04.2017 08:39 (Externe Bearbeitung)