![]() |
Namespaces
Moin,
mag mir jemand erklären was man unter namespaces zu verstehen hat? Ich habe zwar schon in meinem Buch gelesen, aber ich werde nicht ganz schlau draus, in selbigem sahen die nämlich fast aus wie Klassen. Die Frage bezieht sich nicht unbedingt auf Delphi, sondern auf jede X-beliebige Sprache. |
Re: Namespaces
Imho gibt es Namespaces nur in C# (eventuell auch Java, aber Java kenn ich persönlich nicht). Man kann sie ähnlich wie eine Delphi-Unit ansehen: Man kann in einer Datei Namespaces eintragen (muss man sogar). Dort kommt dann als nächstes die Klasse (oder ein weiterer Namespace). Man kann am Ende die Namespaces in der uses/using-Klausel aufnehmen, um damit zu arbeiten.
Der Unterschied zu Units besteht imho darin, dass in einer Datei beliebig viele Namespaces stehen können, und dass man Namespaces imho verschachteln kann. Schau dir mal einen C# oder D.NET-Source an. Da steht oben immer
Code:
Das sind Namespaces, die da eingetragen werden. Im .NET-Framework werden hunderte Namespaces mitgeliefert.
using System;
using System.Bla; //edit: Ich seh grad, Namespaces gibt es in verschiedenen Sprachen. In .NET kommt man aber beispielsweise nicht drum herum, welche zu benutzen ;) Berichtigt mich übrigens, wenn ich irgendwo falsch liegen sollte ;) |
Re: Namespaces
Moin Malo,
in C++ gibt es auch Namespaces und in Delphi seit 2005 auch. Bei deinem Beispiel frage ich mich nur, wieso nicht alle normal in "System" steht (also ohne namespaces), dann könnte man sich doch das doppelte "using" sparen, oder? |
Re: Namespaces
Du kannst ebenfalls in C/C++ eigene Namespaces erstellen. Die Einbindung erfolgt dann über:
Code:
using namespace ???;
|
Re: Namespaces
Ich glaube, die einfachste Erklärung wäre ein Vergleich zu den Units in Delphi32.
Einziger Unterschied ist, dass sich ein namepspace nicht auf eine Source-Datei (Unit) beschränkt.
Delphi-Quellcode:
Man könnte Class2 auch ineine andere Datei packen ohne das sich der Code ändern würde:
namespace Miep;
interface type Class1 = public class end; Class2 = public class(Class1) end; implementation end.
Delphi-Quellcode:
namespace Miep;
interface type Class1 = public class end; implementation end.
Delphi-Quellcode:
namespace Miep;
interface type Class2 = public class(Class1) end; implementation end. |
Re: Namespaces
Was dazu kommt ist, das Namespaces eine Hierarchie darstellen. So kann man seine Klassen in den Namespaces einfach einsortieren und findet sie somit schnell wieder.
Beispiel-Namespaces bei mir: gwp.framework.database, gwp.framework.security, gwp.webshop.session Wie man sieht fangen alle Namespaces bei mir mit dem Kürzel für meine Firma an, dann kommt der Bereich zu dem die Klassen gehören (das zurgunde liegende Framwork oder eben ein spezifisches Projekt) und dann der Teil des Projektes, in dem die dort liegenden Klassen arbeiten. Will ich jetzt per WMI Daten auslesen und zur Auswertung wo ablegen dann suche ich meine Klassen aus gwp.framework.wmi und gwp.framework.database zusammen. Jeder Namespace landet bei mir übrigens zudem noch in einer eigenen Assembly, so dass ich Teile die verändert werden ganz einfach nur per einer .dll austauschen kann ohne das es den Rest der Anwendungen betrifft. |
Re: Namespaces
Zitat:
System.X gehört nicht zu System und System.X.Y nicht zu System.X. Das sind alles eigene namespaces. Aber natürlich legt man sie pseudo-hierarchisch an, da das ungemein intuitiver ist. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz