Praxisorientierte Einführung in C++ Lektion: "Namespaces"

Ähnliche Dokumente
Praxisorientierte Einführung in C++ Lektion: "Static Members"

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Praxisorientierte Einführung in C++ Lektion: "Das Schlüsselwort explicit"

Praxisorientierte Einführung in C++ Lektion: "Kontrollstrukturen"

Praxisorientierte Einführung in C++ Lektion: "Vererbung"

Einführung in die Programmierung Wintersemester 2016/17

7. Übung Informatik II - Objektorientierte Programmierung

Angewandte Mathematik und Programmierung

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

Praxisorientierte Einführung in C++ Lektion: "Dynamische Speicherverwaltung"

Polymorphismus 44. Function.hpp. #include <string>

Hydroinformatik I: Klassen

Praxisorientierte Einführung in C++ Lektion: "Klassen Templates"

Einführung in die Programmierung

Polymorphismus 179. Function.h. #include <string>

Hydroinformatik I: Klassen

Objektorientierte Programmierung mit C++ SS 2007

Einführung in die Programmierung Wintersemester 2008/09

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

C++ - Variablen: Gültigkeit - Sichtbarkeit

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Praxisorientierte Einführung in C++ Lektion: "Der C++-11 Standard"

Praxisorientierte Einführung in C++ Lektion: "C++ Cast Operatoren"

Praxisorientierte Einführung in C++ Lektion: "Exceptions"

0. Einführung & Motivation

Vergleich verschiedener OO-Programmiersprachen

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Einstieg in die Informatik mit Java

Kapitel 5 Deklaration und Sichtbarkeitsbereich

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

Praxisorientierte Einführung in C++ Lektion: "Smart-Pointer"

XML-Namensräume. Marc Monecke

c) Zur Ausgabe der Transaktion soll statt print der Operator << verwendet werden.geben Sie die dazu nötigen Änderungen an.

Programmierkurs C++ Kapitel 6 Module Seite 1

Java Einführung Methoden. Kapitel 6

Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Vorlesungsprüfung Programmiersprache 1

Einführung in die Programmierung

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Kontrollstrukturen -- Schleifen und Wiederholungen

In C++ kann man fünf Teilsprachen, die bezüglich Syntax und Semantik differieren, unterscheiden. Objektorientierte Erweiterungen von C

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

Praxisorientierte Einführung in C++ Lektion: "Klassen und Strukturen"

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

Praxisorientierte Einführung in C++ Lektion: "Allgemeines"

Einführung in die Programmiersprache C

Objektorientierte Programmierung mit C++

Verwendung von Klassen in C++

Einführung in die C++ Programmierung für Ingenieure

Einführung in C ++ und die Objektorientierte Programierung

Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Hello World! Eine Einführung in das Programmieren Das erste Programm

Objektorientiertes Programmieren für Ingenieure

Grundlagen. Kapitel 1

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Wo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte

Einführung in die Programmiersprache C

1.5. Strukturierte Anweisungen

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Überladen von Operatoren

Stephan Brumme, SST, 3.FS, Matrikelnr PrimitiveTypes. Ordinal Boolean Real String. ns-opener

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Programmieren in C++ Templates

Grundlagen der Informatik 4. Kontrollstrukturen I

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 23

Die erste C++ Funktion

Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Objektorientierung Grundlagen

Repetitorium Informatik (Java)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Klassen. C++ Übung am 02. Juni 2016

Kurze Einführung in die Programmiersprache C++ und in Root

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

Grundlagen der Informatik 6. Arrays I

SimpleStat mit Methoden

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

VORBEMERKUNGEN ZUM INFORMATIK-KURS : PROGRAMMIEREN MIT C++

16. Structs und Klassen I. Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung, Klassen-Typen

Informatik I (D-MAVT)

8. Referenzen und Zeiger

Transkript:

