Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Namespaces (https://www.delphipraxis.net/49812-namespaces.html)

Pseudemys Nelsoni 16. Jul 2005 10:38


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.

malo 16. Jul 2005 10:47

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:
using System;
using System.Bla;
Das sind Namespaces, die da eingetragen werden. Im .NET-Framework werden hunderte Namespaces mitgeliefert.

//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 ;)

Pseudemys Nelsoni 16. Jul 2005 10:54

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?

Filou 16. Jul 2005 10:59

Re: Namespaces
 
Du kannst ebenfalls in C/C++ eigene Namespaces erstellen. Die Einbindung erfolgt dann über:

Code:
using namespace ???;

Robert_G 16. Jul 2005 11:13

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:
namespace Miep;

interface

type
  Class1 = public class
  end;
 
  Class2 = public class(Class1)
  end;

implementation

end.
Man könnte Class2 auch ineine andere Datei packen ohne das sich der Code ändern würde:
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.

Phoenix 16. Jul 2005 11:43

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.

Robert_G 16. Jul 2005 11:54

Re: Namespaces
 
Zitat:

Zitat von Phoenix
Was dazu kommt ist, das Namespaces eine Hierarchie darstellen.

Eigentlich nicht. ;)
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 07:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz