Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates."—  Präsentation transkript:

1 Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates -Klasse,Interface, Struct : Deklarationen von Membervariablen, Methoden,... -Enum:Deklarationen von Enumerationskonstanten -Block:Deklarationen lokaler Variablen © 2006 Dagmar Walddobler 1 C# Gültigkeitsbereich - Deklarationsraum

2 Deklarationsregeln -Kein Name darf in einem Gültigkeitsbereich (=Deklarationsraum) mehrfach deklariert werden. -Er darf aber in inneren Deklarationsbereichen neu deklariert werden (außer in inneren Anweisungsblöcken). Sichtbarkeitsregeln -Ein Name ist in seinem ganzen Deklarationsraum sichtbar, lokale Variablen allerdings erst ab ihrer Deklaration. -Deklarationen in inneren Deklarationsräumen verdecken gleichnamige Deklarationen aus äußeren Deklarationsräumen. -Kein Name ist außerhalb seines Deklarationsraums sichtbar. -Sichtbarkeit kann mit Attributen eingeschränkt werden (private, protected, internal,...) © 2006 Dagmar Walddobler 2 C# Gültigkeitsbereich - Regeln

3 Verschiedene Arten von Blöcken void fkt (int x) // Methodenblock {... lokale Variablen... if (...) // if- Block... lokale Variablen... } for (int i = 0;...) // for-Block {... lokale Variablen... } } Gültigkeitsbereich eines Blocks schließt Gültigkeitsbereich geschachtelter Blöcke ein. Funktions-Paramater gehören zum Gültigkeitsbereich des Methodenblocks Deklaration einer Laufvariable gehört zum Gültigkeitsbereich des for-Blocks. Deklaration einer lokalen Variablen muss ihrer Verwendung vorausgehen.. © 2006 Dagmar Walddobler 3 C# Gültigkeitsbereich Block

