22
Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren: hierarchische Programmorganisation, logische Programmeinheiten, zentrale Programmsteuerung. Ziel der strukturierten Programmierung ist es, Algorithmen so darzustellen, dass ihr Ablauf einfach zu erfassen und zu verändern ist. Objektorientierte Programmierung ist ein Denkmuster, bei dem Programme als Menge über Nachrichten kooperierenden Objekten organisiert werden und jedes Objekt Instanz einer Klasse ist. Die OOP greift die menschliche Denkweise auf, indem sie reale Objekte aus der Umwelt identifiziert und in ihrer Art beschreibt.

Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Embed Size (px)

Citation preview

Page 1: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Objektorientierte Programmierung (OOP)1. Strukturiert versus objektorientiert

Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren: hierarchische Programmorganisation, logische Programmeinheiten, zentrale Programmsteuerung. Ziel der strukturierten Programmierung ist es, Algorithmen so darzustellen, dass ihr Ablauf einfach zu erfassen und zu verändern ist.Objektorientierte Programmierung ist ein Denkmuster, bei dem Programme als Menge über Nachrichten kooperierenden Objekten organisiert werden und jedes Objekt Instanz einer Klasse ist. Die OOP greift die menschliche Denkweise auf, indem sie reale Objekte aus der Umwelt identifiziert und in ihrer Art beschreibt.

Page 2: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Objektorientierte Programmierung2. Grundbegriffe der OOP

Objekt, Klasse, InstanzUnter einem Objekt versteht man die Zusammenfassung (Kapselung) von Daten und zugehörigen Funktionalitäten. Objekte sind ganz allgemein Dinge, die im Programm beschrieben werden und eine logische Einheit von Eigenschaften, Methoden und Ereignissen bilden. Eine Klasse ist ein Bauplan, auf dessen Grundlage die entsprechenden Objekte zur Programmlaufzeit erzeugt werden.Beispiel:Typische Objekte einer betriebswirtschaftlichen Software sind Bestellungen, Aufträge, Artikel, Kunden, usw. Da in der künftigen Anwendung nicht nur eine Bestellung ausgeführt werden soll ist es sinnvoll festzulegen, wie eine Bestellung im Allgemeinen aussehen soll. Dies ist der erste Schritt bei der OOP. Das Aussehen aller vorkommender Objekte wird in Form eines Planes festgelegt. Diese Pläne nennt man dann Klassen. Eine Klasse ist der Bauplan für ein Objekt, in dem Eigenschaften (Merkmale, Daten) und Methoden (Fähigkeiten, Funktionen) definiert werden.

Page 3: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Objektorientierte Programmierung2. Grundbegriffe der OOP

In einer Klasse legt man fest, welche Eigenschaften das Objekt hat.Für eine Bestellung könnten das folgende Eigenschaften sein:•Bestellnummer•Bestellwert•Bestelldatum•Rabatt•….Außerdem sollen die Methoden der zukünftigen Objekte festgelegt werden.Für eine Bestellung könnte man folgende Methoden erwarten:•Bestellung ausdrucken•Rabatt ermitteln•…Bei einer Klasse handelt es sich nur um ein Konstrukt. Ein konkretes Objekt erhält man erst wenn man eine Instanz einer Klasse bildet. Bei jeder eingehenden Bestellung wird eine Instanz der Klasse Bestellung erzeugt. Während die Klasse die Eigenschaft Bestellnummer definiert, wird der konkrete Wert (11429,11430, …) erst beim Erzeugen des Objekts ( der Instanz) zugewiesen.

Page 4: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Objektorientierte Programmierung2. Grundbegriffe der OOP

Definition einer Klasse in UML (Unified Modeling Language)

Cbestellung

bestellnr: datebestelldatum: datebestellwert: realrabatt: realgesamtbestellwert: real

rabatt_berechnen()bestellwert_incl_rabatt()

Klassenname

Eigenschaften

Methoden

Page 5: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Objektorientierte Programmierung2. Grundbegriffe der OOP

