Objektorientierte Programmierung (OOP) 1

Werbung
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
2. Grundbegriffe der OOP
Objekt, Klasse, Instanz
Unter 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.
Objektorientierte Programmierung
2. 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.
Objektorientierte Programmierung
2. Grundbegriffe der OOP
Definition einer Klasse in UML (Unified Modeling Language)
Klassenname
Eigenschaften
Methoden
Cbestellung
bestellnr: date
bestelldatum: date
bestellwert: real
rabatt: real
gesamtbestellwert: real
rabatt_berechnen()
bestellwert_incl_rabatt()
Objektorientierte Programmierung
2. Grundbegriffe der OOP
Kapselung und Wiederverwendbarkeit
Durch 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.
Objektorientierte Programmierung
2. Grundbegriffe der OOP
Vererbung und Polymorphie
Klassen 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.
Objektorientierte Programmierung
2. Grundbegriffe der OOP
Vererbung in UML
Cbestellung
bestellnr: date
bestelldatum: date
bestellwert: real
rabatt: real
gesamtbestellwert: real
rabatt_berechnen()
bestellwert_incl_rabatt()
Cverbrauchsbestellung
Kostenstelle : string
rabatt_berechnen()
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.
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.
Einstieg in Visual Studio
Der Designer
Im Designer – Fenster wird die
Programmoberfläche der Anwendung entworfen.
Aus der Toolbox werden die Steuerelemente mit
Drag & Drop auf ein Formular übernommen.
Einstieg in Visual Studio
Das Eigenschaften- Fenster
Dort 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.
Einstieg in Visual Studio
Das Codefenster
Fü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.
Einstieg in Visual C#
Windows Forms- Anwendung
Maximumsbestimmung von drei Integer Zahlen
Starten 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:
Einstieg in Visual C#
Windows Forms- Anwendung
Programmierung
Durch einen Doppelklick auf Maximum wird automatisch das Codefenster der
Klasse Form1 mit dem bereits vorbereiteten Rahmencode des Click- Eventhandlers
geöffnet.
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.
Einstieg in Visual C#
Windows Forms- Anwendung
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:
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.
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 EreignisseSeite des Eigenschaftenfensters erzeugt.
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.
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.
Einstieg in Visual C#
Windows Forms- Anwendung
Herunterladen