4 void fkt (int a) { int b; if (...) { int b;// Fehler: b bereits in äußerem Block deklariert int c; int d;... } else { int a; // Fehler: a bereits im äußeren Block deklariert (Parameter) int d; // ok: keine Überschneidung mit d im if-Block } for (int i = 0;...) {...} for (int i = 0;...) {...}// ok: keine Überschneidung mit i aus letzter Schleife int c;// Fehler: c bereits in einem inneren Blocx deklariext } © 2006 Dagmar Walddobler 4 C# Deklaration lokaler Variablen

5 Ein Namensraum (Namespace) bezeichnet einen G ü ltigkeitsbereich f ü r Klassen. Innerhalb eines Namensraums k ö nnen mehrere Klassen oder sogar weitere Namensr ä ume deklariert werden. Dabei ist ein Namensraum nicht zwangsl ä ufig auf eine Datei beschr ä nkt, innerhalb einer Datei k ö nnen mehrere Namensr ä ume deklariert werden, ebenso ist es m ö glich, einen Namensraum ü ber zwei oder mehrere Dateien hinweg zu deklarieren. Namensräume deklarieren Die Deklaration eines Namensraums geschieht ü ber das reservierte Wort namespace. Darauf folgen geschweifte Klammern, die den G ü ltigkeitsbereich des Namensraums angeben. In einem Namensraum werden nur Klassen deklariert, keine Methoden oder Variablen – diese geh ö ren dann in den G ü ltigkeitsbereich der Klasse. © 2006 Dagmar Walddobler 5 C# Gültigkeitsbereich: Namespace

6 Die Deklaration eines Namensraums mit der Bezeichnung Ctitel w ü rde also wie folgt aussehen: namespace Figuren { //Hier die Deklarationen innerhalb des Namensraums } Wenn die Datei f ü r weitere Klassen nicht ausreicht oder zu un ü bersichtlich werden w ü rde, kann in einer weiteren Datei der gleiche Namensraum deklariert werden. Beide Dateien zusammen wirken dann wie ein Namensraum. © 2006 Dagmar Walddobler 6 C# Gültigkeitsbereich: Namespace

7 Verschachtelung von Namensr ä umen Namensr ä ume k ö nnen auch verschachtelt werden. Die Bezeichner des ü bergeordneten und des untergeordneten Namensraums werden dann mit einem Punkt getrennt. 1.M ö glichkeit: namespace Figuren { //Hier die Deklarationen für Figuren namespace Zweidim { //Hier die Deklarationen für Figuren.Zweidim } © 2006 Dagmar Walddobler 7 C# Gültigkeitsbereich: Namespace

8 Verwenden von Namensräumen Die erste M ö glichkeit besteht darin, den Bezeichner des Namensraums vor den Bezeichner der Klasse zu schreiben und beide mit einem Punkt zu trennen: Figuren.CSomeClass.fkt(); Die zweite M ö glichkeit ist die, den gesamten Namensraum einzubinden, wodurch der Zugriff auf alle darin enthaltenen Klassen ohne explizite Angabe des Namensraum- Bezeichners m ö glich ist. Dies wird bewirkt durch das reservierte Wort using, (normalerweise am Anfang eines Programms bzw. einer Datei): using Figuren; using Figuren.Zweidim; CSomeClass.fkt(); Deklariert man keinen eigenen Namensraum, sind alle Klassen im so genannten globalen Namensraum deklariert. Dieser ist stets vorhanden. Bei gr öß eren Applikationen ist es jedoch sinnvoll, eigene Namensr ä ume zu deklarieren. © 2006 Dagmar Walddobler 8 C# Gültigkeitsbereich: Namespace

9 File: XXX.cs File: YYY.cs Gleichnamige Namespaces in verschiedenen Dateien bilden gemeinsamen Deklarationsraum Eingeschachtelte Namespaces bilden eigenen Deklarationsraum namespace A {... Classes Interfaces Structs Enums Delegates... } namespace B {// voller Name: A.B... } namespace A {... } namespace B {...} namespace C {...} © 2006 Dagmar Walddobler 9 C# Gültigkeitsbereich: Namespace

10 Fremde Namespaces müssen entweder mitusingimportiert oder als Qualifikation vor verwendeten Namen geschrieben werden Fast jedes Programm benötigt Namespace System using System; namespace Util.Figures { public class Rect {...} public class Circle {...} } namespace Util.Figures { public class Triangle {...} } Color.csFigures.csTriangle.cs namespace Util { public enum Color {...} } using Util.Figures; class Test { Rect r;// Benutzung ohne Qualifikation (weil using Util.Figures) Triangle t; Util.Color c;// Benutzung mit Qualifikation } © 2006 Dagmar Walddobler 10 C# Benutzung fremder Namespaces

11 C#Java Datei kann mehrere Namespaces enthaltenDatei kann nur 1 Paketangabe enthalten xxx.csxxx.java namespace A {...}package A; namespace B {...}... namespace C {...}... Namespaces werden nicht aufPakete werden auf Verzeichnisse Verzeichnisse abgebildetabgebildet xxx.csC.java namespace A {package A; class C {...} } Samples xxx.csA C.java C# Namespaces vs Java-Pakete (Teil 1) 11 © 2006 Dagmar Walddobler

12 C#Java Es werdenNamespacesimportiertEs werdenKlassenimportiert using System;import java.util.LinkedList; import java.awt.*; NS werden in andere NS importiertKlassen werden in Dateien importiert namespace A {import java.util.LinkedList; using C;// gilt nur in dieser Datei } namespace B { using D; } Alias-Namen möglich Java kennt Sichtbarkeit innerhalb Paket using F = System.Windows.Forms;... F.Button b; package A; class C { void f() {...}// package } C# kennt Sichtbarkeit in Assembly (!= Namespace) © 2006 Dagmar Walddobler 12 C# Namespaces vs Java-Pakete (Teil 2)


Herunterladen ppt "Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates."

Ähnliche Präsentationen


Google-Anzeigen