Grundlagen der OO-Programmierung in C#

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
Forschungszentrum caesar
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
ARRAY oder FELD oder VEKTOR
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Zusammenfassung Vorwoche
Das erste Programm (Folie 16)
Arrays,Strings&Pointer in C/C++
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Einführung in die Programmiersprache C 1
Java programmieren mit JavaKara
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Variablenkonzept Klassisch, in Java Basistyp
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
Einführung in die Programmierung mit Java
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Tutorium Software-Engineering SS14 Florian Manghofer.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Objektorientiertes Modellieren und Programmieren mit Java
Anforderungen an die neue Datenstruktur
Konstruktoren.
Hello World! Javakurs 2013 Arne Kappen
SurveyCAU Handbuch - Studierende-.
Datentypen: integer, char, string, boolean
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
SS 04 Christiane Rauh Christian Hellinger
Polymorphie Überladen
Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Interfaces Definition von Interfaces Verwendung von Interfaces
2. Vererbung und Kapselung
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.
«Delegierter» Methoden Schablone Funktionszeiger
Definition Felder Konstruktor Methoden Beispiel
Datenstrukturen und Softwareentwicklung
9. Vererbung und Polymorphie
Implementieren von Klassen
Statische und Nichtstatische Methoden Properties / Eigenschaften
Datentyp- umwandlung.
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

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

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Visual Studio

Ü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 … Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

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 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 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). Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 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 Informationen Lokale Daten der aktuellen Methode Daten der aktuellen Zeile und der Zeile davor Manuell definiert Daten, die dargestellt werden sollen Aufrufliste(call-stack) Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

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

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 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) Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 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. Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Variablen-Deklaration und Initialisierung Die Deklaration erfolgt über die Syntax Typ Name; Beispiele int a; string b; float c; Deklaration mehrerer Variablen int a1, a2, a3; string b1, b2; Initialisierung (Wert-Belegung) Bei der Deklaration int a = 17; // Deklaration mit Initialisierung string b = "Das ist ein Text"; float c = 3.14159F; Oder zu einem späteren Zeitpunkt int a1, a2; // Deklaration a1 = 17; // Initialisierung danach a2 = 243; Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

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

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 Ganzzahl-Typen Typ Minimum Maximum Grösse Vorzeichen byte 255 8 Bit Nein sbyte -128 127 Ja short -32.768 32.767 16 Bit int -2.147.483.648 2.147.483.647 32 Bit long -9.223.372.036.854.775.808 9.223.372.036.854.775.807 64 Bit Darstellung eines sbyte Werts: 17 0 001 0001 vz 262524 23222120 Darstellung eines short Werts: 385 0 000 0001 1000 0001 vz 214213212 2112102928 27262524 23222120 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 Gleitkomma-Typen Typ Bereich Nachkommastellen (Dezimal-Stellen) Grösse Verwendung float ± 1.5e-38 bis ± 3.4e38 7  32 Bit float x = 1.234F; double ± 5.0e-308 bis ± 1.7e308 15-16 64 Bit double y = 1.234; double z = 3D; decimal ±1.0 × 10-28 bis ±7.9 × 1028 bis 29 128 Bit decimal d = 9.1m IEEE Darstellung für float (32 Bit) Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 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. Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 Typ-Umwandlung Gegeben sei die folgende Zahl als int Typ  13771716 Beim Umwandeln in eine float Zahl geht Präzision verloren: Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Weitere vordefinierte Typen Grösse Werttyp Beschreibung object - nein Referenz auf ein Objekt string Referenz auf einen String (Text-Zeichen) bool 8 Bit ja Logischer Wert true oder false char 16 Bit Unicodezeichen 0 ... 65.535 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

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

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

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, … ). Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

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. Referenzen aus dem Stack Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Werttypen   Referenztypen Werttypen Werttypen (engl. value type) sind Typen, die im Typsystem eine feste Länge (Anzahl Bytes) aufweisen. Der Speicherort von Werttypen ist der Stack. Referenztypen Referenztypen (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. Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

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(); } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

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.

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 Methoden in C# Eigene statische Methoden schreiben und aufrufen Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Definition Eine Methode ist ein Codeblock, der eine Reihe von Anweisungen enthält. Die Anweisungen einer Methode stehen in zwei geschweiften Klammern "{" und "}": Name der Methode Parameter-Werte (Typ und Name) Typ des Resultat-Werts Methoden-Kopf mit der Signatur Reihe von Anweisungen in geschweiften Klammern Methoden-Inhalt Resultat-Rückgabe

Die Main Methode 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

Methoden-Aufruf Die Anweisungen einer Methode werden ausgeführt, sobald das Programm die Methode aufruft und die erforderlichen Methoden-Argumente (als Parameter) übergibt Zwei Methoden-Aufrufe mit je drei Parametern Methoden-Aufruf mit zwei Parametern

Argumente   Parameter 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. 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.

Methoden mit verschiedenen Parameter-Typen Beispiel: Signatur ist erfüllt  korrekter Methoden-Aufruf Die Typen der Argumente müssen den Parameter-Typen (wie in der Methoden-Definition angegeben) entsprechen.

Methoden mit verschiedenen Parameter-Typen Beispiel: Signatur ist nicht erfüllt An der zweiten Stelle erwartet die Methode PersonenErfassen einen int-Wert, darum zeigt Visual Studio einen Fehler an.

Methoden mit verschiedenen Parameter-Typen Beim Aufrufen einer Methode müssen die richtige Anzahl Argumente mit dem richtigen Typ angegeben werden, sonst gibt es einen Compiler-Fehler. Die Reihenfolge der Aufruf-Argumente muss stimmen und den Parameter-Typen in der Definition der Methode entsprechen.

Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012 Methoden in C# Speicherbild Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

Speicherbild: Ein Wert-Parameter Stack Methoden-Aufruf Beim Aufruf der Methode (Square) wird der Wert in der Klammer ( 8 ) an die aufgerufene Methode als Parameter übergeben (kopiert).

Speicherbild: Zwei Wert-Parameter Stack Methoden-Aufruf Beim Aufruf der Methode (Multiply) werden die Werte in der Klammer (2, 20) als Parameter übergeben (kopiert).

Speicherbild: Kontext Stack 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.

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

Referenz-Typen-Parameter Heap Stack

Speicherbild: Array «auspacken» Methoden-Aufruf Beim Aufruf der Methode (Multiply1) werden die einzelnen Array Werte in der Klammer (1, 2 und 3) in den Bereich der aufgerufenen Methode kopiert.

Speicherbild: Array als Parameter übergeben 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.