Lade Inhalt...

Methodische Aufbereitung von Entwicklungsumgebungen für verteilte Anwendungen

©2007 Diplomarbeit 98 Seiten

Zusammenfassung

Inhaltsangabe:Zusammenfassung:
Im Rahmen eines Informatikstudiums bleibt es nicht aus, dass sich die Studierenden mit einer oder mehreren Programmiersprachen auseinandersetzen müssen. Die Vielfalt verfügbarer Programmiersprachen ist zu groß, um alle diese Sprachen im Lauf des Studiums abhandeln zu können.
Damit das zu vermittelnde Faktenwissen nicht zu umfangreich wird, kann im Rahmen eines Informatikstudiums nur auf wenige Sprachen, einzelne Betriebssysteme und Entwicklungsumgebungen eingegangen werden.
Diese Diplomarbeit soll einen Einstieg in die Programmiersprache C# bieten. Nach einer grundlegenden Einführung werden exemplarisch einige Techniken demonstriert, mit deren Hilfe verteilte Systeme für die .Net-Plattform erstellt werden können.
Im Verlauf der Diplomarbeit werden Client-Server-Anwendungen unter Verwendung der folgenden Techniken erstellt:
- Socket-Programmierung.
- .Net Remoting.
- Webservices.
Die dabei entstehenden Quellcodes werden analysiert und genau beschrieben, so dass diese auch auf andere Anwendungsgebiete übertragen werden können.


Inhaltsverzeichnis:Inhaltsverzeichnis:
Inhaltsverzeichnis
1.Einführung1
2.Installation der Entwicklungsumgebung2
2.1Internet Informationsdienste3
2.2Installation von Visual Studio4
3.Grundlagen der Sprache C#7
3.1Aufbau eines C#-Programmes: Hello World!7
3.2Datentypen8
3.2.1Integrierte Datentypen9
3.2.2Komplexe Datentypen10
3.3Klassen10
3.3.1Modifizierer11
3.3.2Attribute11
3.3.3Methoden11
3.3.4Konstruktor13
3.3.5Destruktor13
3.3.6Eigenschaften13
3.3.7Delegaten13
3.3.8Vererbung14
3.3.9Konstanten15
3.3.10Variablen15
3.4Namensräume15
3.5Kontrollstrukturen16
3.5.1bedingte Verzweigung17
3.5.2Schleifen18
3.5.3Kommentare20
3.6Exceptions21
3.7Ausgewählte Klassen23
3.7.1Strings23
3.7.2Arrays27
3.7.3Datums- und Zeitfunktionen31
3.7.4Dateizugriff33
4.Erstellung eines verteilten Client-Server-Systems in C#36
4.1Client-Server-Verbindung über Sockets37
4.1.1allgemeine Beschreibung37
4.1.2Server-Anwendung38
4.1.3Client-Anwendung43
4.2Client-Server-Verbindung durch .Net Remoting47
4.2.1allgemeine Beschreibung47
4.2.2Klassenbibliothek49
4.2.3Server-Anwendung51
4.2.4Client-Anwendung54
4.3Client-Server-Verbindung über Webservices57
4.3.1allgemeine Beschreibung57
4.3.2Webservice58
4.3.3Client-Anwendung61
5.Ausblick65
Anhang 1.Wichtige Datentypen66
Anhang 2.Beispielklassen67
Anhang 3.Namensräume74
Anhang 4.Server-Anwendung über Sockets76
Anhang […]

Leseprobe

Inhaltsverzeichnis


Stefan Dufter
Methodische Aufbereitung von Entwicklungsumgebungen für verteilte Anwendungen
ISBN: 978-3-8366-0182-5
Druck Diplomica® GmbH, Hamburg, 2007
Zugl. Private FernFachhochschule Darmstadt, Darmstadt, Deutschland, Diplomarbeit,
2007
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte,
insbesondere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von
Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der
Vervielfältigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen,
bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung
dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen
der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik
Deutschland in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich
vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des
Urheberrechtes.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in
diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme,
dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei
zu betrachten wären und daher von jedermann benutzt werden dürften.
Die Informationen in diesem Werk wurden mit Sorgfalt erarbeitet. Dennoch können
Fehler nicht vollständig ausgeschlossen werden, und die Diplomarbeiten Agentur, die
Autoren oder Übersetzer übernehmen keine juristische Verantwortung oder irgendeine
Haftung für evtl. verbliebene fehlerhafte Angaben und deren Folgen.
© Diplomica GmbH
http://www.diplom.de, Hamburg 2007
Printed in Germany