Kapselung und WiederverwendbarkeitDurch die Kapselung von Klassen werden die internen Daten und einige verborgene Methoden geschützt, sie sind also von außen nicht zugänglich. Die Veränderung des Objekts kann nur über streng definierte öffentliche Methoden erfolgen. Die Eigenschaften und Methoden werden in zwei Kategorien eingeteilt. Die einen sind von außen sichtbar und können verändert werden; die anderen stehen dagegen nur innerhalb der Klasse zur Verfügung. Unter Kapselung versteht man, dass eine Klasse definierte Schnittstellen zur Außenwelt hat. Nicht alle Eigenschaften und Methoden sind von außen sicht - und nutzbar. Klassen ermöglichen die Wiederverwendbarkeit von Code. Nachdem eine Klasse geschrieben wurde, kann diese an verschiedenen Stellen innerhalb einer Applikation verwendet werden.Ändert sich etwas an der Rabattstaffelung der Lieferanten, muss dies nur in der Klasse cbestellung geändert werden. Die Änderung wird dann in allen Programmen wirksam, die mit Bestellungen arbeiten.

Page 6: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Objektorientierte Programmierung2. Grundbegriffe der OOP

Vererbung und PolymorphieKlassen können Eigenschaften und Methoden vererben. Dabei wird eine Vererbungshierarchie gebildet. Die Unterklassen erben alle Eigenschaften und Methoden ihrer Oberklasse. Unterklassen können zu den geerbten Eigenschaften neue hinzufügen oder Eigenschaften der Oberklasse verstecken, indem sie diese überschreiben. Wenn ein und dieselbe Methode für verschiedene Objekte verwendet wird nennt man dies Polymorphie (Vielgestaltigkeit).Das Kerngeschäft des Unternehmens ist auf die Bestellung von Rohstoffen und Baumaterialien ausgerichtet. Jetzt soll aber die Klasse cbestellung auch zur Beschaffung von Verbrauchsmaterial (Briefumschläge, Papier, Schreibmaterial,…) verwendet werden soll. Dazu müsste noch die Eigenschaft Kostenstelle hinzugefügt werden. Standartbestellungen benötigen aber keine Eigenschaft Kostenstelle. Eine ganz neue Klasse zu kreieren ist sicherlich auch nicht sinnvoll, da viele Eigenschaften und Methoden deckungsgleich mit der Klasse cbestellung sind. Es wird die Klasse cverbrauchsbestellung abgeleitet.

Page 7: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Objektorientierte Programmierung2. Grundbegriffe der OOP

Vererbung in UML Cbestellung

bestellnr: datebestelldatum: datebestellwert: realrabatt: realgesamtbestellwert: real

rabatt_berechnen()bestellwert_incl_rabatt()

Cverbrauchsbestellung

Kostenstelle : string

rabatt_berechnen()

Page 8: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual Studio

Erster ÜberblickÜber Datei -> Neues Projekt öffnet sich der Startdialog "Neues Projekt". Unter den dort aufgeführten Vorlagen für Visual C# Projekte wählen wir die WindowsForms-Anwendung.Es kann sich nun folgender Anblick bieten, fehlende Fenster können über Ansicht zusätzlich ausgewählt werden.

Page 9: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual Studio

Im Projektmappen-Explorer wird der Inhalt der Projekte übersichtlich dargestellt. Properties: Hier sind verschiedene Dateien zusammengefasst, die die Projekteigenschaften bestimmen. (Titel, Beschreibung, Versionsnummer, Copyright, Ressourcen, Projekteinstellungen).Verweise: Für das Projekt gültige Verweise und Namensräume.Form1.cs: Klasse, die den selbst zugefügten Code enthält.Form1.Designer.cd: Klasse, die vom Windows Forms Designer automatisch hinzugefügt wird. Program.cs: Klasse, die die Main-Methode enthält.

Page 10: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual Studio

Der DesignerIm Designer – Fenster wird die Programmoberfläche der Anwendung entworfen. Aus der Toolbox werden die Steuerelemente mit Drag & Drop auf ein Formular übernommen.

Page 11: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual Studio

Das Eigenschaften- FensterDort werden die Eigenschaften des gerade aktiven Steuerelements aufgelistet. Aktiviert wird ein Steuerelement entweder durch Anklicken auf dem Formular, oder durch Auswahl in der Klappbox am oberen Rand des Eigenschaften- Fensters.

Page 12: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual Studio

