Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung...

62
Abschnitt VI Dr.-Ing. Peter Ijewski 1/62

Transcript of Einführung in die Informationsverarbeitung · 2019-01-07 · 13/62 Informationsverarbeitung...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

08:47 62/62 Informationsverarbeitung Abschnitt VI

Danke für heute!