I
Inhaltsverzeichnis
1
Einführung ...1
2
Installation der Entwicklungsumgebung...2
2.1
Internet Informationsdienste ...3
2.2
Installation von Visual Studio...4
3
Grundlagen der Sprache C# ...7
3.1
Aufbau eines C#-Programmes: Hello World! ...7
3.2
Datentypen ...8
3.2.1
Integrierte Datentypen ...9
3.2.2
Komplexe Datentypen ...10
3.3
Klassen...10
3.3.1
Modifizierer...11
3.3.2
Attribute ...11
3.3.3
Methoden ...11
3.3.4
Konstruktor ...13
3.3.5
Destruktor...13
3.3.6
Eigenschaften...13
3.3.7
Delegaten ...13
3.3.8
Vererbung...14
3.3.9
Konstanten ...15
3.3.10
Variablen ...15
3.4
Namensräume ...15
3.5
Kontrollstrukturen...16
3.5.1
bedingte Verzweigung ...17
3.5.2
Schleifen...18
3.5.3
Kommentare...20
3.6
Exceptions ...21
3.7
Ausgewählte Klassen ...23
3.7.1
Strings ...23
3.7.2
Arrays ...27
3.7.3
Datums- und Zeitfunktionen ...31
3.7.4
Dateizugriff ...33

II
4
Erstellung eines verteilten Client-Server-Systems in C#...36
4.1
Client-Server-Verbindung über Sockets ...37
4.1.1
allgemeine Beschreibung ...37
4.1.2
Server-Anwendung...38
4.1.3
Client-Anwendung ...43
4.2
Client-Server-Verbindung durch .Net Remoting ...47
4.2.1
allgemeine Beschreibung ...47
4.2.2
Klassenbibliothek...49
4.2.3
Server-Anwendung...51
4.2.4
Client-Anwendung ...54
4.3
Client-Server-Verbindung über Webservices...57
4.3.1
allgemeine Beschreibung ...57
4.3.2
Webservice...58
4.3.3
Client-Anwendung ...61
5
Ausblick ...65
Anhang 1: Wichtige Datentypen...66
Anhang 2: Beispielklassen...67
Anhang 3: Namensräume ...74
Anhang 4: Server-Anwendung über Sockets ...76
Anhang 5: Client-Anwendung über Sockets ...79
Anhang 6: Remoting Klassenbibliothek ...81
Anhang 7: Server-Anwendung über Remoting...82
Anhang 8: Client-Anwendung über Remoting ...83
Anhang 9: Webservice...85
Anhang 10: Anwendung eines Webservices in einem Client-Programm ...86
Anhang 11: Datenübergabe beim Funktionsaufruf über SOAP ...88
Anhang 12: Aufruf eines Webservices durch eine ASPX-Seite:...90
Literaturverzeichnis...91

III
Abkürzungen
ASCII
American Standard Code for Information Interchange
ASP
Active Server Page
ASPX
Active Server Page Framework
CAO
Client Activated Object
DISCO
Discovery of Web Services
DLL
Dynamic Link Library
DNS
Domain Name System
HTML
Hypertext Markup Language
HTTP
Hypertext Transfer Protocol
IIS
Internet
Information
Service
IP Internet
Protocol
MSDN
Microsoft Developer Network
SAO
Server Activated Object
SOAP
Simple Object Access Protocol
TCP
Transmission Control Protocol
UDDI
Universal Description, Discovery and Integration
UDP
User Datagram Protocol
URI
Uniform Resource Identifier
URL
Uniform Resource Locator
WDSL
Webservice Description Language
XML
Extensible Markup Language

1
1 Einführung
Grundgedanke
Im Rahmen eines Informatikstudiums bleibt es nicht aus, dass sich die
Studierenden mit einer oder mehreren Programmiersprachen
auseinandersetzen müssen. Die Vielfalt verfügbarer Programmiersprachen ist
zu groß, um alle diese Sprachen im Lauf des Studiums abhandeln zu können.
Damit das zu vermittelnde Faktenwissen nicht zu umfangreich wird, kann nur
auf wenige Sprachen, einzelne Betriebssysteme und Entwicklungsum-
gebungen eingegangen werden.
Beim Studium an einer Präsenz-Universität können sich die Studenten für
weitere interessante Sprachen jederzeit die erforderliche Literatur aus den
Universitätsbibliotheken ausleihen und durcharbeiten. Im Rahmen eines
Fernstudiums bietet sich diese Möglichkeit häufig nicht, da sich oft keine
geeigneten Bibliotheken in unmittelbarer Nähe des Wohnortes der
Fernstudenten befinden.
Viele Fernstudenten arbeiten aus beruflichen Gründen bereits mit einer
Programmiersprache, die häufig nicht Inhalt des Fernstudiums ist. Diesen
Fernstudenten soll die Möglichkeit geboten werden, mit ihren bekannten
Betriebssystemen und Entwicklungsumgebungen auch im Studium weiter
arbeiten zu können. Dadurch kann sowohl der Lernerfolg im Studium als auch
der berufliche Erfolg im Unternehmen gesteigert werden.
Aus diesen Gründen sollte den Fernstudenten die Möglichkeit geboten werden,
sich durch die Bearbeitung aufbereiteter Lektüre einen Überblick und eine
Einführung in ausgewählte Technologien verschaffen zu können. Die
erforderlichen Kenntnisse können in entsprechenden Laborbriefen vermittelt
werden, die den Studierenden zusätzlich angeboten werden.
Diese Diplomarbeit greift diese Thematik auf und soll einen Einstieg in die
Programmiersprache C# bieten. Nach einer grundlegenden Einführung werden
exemplarisch einige Techniken demonstriert, mit deren Hilfe die
Einsendeaufgaben des Fachs VII (Verteilte Netze) behandelt und verteilte
Anwendungen für die .Net-Plattform erstellt werden können.

