39
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein

Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

  • Upload
    ngonga

  • View
    217

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Grundlagen der OO-Programmierung in C#

Technische Grundlagen 1

Dr. Beatrice Amrhein

Page 2: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Überblick

Visual Studio: Editor und Debugging

Die Datentypen

Methoden in C#

Die Speicherverwaltung

2Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 3: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Visual Studio

3Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 4: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Übersicht der Funktionalität

Visual Studio

… ist eine integrierte Entwicklungsumgebung (IDE)

… stellt für die verschiedenen Informationsarten eines Projekts verschiedene Editoren und Assistenten zur Verfügung

Code-Editor

Ressourcen-Editoren

XAML

4Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 5: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Der Codeeditor und die IntelliSense

Der Codeeditor unterstützt das Arbeiten während der Text-Eingabe mit der IntelliSense

Die IntelliSense arbeitet nach dem Prinzip der Volltextsuche und zeigt dabei jeweils folgende Details an:

Signatur der Methode oder des Typs

eine Kurzhilfe (Tooltip, nur wenn XML Hilfedateien verfügbar sind)

allfällige Überladungen der gewählten Methode

Parameter und Erklärungen dazu

5Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 6: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Anwendungen starten

Anwendungen werden direkt in Visual Studio (oder durch

Doppelklick auf das .exe) gestartet

In Visual Studio

Menu-Punkt Debug -> Start Debugging

In der Toolbar Start

Debug bedeutet, dass das Setzen von Breakpoints möglich ist.

Release bedeutet, keine Debugger Unterstützung. Der Code ist optimiert. (vgl. Projekt-Konfiguration).

6Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 7: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Anwendungen debuggen

Der Debugger erlaubt das Unterbrechen der Programm-Ausführung.

Der Haltepunkt wird definiert durch Setzen eines Breakpoints(rechte Maustaste)

Ist der Programmfluss angehalten, wird der aktuelle Ausführungspunkt im Quellcode angezeigt

7Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Informationen

Lokale Daten der aktuellen Methode

Daten der aktuellen Zeile und der Zeile davor

Manuell definiert Daten, die dargestellt werden sollen

Aufrufliste(call-stack)

Page 8: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Datentypen

8Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 9: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Warum Typen?

Gegeben sei der folgende Speicherinhalt:

Was ist dessen Bedeutung?

Als int Typ 881389854

Als float Typ 2.55074E-07

Als char Typ "S & A 2" (irgend ein String, abhängig von Codierung)

9Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 10: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Variablen

Eine Variable steht für eine Adresse im Speicher (einen Speicherplatz).

Die Grösse des Speicherplatzes für diese Variable hängt vom Typ der Variable ab.

Über den Bezeichner/Namen der Variable kann das Programm (später) auf den darin gespeicherten Wert zugreifen.

Lokale Variablen werden innerhalb einer Methode definiert, der zugehörige Speicherplatz wird nach dem Ablauf der Methode wieder freigegeben (der Wert gelöscht).

Klassen-Variablen existieren genau so lange wie die Klasse zu welcher sie gehören.

10Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 11: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Variablen-Deklaration und Initialisierung

Die Deklaration erfolgt über die Syntax Typ Name;

Beispieleint a;string b;float c;

Deklaration mehrerer Variablenint a1, a2, a3;string b1, b2;

Initialisierung (Wert-Belegung)

Bei der Deklarationint a = 17; // Deklaration mit Initialisierung

string b = "Das ist ein Text";float c = 3.14159F;

Oder zu einem späteren Zeitpunktint a1, a2; // Deklaration

a1 = 17; // Initialisierung danach

a2 = 243;

11Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 12: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Datentypen Grundstruktur

12Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 13: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Ganzzahl-Typen

13Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

17 0 001 0001vz 262524 23222120

Darstellung eines sbyte Werts:

Typ Minimum Maximum Grösse Vorzeichen

byte 0 255 8 Bit Nein

sbyte -128 127 8 Bit Ja

short -32.768 32.767 16 Bit Ja

int -2.147.483.648 2.147.483.647 32 Bit Ja

long -9.223.372.036.854.775.808 9.223.372.036.854.775.807 64 Bit Ja

385 0 000 0001 1000 0001vz 214213212 2112102928 27262524 23222120

