Laden...

OOP Gültigkeitsbereich von Variablen

Erstellt von Wolf_maYer vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.199 Views
Wolf_maYer Themenstarter:in
286 Beiträge seit 2006
vor 17 Jahren
OOP Gültigkeitsbereich von Variablen

Hallo,
wie man schon am Titel erkennt, bin ich nicht der erfahrenste Programmierer was OOP angeht. Deswegen die Frage:

Ist es möglich in verschiedenen Datein folgendes Scenario aufzubauen:

Datei base.cs


namespace BaseNamespace.Application
{
    public class DB
    {
          private System.String User;
          private System.String Password;
    }
}

Datei Connection.cs


namespace BaseNamespace.Application.DB
{
    public class Connection
    {
          public Void Connection()
          {
                private System.String DBUser;
                private System.String DBPassword;
                DBUser = Base.User;
                DBPassword = Base.Password
          }
    }
}

Ich bin mir da nicht sicher und muss auch ehrlich zugeben, dass ich es nicht ausprobiert habe.

Es würde mich trotzdem sehr freuen, wenn Ihr mir dazu ein Statement geben könntet.

Lieben Gruß, maYer

6.862 Beiträge seit 2003
vor 17 Jahren

Ähh, was versuchst du da denn überhaupt? Da könnt man jetzt ne Menge reininterpretieren.

Baka wa shinanakya naoranai.

Mein XING Profil.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Wolf_maYer,

was hat der Code mit dem Titel zu tun?

herbivore

Wolf_maYer Themenstarter:in
286 Beiträge seit 2006
vor 17 Jahren

Hi Talla und herbivore,

@talla:
ich möchte in einer Klasse auf Variablen zugreifen, die ich in einer anderen Klasse setze. Diese Klassen sind beide in einem Namespace und haben sonst keinen Bezug zueinander.

In meinem Vorgang möchte in Klasse 1 die Variablen setzen und in Klasse 2 später abfragen.

Die Variablen sollen allerdings private sein, damit nicht alle sehen, wo und wie ich sie setze.

Da ich allerdings einen Ort brauche, an dem sie hinterlegt sind, habe ich mir überlegt, ob ich nicht den darüberliegenden Namespace als Klasse definieren kann und die Werte dort ablegen kann.

@herbivore:
Ich möchte wissen, ob die Variablen, wenn ich sie so in der Oberklasse(Namespace) DB deklariere in den Unterklassen gültig sind. Wenn ja, wie kann ich darauf zugreifen?

Gruß, maYer

1.274 Beiträge seit 2005
vor 17 Jahren

Ich glaub er spricht von Vererbung oder täusche ich mich?

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von Wolf_maYer
In meinem Vorgang möchte in Klasse 1 die Variablen setzen und in Klasse 2 später abfragen.

Das kannst du tun, aber dazu müssen die Variablen der Klasse 1 öffentlich sein, oder zumindest via Property zugreifbar.

Die Variablen sollen allerdings private sein, damit nicht alle sehen, wo und wie ich sie setze.

Dann ist die einzige Chance der Konstruktor des Objektes von Klasse 2. Das kollidiert aber mit deinem ersten Satz. Auf der einen Seite willst du extern zugreifen, auf der anderen Seite wieder nicht. Das geht nur mittels "internal", wobei dann Klasse 1 und 2 zwingend in einem Assembly liegen müssen.

Da ich allerdings einen Ort brauche, an dem sie hinterlegt sind, habe ich mir überlegt, ob ich nicht den darüberliegenden Namespace als Klasse definieren kann und die Werte dort ablegen kann.

Mir scheint, du hast noch nicht verstanden was ein Namespace ist. Ein Namespace ist sowas wie ein globaler Name der hilft mögliche Namenskonflikte (z.B. zwei Klassen gleichen Namens) aufzulösen. Darin kann man nichts speichern. Der Namespace ist sowas wie der Nachname einer Klasse.

Ich möchte wissen, ob die Variablen, wenn ich sie so in der Oberklasse(Namespace) DB deklariere in den Unterklassen gültig sind. Wenn ja, wie kann ich darauf zugreifen?

Ja, sie sind sichtbar. Du greifst auf sie genauso zu wie auf alle anderen Member einer Klasse. In deinem Beispiel gibt es aber keine Vererbung.

6.862 Beiträge seit 2003
vor 17 Jahren

Namespaces sind nichts weiter als logische Gruppierungen, die haben mit OOP an sich nicht viel am Hut. Wenn du Variablen von einer anderen Klasse auslesen willst, müssen die immer irgendwie veröffentlicht werden, in welcher Form auch immer. Wenn die privat sind, kannst du nicht darauf zugreifen.

@LastGentlemanNaja, bei Vererbung wäre ja nicht mehr die Trennung in verschiedenen Klassen gegeben, so wie er es haben will. Glaub ich jedenfalls 🙂

Baka wa shinanakya naoranai.

Mein XING Profil.

476 Beiträge seit 2004
vor 17 Jahren
OOP Gültigkeitsbereich von Variablen

hallo Wolf_maYer,

wie svenson bereits erklärt hat, hängt es an mehreren Ecken. Zum besseren Verständnis könntest du auch mal hier schauen:

Das Klassendesign (Teil 1) - Visual C# 2005
Vererbung, Polymorphie und Schnittstellen - Visual C# 2005

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

Wolf_maYer Themenstarter:in
286 Beiträge seit 2006
vor 17 Jahren

Super, ich danke euch!

Nachdem, was ich jetzt noch gelesen habe, müsste ich mit einem Internal Constructor zum Erfolg kommen.

Wenn nicht, dann sollte eine Internal Class als WerteBunker herhalten können.

Gruß, maYer

Wolf_maYer Themenstarter:in
286 Beiträge seit 2006
vor 17 Jahren

Danke für den Buchtip.

Das Buch ist es, das ich im Moment bei jedem Problem wälze. 🙂

Es ist nur immer ein bisschen schwierig, wenn man Anfänger ist, Ideen hat und im ersten Moment nicht weiß, an welchem Punkt es hapert und wo man Ansetzen muss.

Danke nochmal für Eure Hilfe!!!

lieben Gruß

476 Beiträge seit 2004
vor 17 Jahren

Original von Wolf_maYer
Es ist nur immer ein bisschen schwierig, wenn man Anfänger ist, Ideen hat und im ersten Moment nicht weiß, an welchem Punkt es hapert und wo man Ansetzen muss.

Darum habe ich dir (meiner Meinung nach) die für dich interessanten Kapitel verlinkt ;o).

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de