2
Vorgehensweise
Nach einer kurzen Beschreibung der Installation der Programmierumgebung
Visual Studio .NET 2003 Academic erfolgt eine schrittweise Einführung in
wichtige Sprachkonzepte von C# und es werden Konzepte vorgestellt, die für
die allgemeine Programmierarbeit hilfreich sind. Anschließend werden drei
Techniken zur Erstellung verteilter Systeme beschrieben und auf die
Besonderheiten eingegangen. Alle Programmbeispiele können mit der .NET
Version 1.1 nachvollzogen werden.
Aus Gründen der besseren Lesbarkeit der Quellcodes kann es vorkommen,
dass Zeilenumbrüche an Stellen eingefügt wurden, wo diese im Programm
nicht nötig oder unzulässig sind. Diese Zeilenumbrüche werden durch den
Compiler gemeldet und sind zum Testen der Codeabschnitte zu entfernen.
Zielgruppe
Die Diplomarbeit soll den Charakter eines Laborbriefes haben.
Grundkenntnisse der Programmierung sowie Kenntnisse der
Objektorientierung werden vorausgesetzt. Diese Kenntnisse werden vor allem
in den Studienheften GPI6 [3], GPI7 [4] und GPI8 [5] vermittelt. Für das
Grundverständnis der Client-Server-Programmierung sollten die Studienhefte
VII1 [8], VII2 [9] und VII3 [10] bei Bedarf wiederholt werden.
2 Installation der Entwicklungsumgebung
Die Programmierbeispiele in dieser Arbeit wurden in Visual Studio .NET 2003
Academic erstellt. Damit alle relevanten Bestandteile, besonders für die
Verwendung von Webservices, verfügbar sind, wird hier die Installation
erläutert. Bitte beachten Sie, dass die Installation je nach System und Umfang
bis zu einer Stunde oder länger dauern und bei der empfohlenen Installation
der MSDN Produktdokumentation mehrere Gigabyte Platz auf der Festplatte in
Anspruch nehmen kann.
Visual Studio besteht aus mehreren CDs. Die wichtigsten CDs sind CD1, CD2
und die CD "Voraussetzungen". Die Installation sollte beim Einlegen von CD 1
automatisch starten. Falls nicht, kann diese auch durch Anklicken der Datei
Setup.exe gestartet werden.

3
2.1 Internet
Informationsdienste
Zu Beginn wird bei einer automatischen Überprüfung ermittelt, ob die Internet-
Informationsdienste (IIS) auf dem Rechner installiert sind. Dies ist erforderlich,
wenn Webservices entwickelt und getestet werden sollen. IIS wird bei Windows
XP Professional mitgeliefert, muss aber nachträglich installiert werden. Bei
anderen Betriebssystemen ist zu überprüfen, ob IIS Bestandteil der Lieferung
ist. Falls auf die Entwicklung von Webservices verzichtet werden soll, kann die
Installation übersprungen und bei Punkt 2.2 fortgefahren werden.
Die Installation erfolgt im Menü Start -> Systemsteuerung -> Software ->
Windows-Komponenten (Abb. 1):
Abb. 1: Installation weiterer Windows-Komponenten
Zu beachten ist, dass im Untermenü "Details" noch die Frontpage 2000-
Servererweiterungen installiert werden müssen (Abb. 2):

