====== Objekt-Orientierte Programmierung (OOP) ====== {{:schule:prog:objekte_in_aktion.gif?nolink|}} 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 ===== 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 //string//), für das Alter eine ganze Zahl (englisch //integer//) wählen. Da Max und Moni Menschen sind, können sie natürlich auch etwas machen. Beide können z.B. laufen und essen -- und natürlich noch viel mehr. So sehen die beiden Objekte Max und Moni aus, wenn wir sie in einen Computer stecken würden. ^ __max: Mensch__ ^ | name: "Max"\\ alter:17 | | laufen() \\ essen() | ^ __moni:Mensch__ ^ | name: "Moni"\\ alter:18 | | 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:integer | | laufen() \\ essen() | ===== Objektdiagramme ===== [[wpde>Objektdiagramm|UML-Objektdiagramme]] stellen Objekte und ihren Zustand zu einem bestimmten Zeitpunkt während der Ausführung des Programms dar. Das [[http://ddi.uni-wuppertal.de/material/materialsammlung/oberstufe/allgemein/abbott.html|Verfahren von Abbott]] beschreibt, wie man aus einer Problemstellung die notwendigen Objekte erhält. ==== Aufbau und Zweck ==== {{:schule:prog:objektdiagramm_beispiel.png?direct|}} * 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 ===== → [[Klassendiagramm]] ===== Sequenzdiagramme ===== → [[Sequenzdiagramm]] ===== Aktivitätsdiagramme ===== → [[Aktivitätsdiagramm]] ===== Links ===== * [[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://wwwswt.informatik.uni-rostock.de/deutsch/Infothek/uml/kurs/index.php|Einführung in die objektorientierte Modellierung mit UML]] - Kurs der Uni Rostock. * Werkzeuge zum Zeichnen von UML-Diagrammen sind: [[https://www.draw.io/|draw.io (online)]], [[http://www.umlet.com/changes.htm|UMLet]] oder [[http://plantuml.com/|plantuml]] * [[http://www.clean-code-developer.de|Die Clean Code Developer Grade]] stellen auf einer Farbskala dar, wie gut du schon objektorientiert programmieren kannst.