Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:objekt-orientierte_programmierung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
schule:objekt-orientierte_programmierung [2019-12-21 13:51] – owncloud link enternt. marco.bakeraschule:objekt-orientierte_programmierung [2019-12-24 13:29] (aktuell) – Klassendiagramm ausgelagert marco.bakera
Zeile 48: Zeile 48:
 ===== Klassendiagramme ===== ===== 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 [[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 ggf. einen 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. +
- +
-==== Klassendiagramme in IHK-Prüfungen ==== +
- +
-Klassendiagramme kommen häufig in IHK-Prüfungen vor. So z.B. in //2015, Winter, Handlungsschritt 2//.+
  
 ===== 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 
-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)//.+→ [[Aktivitätsdiagramm]]
  
 ===== Links ===== ===== Links =====
schule/objekt-orientierte_programmierung.1576932689.txt.gz · Zuletzt geändert: 2019-12-21 13:51 von marco.bakera