4
Abb. 2: Installation der Frontage-Erweiterungen
2.2 Installation von Visual Studio
Nach einer automatischen Überprüfung fordert der Installationsassistent dazu
auf, das System zu aktualisieren. Klicken Sie den Menüpunkt "Visual Studio
.NET - Erforderliche Komponenten" an (Abb. 3) und legen Sie bei Aufforderung
die CD mit der Aufschrift "Voraussetzungen" ein.
Abb. 3: Installation "Erforderliche Komponenten"

5
Die nun folgenden Dialoge sind alle selbsterklärend. Nachdem der
Lizenzvertrag akzeptiert wurde, werden die erforderlichen Komponenten
automatisch installiert und am Ende die Zusammenfassung angezeigt (Abb. 4):
Abb. 4: Zusammenfassung der installierten Komponenten
Anschließend wird wieder CD1 verlangt und die Installation von Visual Studio
kann durch Anklicken des nächsten Menüpunktes beginnen (Abb. 5):
Abb. 5: Installation von Visual Studio .NET

6
Bitte folgen Sie auch hier wieder den Anweisungen des
Installationsassistenten.
Abschließend sollten noch die Produktdokumentation (MSDN Library) sowie
die verfügbaren Updates und Service Releases installiert werden. Diese
können automatisch über das Internet oder von einem entsprechenden
Datenträger geladen werden, falls verfügbar.
Mit diesem Schritt ist die Installation von Visual Studio abgeschlossen. Die nun
folgenden Kapitel beschäftigen sich mit der Programmierung in C#.

7
3 Grundlagen der Sprache C#
Im Rahmen dieser Arbeit werden einige wichtige Konzepte und Komponenten
der Sprache C# vorgestellt. Sollten nähere Erläuterungen zu hier nicht
angeführten Themen erforderlich sein, so werden diese im weiteren Verlauf
nach Bedarf gegeben oder es wird auf die entsprechenden Quellen verwiesen.
Sämtliche hier angegebenen Quellcode-Beispiele oder entwickelten
Programme sind als Konsolenanwendung erstellt worden, damit auf Aspekte
wie Fenstergestaltung etc. nicht geachtet werden muss.
3.1 Aufbau eines C#-Programmes: Hello World!
In den Dokumentationen zu Programmiersprachen dient sehr häufig ein "Hello
World!"-Programm als Einstieg, daher soll dies auch als erstes Beispiel eines
C#-Programmes dienen. Vorweg sei hier der Quellcode, der 1:1 übernommen
werden kann, und anschließend die nötigen Erläuterungen angegeben:
/* 1 */ using System;
/* 2 */ using System.IO;
/* 3 */
/* 4 */ namespace Application1
/* 5 */ {
/* 6 */
class Class1
/* 7 */
{
/* 8 */
static void Main(string[] args)
/* 9 */
{
/* 10 */
Console.WriteLine("Hello World!");
/* 11 */
}
/* 12 */
}
/* 13 */ }
Code 1: Hello-World-Programm in C#
Erläuterungen:
In Zeile 1 wird die .NET-Klassenbibliothek eingebunden, so dass unter
anderem die elementaren Datentypen verfügbar sind.

8
In Zeile 2 wird der erforderliche Namensraum für die Verwendung des Befehls
Console.WriteLine("Hello World!")
in Zeile 10 eingebunden.
In Zeile 4 wird ein Namensraum für die Applikation festgelegt.
In Zeile 6 wird die erste Klasse des Programms deklariert, in der sich auch die
Funktion
Main()
befindet, die beim Programmstart aufgerufen wird.
In Zeile 8 befindet sich die Hauptfunktion des Programms, welche beim
Programmstart aufgerufen wird. Parameter, die beim Programmstart
übergeben wurden, werden im Array
args
zur Verfügung gestellt.
In Zeile 10 der Text "Hello World!" in der Eingabeaufforderung ausgegeben.
Dieses sehr einfache Programmbeispiel gibt die Zeile "Hallo Welt" in der
Eingabeaufforderung aus. Für komplexere Programme ist eine Einführung in
die Grundlagen der Sprache C# erforderlich, die nun folgen wird.
3.2 Datentypen
"Alleiniger Sinn und Zweck einer Programmiersprache ist die
Datenverarbeitung im eigentlichen Sinne des Wortes" (
1
). Damit Daten
verarbeitet werden können, müssen sie in Variablen oder Konstanten abgelegt
werden. Zu diesem Zweck stellt das .NET-Framework eine Reihe einfacher
sowie komplexer Datentypen zur Verfügung.
Sämtliche in C# verwendeten Variablen müssen vor der ersten Verwendung
deklariert werden. Dies erfolgt ähnlich zu C/C++ durch Angabe des Datentyps
und der Angabe des Bezeichners. Zu beachten ist, dass für die Angabe des
Variablen-Bezeichners nur Buchstaben, Zahlen und der Unterstrich verwendet
werden dürfen. Sonderzeichen oder deutsche Umlaute sind hier nicht erlaubt.
int intX; // Deklaration einer Integer-Variablen
Code 2: Variablen-Deklaration
Nach der Deklaration, die an beliebiger Stelle im Quelltext erfolgen kann, muss
die Variable gegebenenfalls mit einem Wert initialisiert werden, denn eine
automatische Vorbelegung mit einem Wert oder
NULL
erfolgt in C# nicht.
1
[1] Schäpers, Huttary, Bremes: C# Windows und Webprogrammierung mit Visual Studio .NET, Markt und Technik,
2002, S. 163