Das CodefensterFür die eigentliche Programmierung ist das Codefenster zuständig. Der Code-Editor unterstützt auf das Schreiben von Quellcode, indem er Wörter farblich markiert, Vorschläge unterbreitet (Intellisense), auf Fehler hinweist und Text automatisch einrückt.

Page 13: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Maximumsbestimmung von drei Integer ZahlenStarten Sie Visual Studio und öffnen Sie ein neues Projekt (Vorlage "Windows Forms – Anwendung). Geben Sie als Namen Maximum ein. Mit F4 holen Sie sich das Eigenschaftenfenster in den Vordergrund und stellen damit die Text- Eigenschaft des Startformulars Form1 neu ein: "Maximum von drei Zahlen".

Von der Toolbox ziehen Sie die Steuerelemente ( 3mal TextBox, 1 mal Button, 4 mal Label) gemäß folgender Abbildung auf Form1 und stellen auch hier bestimmte Text - Eigenschaften neu ein:

Page 14: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

ProgrammierungDurch einen Doppelklick auf Maximum wird automatisch das Codefenster der Klasse Form1 mit dem bereits vorbereiteten Rahmencode des Click- Eventhandlers geöffnet.

Page 15: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Bemerkungen: Ein c# Programm besteht aus mindestens einer *.cs – Textdatei mit einer Klasse. Ein c# Programm beginnt mit der Main- Methode. Jedes c# Programm besteht aus einer Folge von Anweisungen. Jede c# Anweisung wird mit einem Semikolon abgeschlossen. Die using Anweisungen zu Beginn des Programms definieren verschiedene Namespaces und erleichtern den Zugriff auf einige wichtige Klassenbibliotheken.

Entsprechend der Aufgabenstellung wird der Eventhandler mit den erforderlichen Anweisungen gefüllt. Der try – catch – Block wird benötigt um Falscheingaben abzufangen.

Page 16: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Page 17: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Kompilieren und starten können sie das Programm mit F5 oder über das kleine grüne Dreieck.Für die Eingabe der Zahlenwerte gibt es keine fest vorgegebene Reihenfolge. Die Werte sind in der Text Eigenschaft der Textboxen enthalten und müssen deshalb mit Hilfe der convert Klasse vom Datentyp String in den Integer- Datentyp umgewandelt werden. Die Ausgabe erfolgt umgekehrt mittels der bereits bekannten ToString Methode, deren Ergebnis der Text- Eigenschaft von label4 zugewiesen wird.Wird statt einer Ganzzahl eine andere Zeichenfolge eingegeben, erscheint folgende Fehlermeldung:

Page 18: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Erweitern Sie das Programm so, dass beliebig viele Zahlen eingegeben werden können.Eine TextBox dient zur Eingabe der Zahlen, die per Enter-Taste in eine ListBox übernommen werden sollen. Für die Eingabe sollen nicht nur ganze Zahlen, sondern auch Kommazahlen zulässig sein.In die Klasse Form1 ist folgender Code einzutragen.

Page 19: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Der folgende Event-Handler für das KeyUp- Ereignis von textBox1 überträgt dann den Eintrag nach listBox1, wenn die Enter-Taste gedrückt wird. Anschließend wird der Eintrag in der Textbox gelöscht, um für neue Zahleneingaben bereit zu sein.Der Rahmencode wird nicht von Hand eingegeben, sondern über die Ereignisse- Seite des Eigenschaftenfensters erzeugt.

Page 20: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Ein weiterer Event- Handler wertet das Click- Ereignis von Button1 aus. Der Inhalt der ListBox wird ausgelesen und in das Array kopiert. Da der erste Eintrag einer ListBox (genauso wie das erste Feld eines Arrays) immer den Index null hat, kann man das Kopieren mit einer for-Schleife erledigen.

Page 21: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung

Der letzte Event-Handler ermöglicht das Löschen der gesamten Zahlenreihe, um wieder von vorne beginnen zu können.

Ergänze das Programm um die Berechnung des Minimums und des Durchschnitts.

Page 22: Objektorientierte Programmierung (OOP) 1. Strukturiert versus objektorientiert Strukturierte Programmierung lässt sich mit folgenden Stichworten charakterisieren:

Einstieg in Visual C#Windows Forms- Anwendung