Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:klassendiagramm

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:klassendiagramm [2019-12-24 13:32] marco.bakeraschule:klassendiagramm [2024-01-03 10:06] (aktuell) – [Klassen in Python] pintman
Zeile 1: Zeile 1:
 ====== UML-Klassendiagramm ====== ====== UML-Klassendiagramm ======
  
-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. Neben Eigenschaften bzw. Attributen habe Klassen [[Methoden]], die aufgerufen werden können und ihr Verhalten bestimmen. Alle Objekte einer Klasse haben den gleichen Aufbau und verhalten sich ähnlich. Man kann sie übersichtlich in [[wpde>Klassendiagramm|Klassendiagrammen]] darstellen.+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. Neben Eigenschaften bzw. Attributen habe Klassen Methoden, die aufgerufen werden können und ihr Verhalten bestimmen. Alle Objekte einer Klasse haben den gleichen Aufbau und verhalten sich ähnlich. Man kann sie übersichtlich in [[wpde>Klassendiagramm|Klassendiagrammen]] darstellen.
  
 +Details stehen in //UML 2.0 Pocket-Reference// im Abschnitt »Class Diagrams« und in der //UML-Notationsübersicht//.
 ===== Aufbau und Zweck ===== ===== Aufbau und Zweck =====
  
-{{:schule:prog:klassendiagramm_beispiel.png|}}+|  Person 
 +| - name: string \\ - alter: int | 
 +| + erfrage_Name(): string \\ + erfrage_Alter(): int \\ + alter_Festlegen(neuesAlter: int): void \\ + laufen()void \\ + essen(nahrungsMittelNahrung)void |
  
   * Warum? Um Übersicht über ein komplexes Programm zu erhalten.   * Warum? Um Übersicht über ein komplexes Programm zu erhalten.
Zeile 17: Zeile 20:
   * Beziehungen zwischen Klassen lassen sich darstellen: "besteht aus", "erbt von"   * Beziehungen zwischen Klassen lassen sich darstellen: "besteht aus", "erbt von"
  
-===== Klassen in C# und Python =====+===== Umsetzung in Quelltext =====
  
-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).+Programmiersprachen realisieren Klassen auf unterschiedliche Arten, die sich häufig jedoch in weiten Teilen ähneln.
  
-<code csharp> +==== Klassen in Python ====
-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.+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. [[edu:Methoden]] haben einen Namen (häufig ein Verb), ggf. Parameter und ggf. einen Rückgabewert
 + 
 +**Achtung:** Jede Methode hat als ersten Parameter das Attribut ''self''. Beim Aufruf der Methode wird dieser jedoch nicht angegeben.
  
 <code python> <code python>
Zeile 65: Zeile 40:
         return self.name         return self.name
  
-    def erfrage_Alter():+    def erfrage_Alter(self):
         return self.alter         return self.alter
  
-    def alter_Festlegen(self, neues_Alter):+    def alter_festlegen(self, neues_Alter):
         self.alter = neues_Alter         self.alter = neues_Alter
  
Zeile 77: Zeile 52:
     def essen(self, nahrungsMittel):     def essen(self, nahrungsMittel):
         nahrungsmittel.aufessen()         nahrungsmittel.aufessen()
 +        
 +        
 +# Sobald die Klasse deklariert ist, können Objekte erzeugt
 +# und die Methoden und Attribute verwendet werden.
 +
 +peter = Person()
 +peter.name = "Peter"
 +print(peter.erfrage_Name())  # "Peter"
 +peter.alter_festlegen(18)
 +print(peter.erfrage_Alter()) # 18
 +
 </code> </code>
 +
  
 //Kapitel 8: Objektorientierte Programmierung// in dem Buch //Raspberry Pi programmieren mit Python// beschreibt, wie die Objekt-Orientierte Programmierung in [[Python]] realisiert wurde.  //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 =====+Weitere Details stehen in //Python Crashkurs// Kapitel 9: //Classes/Klassen//.
  
-Visual Studio unterstützt den Entwickler, da es Klassendiagramme nahtlos in die Entwicklungsumgebung integriert.+In Python können auch Typen mit sogenannten [[https://sw101.tbs1.de/typen/|type hints]] angegeben werden. 
 + 
 +==== Klassen in C# ==== 
 + 
 +→ [[Klassen in C-Sharp]]
  
-<html> 
-<iframe src="//player.vimeo.com/video/22473499" width="400" height="290" frameborder="0"></iframe> 
-</html> 
  
  
 ===== Klassendiagramme für Python ===== ===== Klassendiagramme für Python =====
 +
 +Verschiedene IDEs wie etwa [[python#entwicklungsumgebungen_ides|PyCharm]] ermöglichen es, Klassendiagramme direkt aus dem Quelltext generieren zu lassen. Für Dokumentationszwecke ist das sinnvoll, für die Planung hingegen nicht, da zu diesem Zeitpunkt ja noch kein Quelltext existiert.
 +
 +**Achtung!** Klassendiagramme, die von IDEs generiert werden, sind häufig nicht standardkonform, sondern bilden spezifische Besonderheiten der Programmiersprache ab.
  
 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.  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. 
Zeile 103: Zeile 95:
  
 Klassendiagramme kommen häufig in IHK-Prüfungen vor. So z.B. in //2015, Winter, Handlungsschritt 2//. Klassendiagramme kommen häufig in IHK-Prüfungen vor. So z.B. in //2015, Winter, Handlungsschritt 2//.
 +
  
schule/klassendiagramm.txt · Zuletzt geändert: 2024-01-03 10:06 von pintman