9
Im Gegensatz zu Variablen können Konstanten nur einmal bei der Deklaration
mit einem Wert belegt werden. Konstanten werden wie Variablen deklariert und
zusätzlich vor der Angabe des Datentyps mit dem Schlüsselwort
const
gekennzeichnet.
const int intY=10;
// Deklaration einer Konstanten
Code 3: Deklaration einer Konstanten
Variablen, die innerhalb des Quellcodes deklariert werden, sind auch nur im
entsprechenden Codeabschnitt gültig, z. B. innerhalb eines Namensraumes
oder einer Kontrollschleife.
Neben der Unterscheidung in Variablen und Konstanten lassen sich auch noch
Werttypen von Verweistypen abgrenzen. Bei Werttypen handelt es sich dabei
um Datentypen, deren tatsächlicher Inhalt in der Variable abgelegt ist. Sie
werden auf dem Programm-Stack gespeichert, während Verweistypen nur
einen Zeiger auf eine Speicheradresse im Heap-Speicher darstellen, in der der
tatsächliche Inhalt abgelegt wird. Da diese Unterscheidung aber hier kaum
Bedeutung hat, wird im Rahmen dieser Einführung nicht weiter auf darauf
eingegangen.
3.2.1 Integrierte Datentypen
Alle in C# integrierten Datentypen stellen vereinfachte Bezeichnungen auf den
entsprechenden Bibliothekstypen dar; so entspricht beispielsweise der
Datentyp int der Klasse System.Int32 oder der Datentyp long der Klasse
System.Int64. Dies bedeutet, dass sämtliche Datentypen direkt oder indirekt
von der Klasse System.Object abgeleitet sind. Insgesamt verfügt C# über 15
integrierte Datentypen, davon 13 Werttypen und zwei Verweistypen (string und
object). Eine Liste aller integrierten Datentypen findet sich in Anhang 1. Weitere
detaillierte Angaben zu den integrierten Datentypen finden sich auf der MSDN-
Website (
2
).
2
MSDN, 14.08.2006,
http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/csref/html/vclrfBuiltinTypes.asp

10
3.2.2 Komplexe Datentypen
Aus den einfachen, integrierten Datentypen lassen sich komplexe Strukturen
bilden, auch Klassen genannt. Alle weiteren Klassen der .NET-
Klassenbibliothek, die nicht zu den integrierten Datentypen gezählt werden,
sowie alle benutzerdefinierten Datentypen können als so genannte komplexe
Datentypen bezeichnet werden. Sie bestehen im Grunde aus Kombinationen
von integrierten Datentypen und den darauf anwendbaren Methoden.
3.3 Klassen
C# ist eine objektorientierte Programmiersprache. Daher gehören Klassen zu
den wichtigsten Elementen dieser Programmiersprache. Die erforderlichen
Begriffe im Zusammenhang mit Klassen, Objekten, Vererbung etc. sind
Bestandteil der Studienhefte GPI6 [3], GPI7 [4] und GPI8 [5] (Objektorientierte
Programmierung Teil 1 - 3) und werden hier als bekannt vorausgesetzt.
Klassen bestehen aus einem statischen und einem dynamischen Bereich.
Diese Bereiche unterscheiden sich durch das Voranstellen des
Schlüsselwortes
static
bei den statischen Elementen. Während die
statischen Elemente über den Aufruf des Klassennamens zugänglich sind,
stehen dynamische Elemente erst nach der Erzeugung eines Objektes mit dem
Befehl
new()
zur Verfügung.
Der allgemeine Aufbau einer Klasse ist analog zum Aufbau, der aus der
Programmierung mit C++ bekannt ist:
[Modifizierer]class Name [:{Basisklasse|Interface[, ...]}]{}
Bestandteile einer Klasse sind aus anderen Programmiersprachen bekannte
Elemente wie Konstanten, Variablen, Konstruktoren, Destruktor, Eigenschaften
als spezielle Methoden, Methoden im eigentlichen Sinne und Operatoren. Ein
ausführliches Beispiel einer Klasse befindet sich im Anhang 2.

