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

Slides:



Advertisements
Ähnliche Präsentationen
Objektorientierte Programmierung
Advertisements

Java Beans von Raoul Schneider.
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
Objektorientierte Programmierung
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Objektorientierte Programmierung
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
C++ Vererbung und Polymorphie
DVG Klassen und Objekte
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Struktogramme IF-ELSE FOR – Schleife
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Grundkonzepte Java - Klassendefinition
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Entwurfs- und Implementationsdiagramme
Repetitorium PG : Gültigkeit, Sichtbarkeit & Operatorüberladung FH-Darmstadt, FB Informatik.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Programmierung 1. Einführung Seite 1
Unterprogramme in JAVA
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Programmiervorkurs WS 2014/15 Methoden
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
early binding (frühe Bindung) late binding (späte Bindung)
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs Übung Besprechung der Hausaufgabe
Erweiterte Zuweisungskompatibilität. Wie kann man Objekte verschiedener Klassen einer Klassenhierarchie einander zuweisen ?
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Namensräume (namespaces). verwendet man umfangreiche eigene und fremde Bibliotheken (Sammlungen von Funktionen) so ist die Wahrscheinlichkeit groß, daß.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Einführung in die Programmierung mit Java
Die Struktur einer Java-Klasse
Einführung in die Programmierung
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Einführung in die Programmierung
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
Einführung in die Programmierung
 Präsentation transkript:

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

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

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

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

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

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

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

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

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

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

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

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)