einführung in die informationsverarbeitung · 2019-01-07 · 13/62 informationsverarbeitung...
TRANSCRIPT
![Page 1: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/1.jpg)
Abschnitt VI
Dr.-Ing. Peter Ijewski 1/62
![Page 2: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/2.jpg)
Kontrollfragen
08:47 Informationsverarbeitung Abschnitt VI
Aufgaben des letzten Praxisteils
2/62
Programmierparadigmen
Objektorientierte Programmierung
C#
Praxisteil
![Page 3: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/3.jpg)
3/62
![Page 4: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/4.jpg)
08:47 4/62 Informationsverarbeitung Abschnitt VI
• Wie kommen wir von der Aufgabenstellung zum Programm?
• Welche Bedeutung haben Algorithmen in der Informations-verarbeitung?
• Wozu dient Software Engineering?
• Welche Klassen von Programmiersprachen kennen Sie?
• Aus welchen Elementen ist ein Programm aufgebaut?
• Warum sollen Variablen initialisiert werden?
• Warum sind programmbegleitende Kommentare so wichtig?
![Page 5: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/5.jpg)
5/62
![Page 6: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/6.jpg)
08:47 6/62 Informationsverarbeitung Abschnitt VI
Aufgabe • Starten von Visual Studio (C#) • Erstellen des ersten Programms „Hello World“ • Programm „SendungsDauer“ • Programm „99 bottles of beer”
![Page 7: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/7.jpg)
09:17 7/62 Informationsverarbeitung Abschnitt VI
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _99Bottles
{
class Program
{
static void Main(string[] args)
{
// Wir "trinken" alle Flaschen leer bis nur noch zwei Flaschen übrig sind
// weil der auszugebende Text sich bei Flasche 2 ändert
for (int zaehler = 9; zaehler > 2; zaehler--) // Aus Gründen der Übersicht hier nur 9 Flaschen
{
Console.WriteLine(zaehler + " bottles of beer on the wall, " + zaehler + " bottles of beer.");
Console.WriteLine("Take one down and pass it around, " + (zaehler - 1) + " bottles of beer on the wall. ");
Console.WriteLine(""); // Leerzeile
Console.ReadLine(); // warten auf Eingabe
}
//es sind noch zwei Flaschen vorhanden
Console.WriteLine("2 bottles of beer on the wall, 2 bottles of beer.");
Console.WriteLine("Take one down and pass it around, 1 bottle of beer on the wall. ");
Console.WriteLine(""); // Leerzeile
//es ist noch eine Flaschen vorhanden
Console.WriteLine("1 bottle of beer on the wall, 1 bottle of beer.");
Console.WriteLine("No more bottles of beer on the wall, no more bottles of beer.");
Console.WriteLine(""); // Leerzeile
//es gibt kein Bier mehr, aber wir haben noch Durst!
Console.WriteLine("Go to the store and buy some more, 99 bottles of beer on the wall.");
Console.ReadLine(); // warten auf Eingabe
}
}
}
![Page 8: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/8.jpg)
8/62
![Page 9: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/9.jpg)
08:47 9/62 Informationsverarbeitung Abschnitt VI
Begriffserläuterung
Unter Programmierparadigmen versteht man einen fundamentalen Programmierstil.
Die Aufteilung der verschiedenen Stile ist sehr vielfältig. Wir wollen 4 Begriffe herausgreifen.
• Imperative Programmierung
• Deklarative Programmierung
• Prozedurale Programmierung
• Objektorientierte Programmierung
Diese Begriffe stehen nicht im Widerspruch zueinander, sondern können in einer Programmiersprache sinnvoll nebeneinander existieren.
![Page 10: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/10.jpg)
09:29 10/62 Informationsverarbeitung Abschnitt VI
Übersicht
Ein Programmierparadigma ist das einer Programmiersprache zugrunde liegende Prinzip.
Quelle: http://www.mirko-hans.de/info/gk_11/oop.htm
C#
![Page 11: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/11.jpg)
08:47 11/62 Informationsverarbeitung Abschnitt VI
Imperative Programmierung
imperare (lat.)= anordnen, befehlen
Bei der sog. imperativen Programmierung besteht der Quellcode eines Programm aus einer Folge von vorgegebenen Anweisungen (Befehlen).
Diese definieren, was und in welcher Reihenfolge ausgeführt werden soll.
Der Programmierer definiert „WIE“ etwas zu bewerkstelligen ist.
Die imperative Programmierung ist das ursprüngliche, am längsten bekannte Programmierparadigma.
![Page 12: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/12.jpg)
08:47 12/62 Informationsverarbeitung Abschnitt VI
Deklarative Programmierung
Beim Einsatz einer deklarativen Programmierung wird (vom Programmierer) nicht mehr der eigentliche Lösungsweg programmiert, sondern „nur noch“ angegeben, welches Ergebnis gewünscht ist.
Ein Beispiel ist die Datenbankabfragesprache SQL, die als eine mengen-orientierte Abfragesprache zu bezeichnen ist.
Der Programmierer definiert „WAS“ etwas zu bewerkstelligen ist.
![Page 13: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/13.jpg)
08:47 13/62 Informationsverarbeitung Abschnitt VI
Prozedurale Programmierung
Imperativ und prozedural werden oft auch synonym verwendet.
Die prozedurale Programmierung zeichnet sich grundsätzlich dadurch aus, dass Algorithmen in überschaubare Teile (Module, Prozeduren) zerlegt werden, die dann anhand einer definierten Schnittstelle aufrufbar sind.
In einem weitergehenden Schritt werden Programme in Module unterteilt. Module können ggf. getrennt erstellt, kompiliert und in u. U. in Bibliotheken bereitgestellt werden.
Prozedural ist eine Ausprägung imperativer Programmierung, die den Quellcode in Prozeduren untergliedert.
Die Bezeichnung der Unterteilungen ist programmier-sprachenspezifisch.
![Page 14: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/14.jpg)
08:47 14/62 Informationsverarbeitung Abschnitt VI
Prozedurale Programmierung
Ein weiterer wichtiger Aspekt in der Softwaretechnik ist die Wiederverwendbarkeit entstehenden Programmcodes in anderen Programmen.
Prozeduren und Funktionen werden nach Aufgabengebieten gruppiert und zu Bibliotheken zusammengefasst, die dann verteilt und in beliebig viele andere Programme eingebunden werden können.
Prozedurale Programmiersprachen sind z. B.: Pascal, C und BASIC.
Entwickler modernerer Programmiersprachen wie z. B. Java und C# betrachten den prozeduralen Ansatz als veraltet und haben daher vorhandene Sprachen um Elemente der objektorientierten Programmierung erweitert.
![Page 15: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/15.jpg)
08:47 15/62 Informationsverarbeitung Abschnitt VI
Objektorientierte Programmierung
Unter „Objektorientierung“, abgekürzt „OO“, versteht man eine grundsätzliche Sichtweise auf komplexe Systeme.
In einem „Objekt“ werden: • Attribute (Eigenschaften) • Methoden (member function) • Ereignisse (resp. die Reaktion darauf) zusammengefasst.
Objektorientierung wird verwendet, um die hohe Komplexität heutiger Programme zu verringern.
Objektorientierung ist ein jüngeres Programmierparadigma.
![Page 16: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/16.jpg)
08:47 16/62 Informationsverarbeitung Abschnitt VI
Objektorientierte Programmierung
Die objektorientierte Programmierung (OOP) ist eine besondere Methode zur Modularisierung von Programmen, die sich recht stark von der rein prozeduralen Programmierung unterscheidet.
Auch die OOP folgt dem Programmierparadigma der imperativen Programmierung.
Gut entworfene objektorientierte Software ist in der Regel leichter zu warten und zu erweitern als prozedurale.
Die strenge Modularisierung vereinfacht Unit-Tests und die erwünschte Wiederverwendung von Teilen der Software.
![Page 17: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/17.jpg)
17/62
![Page 18: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/18.jpg)
08:47 18/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
Objektorientierung hilft uns, Ausschnitte der realen Welt datentechnisch zu beschreiben und zu bearbeiten.
Dinge der realen Welt werden (mit ihren Eigenschaften, Methoden, etc.) zunächst als „Klassen“ ähnlicher Dinge beschrieben.
Maschinen z. B. werden u. a. durch die Eigenschaften • Name • Baujahr • Anschaffungspreis und die Methoden • Einschalten • Ausschalten gekennzeichnet.
![Page 19: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/19.jpg)
09:44 19/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
Klasse „Maschine“
Eigenschaften Name, Baujahr, Anschaffungspreis, etc.
Methoden Einschalten, Ausschalten, etc.
Ereignisse
![Page 20: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/20.jpg)
08:47 20/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
In der OOP werden Daten und Funktionen zu Objekten zusammen gefasst.
Änderungen an den Daten eines Objekts werden idealerweise ausschließlich über die im Objekt selbst vorhandenen Funktionen (Methoden), vorgenommen.
Durch diese Maßnahme befindet sich das Objekt immer in einem wohldefinierten und selbstkontrollierten Zustand.
![Page 21: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/21.jpg)
08:47 21/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
class Maschine
{
}
class Maschine
{
string _name = "";
public string name
{
get { return _name; }
set { _name = value; }
}
}
class Maschine
{
string _name = "";
public string name
{
get { return _name; }
set { _name = value; }
}
public Boolean einschalten()
{
return true;
}
}
![Page 22: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/22.jpg)
08:47 22/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
Eine Klasse ist somit als „Bauplan, Matritze“ für die Abbildung von realen Objekten in Softwareobjekte zu betrachten.
Eine Klasse kann auch als (komplexer) Datentyp des jeweiligen Objekts verstanden werden. Während der Laufzeit des Programmes belegt eine Klasse keinen Speicherplatz.
Soll nun ein definiertes Objekt (eine bestimmte Maschine) im Programm benutzt werden muss die Klasse „Maschine“ instanziiert werden.
Maschine MeineMaschine = new Maschine();
Zur Unterscheidung beginnen Klassen mit einem Großbuchstaben, Variablen mit einen Kleinbuchstaben.
![Page 23: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/23.jpg)
10:11 23/62 Informationsverarbeitung Abschnitt VI
„Instanziieren“
Quelle: http://www.hki.uni-koeln.de/sites/all/files/courses/5779/instanz_klasse.gif
![Page 24: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/24.jpg)
08:47 24/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
Maschine MeineMaschine = new Maschine(); Maschine MeineMaschine = new Maschine ();
MeineMaschine.name = "Testmaschine";
Maschine MeineMaschine = new Maschine ();
MeineMaschine.name = "Testmaschine";
MeineMaschine.baujahr = 1998;
Maschine MeineMaschine = new Maschine ();
MeineMaschine.name = "Testmaschine";
MeineMaschine.baujahr = 1998;
MeineMaschine.anschafffungspreis = 105000.0;
![Page 25: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/25.jpg)
08:47 25/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
Objektorientierung wird im wesentlichen durch drei Eigenschaften gekennzeichnet:
• Datenkapselung
• Polymorphie
• Vererbung
![Page 26: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/26.jpg)
08:47 26/62 Informationsverarbeitung Abschnitt VI
Datenkapselung
Als Datenkapselung (auch unter dem Begriff information hiding bekannt) bezeichnet man in der Programmierung das Verbergen von Daten oder Informationen vor dem Zugriff von außen.
In der strukturierten und modularen Programmierung ist Daten-kapselung ist ein schon lange bekanntes Konzept.
Der direkte Zugriff auf die interne Datenstruktur wird nicht erlaubt und erfolgt ausschließlich über definierte Schnittstellen (Black-Box-Modell).
![Page 27: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/27.jpg)
10:13 27/62 Informationsverarbeitung Abschnitt VI
Datenkapselung
„Maschine“
Eigenschaften
Methoden (Funktionen)
Programm
![Page 28: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/28.jpg)
08:47 28/62 Informationsverarbeitung Abschnitt VI
Datenkapselung
class Maschine
{
string _name = "";
public string name
{
get { return _name; }
set { _name = value; }
}
public Boolean einschalten()
{
return true;
}
}
![Page 29: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/29.jpg)
08:47 29/62 Informationsverarbeitung Abschnitt VI
Datenkapselung
Eine Ausprägung ist das ist das Verbergen von Daten durch die Definition von Gültigkeitsbereichen.
Deklarierte Daten sind nur innerhalb des umgebenden und in allen tieferen Bereichen sichtbar und gültig; für einen höheren Bereich bleiben sie verborgen.
Jede Teilstruktur eines Programms (Hauptblock, Prozeduren, Funktionen, Unterprogramme, …) definiert einen solchen Bereich, sodass eine Gültigkeitshierarchie entsteht.
![Page 30: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/30.jpg)
10:18 30/62 Informationsverarbeitung Abschnitt VI
Datenkapselung
class Maschine
{
public string _name = "";
}
Maschine MeineMaschine = new Maschine ();
MeineMaschine._name = "Test";
class Maschine
{
private string _name = "";
}
Maschine MeineMaschine = new Maschine ();
MeineMaschine._name = "Test";
![Page 31: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/31.jpg)
08:47 31/62 Informationsverarbeitung Abschnitt VI
Datenkapselung
Das sog. Geheimnisprinzip besagt, dass man vom Innenleben einer Klasse möglichst wenig wissen soll (muss).
Durch die Kapselung wird nur die Funktionsweise - das „Was“ - einer Klasse nach außen sichtbar, aber nicht die interne Repräsentation - das „Wie“ .
Dadurch wird die Schnittstelle nach außen einerseits definiert und andererseits auch dokumentiert.
Die Datenkapselung schottet somit die interne Implementierung einer Klasse von direktem externen Zugriff ab.
![Page 32: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/32.jpg)
10:24 32/62 Informationsverarbeitung Abschnitt VI
Vererbung
Maschine
Kompressor Fahrzeug
Eisenbahn LKW PKW Krafträder
Golf Porsche
![Page 33: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/33.jpg)
08:47 33/62 Informationsverarbeitung Abschnitt VI
Vererbung
Neue Klassen können von anderen vorhandenen Klassen abgeleitet werden. Diesen Vorgang nennen wir Vererbung.
Dabei erbt die neue Klasse Attribute, Methoden und Ereignisse von der vererbenden Klasse (Diese nennen wir Basisklasse).
Maschine MeineMaschine = new Maschine();
class Kompressor : Maschine
{
}
![Page 34: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/34.jpg)
08:47 34/62 Informationsverarbeitung Abschnitt VI
Vererbung
Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden.
class Kompressor : Maschine
{
double _druck = 0.0;
public double druck
{
get { return _druck; }
set { _druck = value; }
}
}
Kompressor MeinKompressor = new Kompressor();
MeinKompressor.anschafffungspreis = 1600.0;
MeinKompressor.druck = 3.0;
![Page 35: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/35.jpg)
08:47 35/62 Informationsverarbeitung Abschnitt VI
Vererbung
Dabei beschreibt die Basisklasse allgemeine Eigenschaften, ist also eine Verallgemeinerung der abgeleiteten Klassen; diese sind somit Spezialisierungen der Basisklasse.
Neben diesem rein konstruktiven Aspekt dient Vererbung auch der Dokumentation von Ähnlichkeiten zwischen den Klassen
Dies hat in den frühen Entwurfsphasen unbestreitbare Vorteile. Auf Vererbung basierende Klassenhierarchien spiegeln strukturelle und verhaltensbezogene Ähnlichkeiten der Klassen deutlich wider.
![Page 36: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/36.jpg)
08:47 36/62 Informationsverarbeitung Abschnitt VI
Polymorphie
Polymorphie (griechisch, „Vielgestaltigkeit“) ist ein Konzept in Programmiersprachen, das die Fähigkeit eines Elements beschreibt, abhängig von seiner Verwendung unterschiedliche Eigenschaften anzunehmen.
Arten der Polymorphie
• Polymorphie überladener Operatoren
• Polymorphie der Objektorientierten Programmierung
• Polymorphie einer Funktion bzw. Prozedur
• Polymorphie von Datentypen oder Klassen
• Polymorphie bei der Softwareentwicklung
![Page 37: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/37.jpg)
10:44 37/62 Informationsverarbeitung Abschnitt VI
Polymorphie
Polymorphie überladener Operatoren
Ein Bezeichner, der für einen Operator steht (z. B. „+“, „-“), kann mehrmals mit anderer Bedeutung implementiert werden.
int nsumme = 0, nwert1 = 1, nwert2 = 2;
nsumme = nwert1 + nwert2;
double dwsumme = 0, dwwert1 = 1.5, dwwert2 = 2.7;
dwsumme = dwwert1 + dwwert2;
string cname = "", cvorname="Peter", vnachname="Ijewski";
cname = cvorname + " " + vnachname;
![Page 38: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/38.jpg)
08:47 38/62 Informationsverarbeitung Abschnitt VI
Polymorphie
Polymorphie der Objektorientierten Programmierung
Die Polymorphie der Objektorientierten Programmierung ist eine Eigenschaft, die immer im Zusammenhang mit Vererbung auftritt
Eine Methode ist polymorph, wenn sie in verschiedenen Klassen die gleiche Signatur hat, jedoch erneut implementiert ist.
![Page 39: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/39.jpg)
08:47 39/62 Informationsverarbeitung Abschnitt VI
Polymorphie
class Maschine
{
string _name = "";
public string name
{
get { return _name; }
set { _name = value; }
}
{
class Kompressor : Maschine
{
string _name = "";
public override string name
{
get { return _name.ToUpper(); }
set { _name = value; }
}
}
![Page 40: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/40.jpg)
08:47 40/62 Informationsverarbeitung Abschnitt VI
Polymorphie
Polymorphie einer Funktion bzw. Prozedur
Unter Polymorphie versteht man das Verhalten von objektorientierten Sprachen, die Signatur einer Funktion als Bestandteil des Funktionsnamens bei einem Aufruf zu betrachten.
public int test(int nwert1,int nwertb)
{
return nwert1 * nwert2;
}
public double test(double dwwert1, double dwwert2)
{
return dwwert1 * dwwert2;
}
![Page 41: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/41.jpg)
08:47 41/62 Informationsverarbeitung Abschnitt VI
Eigenschaften der OOP
Objekte sind Abstraktionen realer Dinge, die ihre tatsächliche
Implementierung vor der Außenwelt verbergen und dadurch
einfacher austauschbar werden.
In der OOP werden Daten und Funktionen zu Objekten zusammen
gefasst.
Ein in der Praxis immer wiederkehrendes Problem ist die elegante
Verbindung von relationalen Datenbanken und objektorientierter
Programmierung. Das Object Relational Mapping (ORM) führt eine
Umsetzung relationaler Strukturen in Objekte und umgekehrt durch.
![Page 42: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/42.jpg)
42/62
![Page 43: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/43.jpg)
10:48 43/62 Informationsverarbeitung Abschnitt VI
Integrated Development Environment
Für private Zwecke Download unter: https://www.visualstudio.com/de-de/visual-studio-homepage-vs.aspx
![Page 44: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/44.jpg)
10:54 44/62 Informationsverarbeitung Abschnitt VI
Integrated Development Environment
Neben dem Microsoft Visual Studio gibt es inzwischen auch Entwicklungsumgebungen (IDEs) anderer Hersteller für C#:
• Baltie, C#-IDE für Kinder • C#-Builder von Borland (Verwendet den Microsoft C#-Compiler in
Lizenz) • MonoDevelop – IDE für Windows und Unix-basierte
Betriebssysteme (Open-Source http://www.monodevelop.com) • SharpDevelop – (Open-Source) • XNA Game Studio – IDE von Microsoft zur Spieleentwicklung
![Page 45: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/45.jpg)
10:53 45/62 Informationsverarbeitung Abschnitt VI
Integrated Development Environment
![Page 46: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/46.jpg)
08:47 46/62 Informationsverarbeitung Abschnitt VI
Entwicklungsumgebung
![Page 47: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/47.jpg)
08:47 47/62 Informationsverarbeitung Abschnitt VI
Entwicklungsumgebung
Visual Studio bietet uns eine große Anzahl verschiedener recht informativer und auch hilfreicher Fenster an.
Die Wichtigsten:
• der Codeeditor • der visuelle Editor • der Projektmappen-Explorer • das Eigenschaftsfenster • die Toolbox • die Fehlerliste
![Page 48: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/48.jpg)
08:47 48/62 Informationsverarbeitung Abschnitt VI
Entwicklungsumgebung - Codeeditor
Der kontextsensitive Codeeditor ist die wichtigste Komponente.
• automatischer Codeeinzug • automatische Generierung von Code • Ein- und Ausblendung der Anweisungsblöcke • IntelliSense-Unterstützung • Darstellung jeder (geöffneten) Quellcodedatei auf einer eigenen
Registerkarte • eigene Vorder- und Hintergrundfarbe der verschiedenen Elemente • u. v. m.
![Page 49: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/49.jpg)
08:47 49/62 Informationsverarbeitung Abschnitt VI
Entwicklungsumgebung - Codeeditor
• Das Ein- und Ausblenden der Anweisungsblöcke dient größerer Übersichtlichkeit
![Page 50: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/50.jpg)
08:47 50/62 Informationsverarbeitung Abschnitt VI
Entwicklungsumgebung - Projektmappen-Explorer
Der Projektmappen-Explorer ist die Komponente von Visual Studio, die den Anwender bei der Navigation im Anwendungscode unterstützt.
![Page 51: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/51.jpg)
08:47 51/62 Informationsverarbeitung Abschnitt VI
Entwicklungsumgebung - Eigenschaftenfenster
Das Eigenschaftenfenster zeigt seine Stärke insbesondere dann, wenn grafische Oberflächen eine Rolle spielen.
Man kann hier auf einfache und übersichtliche Art und Weise die Eigenschaften von Schaltflächen, Forms etc. ansehen und auch einstellen.
![Page 52: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/52.jpg)
08:47 52/62 Informationsverarbeitung Abschnitt VI
Entwicklungsumgebung - Toolbox
Das Toolbox benötigen wir ausschließlich bei der Entwicklung grafischer Oberflächen.
![Page 53: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/53.jpg)
08:47 53/62 Informationsverarbeitung Abschnitt VI
Lehrmaterial
http://openbook.rheinwerk-verlag.de/visual_csharp_2012/
http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=118770374
http://homeandlearn.co.uk/csharp/csharp.html
![Page 54: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/54.jpg)
11:06 54/62 Informationsverarbeitung Abschnitt VI
Grundlagen der Sprache
C# greift Konzepte der Programmiersprachen Java, C++, C sowie Delphi auf.
C# zählt zu den objektorientierten Programmiersprachen und unterstützt die Entwicklung von sprachunabhängigen .NET-Komponenten.
![Page 55: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/55.jpg)
08:47 55/62 Informationsverarbeitung Abschnitt VI
Grundlagen der Sprache
Bedingte Ausführung (if, else)
if (nwert > 0)
{
Console.WriteLine("Wert ist größer als Null");
}
else if (nwert == 0)
{
Console.WriteLine("Wert ist gleich Null");
}
else
{
Console.WriteLine("Wert ist kleiner als Null");
}
![Page 56: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/56.jpg)
08:47 56/62 Informationsverarbeitung Abschnitt VI
Grundlagen der Sprache
Bedingte Ausführung (switch)
switch (nwert1)
{
case 0:
{
Console.WriteLine("Wert ist 0");
break;
}
case 1:
{
Console.WriteLine("Wert ist 1");
break;
}
default:
{
Console.WriteLine("Wert ist etwas anderes");
break;
}
}
![Page 57: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/57.jpg)
08:47 57/62 Informationsverarbeitung Abschnitt VI
Grundlagen der Sprache
In C# sind auch Strings als Prüfausdruck erlaubt:
switch (cName)
{
case „Maier“:
{
Console.WriteLine(„Ihr Name ist Maier");
break;
}
case „Schulzer“:
{
Console.WriteLine(„Ihr Name ist Schulzer ");
break;
}
default:
{
Console.WriteLine(„Ihren Namen kenne ich nicht");
break;
}
}
![Page 58: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/58.jpg)
08:47 58/62 Informationsverarbeitung Abschnitt VI
Grundlagen der Sprache
Schleifen (for)
Dauer=0;
for (i=0; i<6; i++)
{
Dauer++;
//Ausgabe auf der Konsole
Console.WriteLine("Dauer: "+Dauer);
}
![Page 59: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/59.jpg)
08:47 59/62 Informationsverarbeitung Abschnitt VI
Grundlagen der Sprache
Schleifen (while)
Dauer=0;
i=0;
while (i<6)
{
i++;
Dauer++;
//Ausgabe auf der Konsole
Console.WriteLine("Dauer: "+Dauer);
}
Weitere Formen von Schleifen werden wir zu einem späteren Zeitpunkt kennen lernen.
![Page 60: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/60.jpg)
60/62
![Page 61: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/61.jpg)
08:47 61/62 Informationsverarbeitung Abschnitt VI
Aufgabe • Erstellen Sie eine Klasse Fahrzeug • Definieren Sie diese Klasse mit Eigenschaften und Methoden. • Leiten Sie hieraus die Klassen Kraftrad und Traktor ab. • Fügen Sie weitere Eigenschaften diesen abgeleiteten Klassen
hinzu. • Überscheiben (override) Sie Eigenschaften der Basisklasse. • Befüllen Sie die Klassen und geben die die Eigenschaften am
Programmende aus.
![Page 62: Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung Abschnitt VI 08:47 Prozedurale Programmierung Imperativ und prozedural werden oft auch](https://reader030.vdocuments.net/reader030/viewer/2022040513/5e677b7907867f161632db67/html5/thumbnails/62.jpg)
08:47 62/62 Informationsverarbeitung Abschnitt VI
Danke für heute!