11
3.3.1 Modifizierer
In C# sind die bekannten Modifizierer
public
,
protected
und
private
erlaubt. Zusätzlich gibt es die Möglichkeit, eine Klasse folgendermaßen zu
kennzeichnen:
-
internal:
die Klasse ist auf Projektebene sichtbar.
-
sealed:
die Klasse kann nicht mehr abgeleitet werden.
-
abstract
: abstrakte Klasse, die nicht instanziiert werden kann.
3.3.2 Attribute
Das Attribut
[STAThread]
wird von den meisten Entwicklungsumgebungen
automatisch eingefügt und kennzeichnet die Anwendung als "singlethreaded".
Bei der Entwicklung eines Webservices werden die Attribute
[WebService]
und
[WebMethod]
verwendet, um eine Methode für Clientaufrufe zugänglich
zu machen. Weitere Details zu den Attributen eines WebServices finden sich
unter (
3
).
3.3.3 Methoden
Natürlich kommen Klassen auch in C# nicht ohne die zugehörigen Methoden
aus. Auch hier kann unterschieden werden zwischen dem Teil der
dynamischen und der statischen Instanz, also jene Methoden, die als
static
gekennzeichnet sind und nur in Verbindung mit dem Klassennamen aufgerufen
werden können. Diesen statischen Methoden stehen nur die Konstanten und
Variablen zur Verfügung, die ihrerseits mit dem Schlüsselwort
static
für die
statische Instanz deklariert wurden.
Die dynamischen Methoden sind erst dann verfügbar, wenn von einer Klasse
eine Instanz, also ein Objekt, gebildet wurde. Dynamische Methoden können
auch auf statische Variablen und Konstanten zugreifen.
Wie auch aus anderen Programmiersprachen bekannt, werden Methoden
durch Angabe des Wortes
static
(optional, nur für statische Methoden),
einem Modifizierer, einer Angabe über den Datentyp des Rückgabewertes,
3
MSDN, 14.08.2006,
http://www.microsoft.com/germany/msdn/library/xmlwebservices/WebServicesAuchEineEinstellungssache.mspx?mfr=tr
ue

12
dem Methodennamen gefolgt von der Parameterliste und einem Codeblock
deklariert. Auch überladene Methoden, die den gleichen Methodennamen
haben, sich aber in der Anzahl oder Art der Übergabeparameter unterscheiden,
können erzeugt werden.
public int addiere( int x, int y )
{
return x + y;
}
Code 4: eine komplette Methode
Standardmäßig werden Parameter als Call-by-Value-Parameter übergeben.
Eine Besonderheit bietet die Möglichkeit, Parameter mit den Schlüsselwörtern
ref
oder
out
zu kennzeichnen: in beiden Fällen wird die jeweilige Variable als
Referenz übergeben, d. h. der Inhalt der Variablen kann verändert werden.
Dies ist beispielsweise sinnvoll, um zwei oder mehrere Parameter als
Rückgabewerte zu verwenden. Im Gegensatz zu
ref
muss die Variable für
einen
out
-Parameter vor dem Methodenaufruf nicht initialisiert sein. Sollte
diese in der Methode allerdings nicht gesetzt werden, wird das durch einen
Compilerfehler gemeldet. Um diese Technik anzuwenden, müssen sowohl bei
der Deklaration als auch beim Aufruf der Methode die Schlüsselwörter
ref
bzw.
out
angegeben werden.
Schließlich ist hier noch der Mechanismus
override
zu erwähnen, mit dessen
Hilfe Methoden überschrieben, also neu implementiert werden können, die in
der Basisklasse als
virtual
gekennzeichnet sind. Da die ursprüngliche
Methode der Basisklasse aber noch immer aufrufbar ist, sollte dieser
Mechanismus eigentlich nicht mit "überschreiben", sondern eher als
"verdecken" übersetzt werden. Soll eine virtuelle Methode verdeckt werden, so
muss bei der Deklaration der neuen Methode dieses Schlüsselwort
override
angegeben werden.