Praxisorientierte Einführung in C++ Lektion: "Namespaces" Christof Elbrechter Neuroinformatics Group, CITEC May 28, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 1 / 15

Table of Contents Allgemeines Syntax Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 2 / 15

Allgemeines Motivation C++ - One Denition Rule In komplexer Software Namenskonikte möglich Insbesondere bei Verwendung von Bibliotheken Guter Stil in Programmiersprachen wie C: Alle Bezeichner in eigener Bibliothek mit möglichst eindeutigem Prex versehen void superlib init (); void superlib create foo (); Lösung in C++: Namensräume Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 3 / 15

Syntax Deklarationen und Denitionen in Namensraum Schlüsselwort namespace Gefolgt von Block, der Deklarationen und Denitionen enthält Kein Semikolon am Ende namespace superlib { int x; class Foo { ; Methoden- und Funktionsdenitionen auch ausserhalb des Blocks möglich Dann muss der Namensraum explizit genannt werden Hierzu wird :: verwendet, analog zu Klassen Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 4 / 15

Syntax // player.h namespace projekt xyz { class Player { public: Player(); Player(); ; // player.cpp namespace projekt xyz { Player::Player() { projekt xzy ::Player:: Player() { Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 5 / 15

Syntax Benutzung von Bezeichnern aus Namensräumen Wir haben schon ein paar Beispiele gesehen std::cin, std::cout, std::error, std:: string Generelle Regel Sei Y ein Bezeichner im Namensraum X, dann ist Bezeichner X::Y Das kann manchmal mühselig sein, daher: using X::Y; using namespace X; Beispiel: using std::cout; using namespace std; Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 6 / 15

Beispiel für using Syntax #include " player.h" int main() { projekt xyz :: Player myplayer; #include " player.h" using projekt xyz :: Player; int main() { Player myplayer; #include " player.h" using namespace projekt xyz; int main() { Player myplayer; Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 7 / 15

Innerhalb eines namespace X-Blocks können Bezeichner aus dem Namespace ohne X::-Prex benutzt werden Bei Konikten wird Bezeichner aus X bevorzugt Analog zu Klassen/Funktionen/Blöcken Wenn gewünscht, kann Name auch explizit per X:: genannt werden Wenn Bezeichner aus anderem Namensraum Y gewünscht: Expliziter Prex Y:: Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 8 / 15

Beispiel namespace projekt xyz { void foo() { void bar() { foo(); // Aufruf ohne Prefix projekt xzy :: Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 9 / 15

Noch ein Beispiel // player.h #include <iostream> namespace projekt xyz { int cout; class Player { public: Player() { cout = 1; int projekt xyz = 1; std::cout << cout; ; Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 10 / 15

Verschachtelte Namensräume Namensräume können verschachtelt sein namespace X { namespace Y { int x; X::Y::x = 0; Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 11 / 15

Umbenennung eines Namensraums Namensräume, besonders verschachtelte, können unhandlich werden Umbennenung möglich namespace new name = old name; Beispiel namespace xyz = projekt xyz; namespace abc = A::B::C; Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 12 / 15

Anonyme Namensräume Anonyme Namensräume Beschränken Sichtbarkeit eines Bezeichners auf aktuelle Quellcode-Datei Geben Bezeichnern aus anonymen Namensraum Vorrang (analog zu benamsten Namensräumen) // player.h #include <iostream> using namespace std; namespace { int cout; foo() { std::cout << cout << endl; Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 13 / 15

Anonyme Namensräume Damit können auch die Sichtbarkeit von Symbolen von lokal verwendeten Hilfklassen auf eine Compilation-Unit beschränkt werden // something.cpp namespace { struct MyUtil{ MyUtil(){ ; void Something::foo(){ MyUtil x; Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 14 / 15

Expliziter Zugri auf globalen Namensraum Globaler Namensraum ist wie andere Namensräume, aber mit Prex :: Beispiel #include <iostream> void f() { namespace X { void f() { ::f(); int main() { X::f(); Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 15 / 15