Darstellung eines short Werts:

Page 14: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Gleitkomma-Typen

14Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Typ Bereich Nachkommastellen(Dezimal-Stellen)

Grösse Verwendung

float ± 1.5e-45 bis ± 3.4e38 7 32 Bit float x = 1.234F;

double ± 5.0e-324 bis ± 1.7e308 15-16 64 Bitdouble y = 1.234;double z = 3D;

IEEE Darstellung für float (32 Bit)

decimal ±1.0 × 10-28 bis ±7.9 × 1028 bis 29 128 Bit decimal d = 9.1m

Page 15: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Typ-Umwandlung

Gegeben sei die folgende Zahl als int Typ 13771716

Umwandlung/Umrechnung in float ?

Eventuell ist die Zahl nicht exakt darstellbar als Zweierpotenz multipliziert mit der Mantisse Approximation.

15Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 16: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Weitere vordefinierte Typen

16Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Typ Grösse Werttyp Beschreibung

object - nein Referenz auf ein Objekt

string - nein Referenz auf einen String (Text-Zeichen)

bool 8 Bit ja Logischer Wert true oder false

char 16 Bit ja Unicodezeichen 0 ... 65.535

Page 17: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Die Speicherverwaltung

17Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 18: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Die Speicherverwaltung: Stack und Heap

18

Alle Daten werden im Speicher gehalten. Dieser ist aufgeteilt in den Stack (Stapel) und den Heap (Halde).

Stack Heap

Page 19: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Die Speicherverwaltung: Stack

Der Stack wird durch Code Manager verwaltet.

Auf dem Stack werden

die Adressen der Funktionseintritte (Methodenaufrufe)

und alle Daten verwaltet, deren Typen eine feste Grösse aufweisen (Basistypen wie int, float, double, … ).

19Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 20: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Die Speicherverwaltung: Heap