13
3.3.4 Konstruktor
Wie aus anderen objektorientierten Programmiersprachen geläufig, so ist es
auch in C# möglich, Konstruktoren zu definieren. Dabei ist zu beachten, dass
es einen (und nur einen) statischen, parameterlosen Konstruktor geben kann,
der bei der Erstellung der ersten Instanz eines Objektes automatisch
ausgeführt wird. Ein explizites Aufrufen des statischen Konstruktors ist nicht
möglich. Weiterhin kann es mehrere dynamische Konstruktoren geben, die
beim Erzeugen eines Objektes der Klasse durch den Operator
new
aufgerufen
werden. Diese Konstruktoren unterscheiden sich durch die Parameterliste.
3.3.5 Destruktor
Der Destruktor wird in C# ähnlich wie in C++ durch Angabe eines Tilde-
Zeichens, gefolgt vom Klassennamen, angegeben. Modifizierer, Rückgabewert
und Parameter können dabei nicht verwendet werden. Der Destruktor kann
nicht explizit aufgerufen werden, sondern wird von der Laufzeitumgebung
automatisch ausgeführt, wenn das Objekt nicht mehr benötigt wird.
3.3.6 Eigenschaften
Eine weitere spezielle Form der Methoden bilden die Eigenschaften oder
"Properties". Diese unterteilen sich in einen
set
- und einen
get
-Teil, durch die
auf Private-Member einer Klasse zugegriffen werden kann. Gleichzeitig bieten
sie die Möglichkeit, den Gültigkeitsbereich und die Integrität der Variablen zu
sichern, sowie Schreib- und Lesesperren zu realisieren, indem der übergebene
Wert überprüft wird, bevor er endgültig einer Variablen zugewiesen wird. Beim
Setzen der Eigenschaft wird automatisch der
set
-Teil, beim Auslesen der
get
-
Teil der Eigenschaft aufgerufen. Innerhalb des
set
-Teiles wird auf den
übergebenen Wert durch das Schlüsselwort
value
zugegriffen. Dieser kann
somit der entsprechenden Variablen zugewiesen werden.
3.3.7 Delegaten
Eine Besonderheit in C# sind Delegaten, die den Zeigern auf Funktionen aus
C/C++ vergleichbar, jedoch wesentlich einfacher zu handhaben sind.

14
Delegaten werden ähnlich wie Klassen gehandhabt. Dem Konstruktor wird der
Name der Funktion übergeben, die durch den Delegaten aufgerufen werden
soll. Dies kann eine statische oder auch eine dynamische Methode mit der
identischen Parameterliste des Delegaten sein. Delegaten können auf der
Ebene eines Namensraumes oder innerhalb einer Klasse deklariert werden. Im
folgenden Beispiel wird dem Delegaten
dgMethode
die Methode
anyMethod()
des Objektes
obj
zugewiesen. Das Klammernpaar der
zugewiesenen Methode wird dabei weggelassen:
// Deklaration des Delegaten:
public delegate myDelegate();
(...)
// Zuweisung einer Methode an den Delegaten:
myDelegate dgMethode = new myDelegate( obj.anyMethod );
// Aufruf der Methode über den Delegaten:
dgMethode();
Code 5: Deklaration eines Delegaten
3.3.8 Vererbung
Als objektorientierte Programmiersprache und Teil des .NET-Frameworks
unterstützt C# das Konzept der Vererbung. Dabei kann eine Klasse immer nur
eine einzige Basisklasse haben, Mehrfachvererbung im eigentlichen Sinne ist
damit nicht möglich. C# bietet jedoch die Möglichkeit der
Schnittstellenvererbung, das bedeutet, die weiteren Klassen, von denen geerbt
wird, müssen durch das Schlüsselwort
interface
als Schnittstellenklassen
gekennzeichnet sein. Sie bestehen nur aus Methodendeklarationen, die von
der erbenden Klasse vollständig implementiert werden müssen.
Als Basisklassen können nur solche Klassen verwendet werden, die mit dem
Schlüsselwort
class
gekennzeichnet und nicht mit dem Modifizierer
sealed
für weitere Vererbung gesperrt sind.
Im folgenden Beispiel erbt die Klasse meineKlasse von der Klasse Basisklasse
sowie die Schnittstellen der Interface-Klasse Interface1 (Code 6):

15
class meineKlasse : Basisklasse, Interface1 {...}
Code 6: Vererbung von einer Klasse und einer Interface-Klasse
3.3.9 Konstanten
Konstanten stellen Variablen dar, die nur ein einziges Mal mit einem Wert
belegt werden können, und zwar bei der Deklaration. Sie sind gekennzeichnet
durch das Schlüsselwort
const
. Da Konstanten Bestandteil des statischen
Teils einer Klasse sind, können sie auch nur als solche verwendet werden; der
Aufruf über ein Objekt der Klasse würde eine Compiler-Fehlermeldung
erzeugen.
const int myKonstante = 123;
Code 7: Deklaration einer Konstanten
3.3.10 Variablen
Variablen sind Klassenelemente, die beliebige Daten beinhalten. Sie werden
durch Angabe eines Modifizierers und Datentyps, gefolgt von einem
Bezeichner, erzeugt. Nähere Details finden sich in Kapitel 3.2.
3.4 Namensräume
Namensräume ("Namespaces") dienen in C# der Organisation der Datentypen.
Jeder Datentyp gehört einem Namensraum an, die ihrerseits hierarchisch
strukturiert sein können. Es kann also Namensräume mit weiteren
untergeordneten Namensräumen geben. Eine Zugriffsbeschränkung auf
bestimmte Klassen oder Variablen ist mit Hilfe der Namensräume nicht
möglich.
Durch das Konzept der Namensräume wird es möglich, unterschiedliche
Datentypen in verschiedenen Programmbereichen mit gleichen Bezeichnungen
zu benennen, ohne dadurch Konflikte zu verursachen. Auf diese Elemente
kann dann durch Angabe des Namensraumes und der Bezeichnung des

16
Datentyps zugegriffen werden. Variablen- und Konstantendefinitionen sind auf
Ebene der Namensräume nicht erlaubt, dies muss jeweils innerhalb einer
Klasse stattfinden. Die Syntax für einen Namensraum lautet:
namespace Namensraum1 { class1{...} }
// gleiche Klassenbezeichnung, aber anderer Namensraum:
namespace Namensraum2 { class1{...} }
Code 8: Namensräume
Durch die Verwendung der Anweisung
using
ist es möglich, den
entsprechenden Namensraum für den Zugriff auf dessen Elemente "fest"
einzustellen:
// Zugriff auf Namensräume:
Namensraum1.class1 objekt1 = new Namensraum1.class1();
Namensraum2.class1 objekt2 = new Namensraum2.class1();
// alternativ:
using Namensraum1;
class1 objekt1 = new Namensraum1.class1();
Code 9: Verwendung von Namensräumen
Weitere Beispiele für verschachtelte Namensräume finden sich im Anhang 3.
3.5 Kontrollstrukturen
Kontrollstrukturen dienen dazu, die Programmlogik abzubilden und die
Ausführung der einzelnen Programmteile zu kontrollieren. In C# sind die
verfügbaren Kontrollstrukturen sehr stark an C/C++ angelehnt. Neu ist bei allen
Kontrollstrukturen, dass anstelle des booleschen Ausdrucks keine Zuweisung
mehr gemacht werden kann, die in C/C++ immer wieder zu Fehlern geführt
hatte. Es muss stattdessen immer ein Operator, ein boolescher Ausdruck oder

17
eine Methode mit dem Rückgabetyp
bool
verwendet werden. Folgende
Variante ist also nicht mehr möglich:
if ( x = 5 ) // nicht möglich, erzeugt Compilerfehler.
{ /* Anweisungen*/ }
if ( x == 5 ) // korrekt
{ /* Anweisungen*/ }
Code 10: boolesche Bedingung einer if-Struktur
3.5.1 bedingte Verzweigung
Bedingte Verzweigungen kann man als
if...else
-Verzweigung oder als
Mehrfachverzweigung durch
switch...case
-Verzweigungen realisieren.
Syntax einer if-Verzweigung
Wie aus C/C++ bekannt, werden
if
-Verzweigungen durch das Schlüsselwort
if
und einem folgenden booleschen Ausdruck gebildet. Die Angabe des
else-if
bzw.
else
-Zweiges ist optional. Falls der Anweisungsblock nur aus
einer Zeile besteht, so können die geschweiften Klammern entfallen.
if ( boolescher Ausdruck )
{ /* Anweisungsblock*/ }
[else if ( boolescher Ausdruck )
{ /* Anweisungsblock*/ }]
[else
{ /* Anweisungsblock*/ }]
Code 11: Syntax einer if-Struktur

Details

Seiten
Erscheinungsform
Originalausgabe
Jahr
2007
ISBN (eBook)
9783956361937
ISBN (Paperback)
9783836601825
Dateigröße
587 KB
Sprache
Deutsch
Institution / Hochschule
Private FernFachhochschule Darmstadt; Standort Pfungstadt – Informatik
Erscheinungsdatum
2007 (Februar)
Note
1,3
Schlagworte
client-server sockets remoting webservice
Zurück

Titel: Methodische Aufbereitung von Entwicklungsumgebungen für verteilte Anwendungen
book preview page numper 1
book preview page numper 2
book preview page numper 3
book preview page numper 4
book preview page numper 5
book preview page numper 6
book preview page numper 7
book preview page numper 8
book preview page numper 9
book preview page numper 10
book preview page numper 11
book preview page numper 12
book preview page numper 13
book preview page numper 14
book preview page numper 15
book preview page numper 16
book preview page numper 17
book preview page numper 18
book preview page numper 19
book preview page numper 20
book preview page numper 21
98 Seiten
Cookie-Einstellungen