Der Heap beinhaltet alle restlichen Daten (deren Typen keine feste Grösse aufweisen, wie z.B. Zeichenketten (Strings) oder Objekte (Instanzen von Klassen). Die Daten auf dem Heap werden aus dem Stack referenziert.

20Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Ref

eren

zen

au

s d

em S

tack

Page 21: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Werttypen Referenztypen

WerttypenWerttypen (engl. value type) sind Typen, die im Typsystem eine feste Länge (Anzahl Bytes) aufweisen.

Der Speicherort von Werttypen ist der Stack.

ReferenztypenReferenztypen (Verweistyp, Objekttyp, engl. reference type) sind Typen, die im Typsystem keine feste Größe aufweisen.

Der Speicherort von Referenztypen ist der Heap.

Für das Anlegen von Objekten muss die Laufzeitumgebung eine Speicheranforderung an die Heap-Verwaltung absetzen.

21Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 22: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Zuweisung von Wert- oder Referenztypen

static void Main(string[] args)

{

Console.WriteLine("Wert-Typ --> Integer");

int a = 5;

int b = a; // Zuweisung von Wert

Console.WriteLine("a={0}, b={1}", a, b); // Werte von a und b ausgeben

a = 7; // Wert von a ändern

Console.WriteLine("a={0}, b={1}", a, b); // Wert von a und b sind verschieden

Console.WriteLine("Referenz-Typ --> Array");

double[] s = { 12, 2.2 };

double[] t = s; // Zuweisung von Referenz

Console.WriteLine("s={0}, t={1}", s[0], t[0]);

s[0] = 17; // Element des Arrays ändern auf den Wert 17

Console.WriteLine("s={0}, t={1}", s[0], t[0]); // s und t sind gleich

Console.ReadLine();

}

22Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 23: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Das Speicherbild

Die int Variable b ist eine echte Kopie. Änderungen auf dem Original berühren die Kopie b nicht.

Die Kopie t zeigt auf das gleiche Feld wie s (ist keine «echte» Kopie).

Beim Ändern von Werten, welche auf dem Heap liegen, werden auch die Inhalte der Kopien ebenfalls verändert.

Im Code ist der Unterschied nicht einfach zu erkennen.

23

Page 24: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Methoden in C#Eigene statische Methoden schreiben und

aufrufen

24Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 25: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Definition

25

Eine Methode ist ein Codeblock, der eine Reihe von Anweisungen enthält. Die Anweisungen einer Methode stehen in zwei geschweiften Klammern { und }:

Typ des Resultat-Werts

Name der MethodeParameter-Werte (Typ und Name)

Resultat-Rückgabe

Reihe von Anweisungenin geschweiften Klammern

Methoden-Inhalt

Methoden-Kopf mit der Signatur

Page 26: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Die Main Methode

26

Die Main-Methode ist der Einstiegspunkt jeder C#-Anwendung. Sie wird beim Starten des Programms von der Common Language Runtime (CLR) automatisch aufgerufen.

Die Main Methode

Weitere Methoden

Page 27: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Methoden-Aufruf

27

Zwei Methoden-Aufrufe mit je drei Parametern

Die Anweisungen einer Methode werden ausgeführt, sobald das Programm die Methode aufruft und die erforderlichen Methoden-Argumente (als Parameter) übergibt

Methoden-Aufruf mit zwei Parametern

Page 28: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Argumente Parameter

28

Die Argumente werden beim Methoden-Aufruf in der angegebenen Reihenfolge als Parameter in die Methode eingesetzt.

Die Namen der Parameter dienen für die Definition der Methode. Sie werden benutzt um zu erklären, was mit den übergebenen Werten/Argumenten berechnet werden soll.

Beim Aufrufen einer Methode müssen die richtige Anzahl Argumente mit dem richtigen Typ (Erfüllen der Signatur) angegeben werden, sonst gibt es einen Compiler-Fehler.

Page 29: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Methoden mit verschiedenen Parameter-Typen

29

Die Typen der Argumente müssen den Parameter-Typen (wie in der Methoden-Definition angegeben) entsprechen.

Beispiel: Signatur ist erfüllt korrekter Methoden-Aufruf

Page 30: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Methoden mit verschiedenen Parameter-Typen

30

An der zweiten Stelle erwartet die Methode PersonenErfassen einen int-Wert, darum zeigt Visual Studio einen Fehler an.

Beispiel: Signatur ist nicht erfüllt

Page 31: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Methoden mit verschiedenen Parameter-Typen

31

Die Reihenfolge der Aufruf-Argumente muss stimmen und den Parameter-Typen in der Definition der Methode entsprechen.

Beim Aufrufen einer Methode müssen die richtige Anzahl Argumente mit dem richtigen Typ angegeben werden, sonst gibt es einen Compiler-Fehler.

Page 32: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Methoden in C#Speicherbild

32Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Page 33: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Speicherbild: Ein Wert-Parameter

33

Methoden-Aufruf

Beim Aufruf der Methode (Square) wird der Wert in der Klammer ( 8 )an die aufgerufene Methode als Parameter übergeben (kopiert).

Stack

Page 34: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Speicherbild: Zwei Wert-Parameter

34

Methoden-Aufruf

Beim Aufruf der Methode (Multiply) werden die Werte in der Klammer (2, 20)als Parameter übergeben (kopiert).

Stack

Page 35: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Speicherbild: Kontext

35

Methoden-Aufruf

Die Werte werden auch kopiert wenn die Namen gleich sind. Die Parameter zahl1 und zahl2 sind für den Kontext von Multiply neu.

Stack

Page 36: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Methoden mit Referenz-Typen als Parameter

Parameter, welche Referenz-Typen sind, werden nicht «echt» kopiert, sie erhalten bloss einen Verweis (Referenz) auf den Heap.

36

Page 37: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Referenz-Typen-Parameter

37

StackHeap

Page 38: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Speicherbild: Array «auspacken»

38

Beim Aufruf der Methode (Multiply1) werden die einzelnen Array Werte in der Klammer (1, 2 und 3) in den Bereich der aufgerufenen Methode kopiert.

Methoden-Aufruf

Page 39: Grundlagen der OO- Programmierung in C#sws.bfh.ch/~amrhein/Skripten/Info1/01.Grundlagen.pdf · Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung

Speicherbild: Array als Parameter übergeben

39

Methoden-Aufruf

Beim Aufruf der Methode (Multiply2) wird der Wert in der Klammer (die Adresse, bzw.

die Referenz von a) an die aufgerufene Methode als Parameter übergeben.