OOP und C#

Hi!

Bin Neuling ins Sachen OOP und C# und hab da
mal ne grundsätzliche Verständnisfrage.

Also ich erstelle eine Klasse (mit Arrays) und weise sie einer Instanz zu z. B.
Klasse KAuto und die „Variable“ dazu ist Auto.

Wie ist denn jetzt der Gültigkeitsbereich dieser Instanz?
Soweit ich weiß nur innerhalb des Blocks z.B. einer Methode.
Wenn ich die Methode verlasse sind dann alle Daten die mit
dieser Instanz verarbeitet worden sind weg Ja/nein?
Und wie greife ich dann in einer anderen Methode wieder auf
diese Daten zu wenn die Daten nicht in der Klasse als static
vereinbart worden sind?

Ich hoffe, ich hab das einigermaßen verständlich ausgedrückt
und man kann verstehen worum es geht.

Hallo,
ich kann dir nicht genau folgen, aber versuche es trotzdem mal.

Eine Klasse wird nicht deklariert.
Das Zuweisen an eine Variable über NEW nennt man instanzieren (Erzeugen einer neuen Instanz).
Dabei wird der Speicher reserviert.

Wichtig ist hier, das „Auto“ in der Klasse deklariert ist.
Und nicht erst in der Methode.

Deine Variable „Auto“ ist nur in dem Gültigkeitsbereich verfügbar in der sie deklariert wurde!

Erich

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Grundlagenlektüre
Hallo.

Das ist jetzt nicht abwertend gemeint, aber dein Problem ist, dass dir Grundkenntnisse in der (objektorientierten) Programmierung fehlen. Du solltes also erstmal eine Lektüre über generelle OOP lesen, dann werden sich viele Probleme in Luft auflösen.

Viel Spaß und Glück wünscht Bernd

@Erich

Ok vielleicht habe ich es etwas zu kompliziert bzw. zu einfach ausgedrückt.

Das eine Klasse instanziert wird weiß ich - auch das dies mit new geschieht.

@Bernd

Ja ich weiß, dass ich noch nicht wirklich alles verstehe was OOP beinhaltet.
Drum schrieb ich ja auch

„Bin Neuling ins Sachen OOP und C# und hab da
mal ne grundsätzliche Verständnisfrage.“

Hab schon mehrere Bücher über Delphi und jetzt neu in C#
gelesen. Muß zugeben, dass das eine oder andere
noch unklar ist - obwohl ich schon in OOP mittlere :smile:
Hobbyprogramme (auch unter Windows) geschrieben habe.

Nur in C# wird halt nun alles in Klassen verpackt,
während ich in Delphi sozusagen noch darum herumschiffen konnte :smile:

Wenn du mir da ein Buch empfehlen kannst
was OOP ausführlich (von den Grundlagen an) behandelt?

Am besten ein Beispiel

Ich erstelle eine Klasse (jetzt mal grob)

class kilometer
public string[] Strecke = new string[10];

public static void Ausgabe()
{
.
.
.
}

class HProg
static void main()

Schreibe ich dann in Main

Kilometer KM = new Kilometer();

und greife in Ausgabe mit KM.Strecke auf die Variable zu und
könnte auch in weiteren Methoden auf den array zugreifen?

Oder nicht? :smile:

Wenn du mir da ein Buch empfehlen kannst
was OOP ausführlich (von den Grundlagen an) behandelt?

Das kann ich in der Tat:
http://www.galileocomputing.de/openbook/csharp/

Dort ist auch ein Abschnitt über Grundlagen der OOP. Nicht sehr ausführlich aber sicher hilfreich.

Schreibe ich dann in Main
Kilometer KM = new Kilometer();
und greife in Ausgabe mit KM.Strecke auf die Variable zu und
könnte auch in weiteren Methoden auf den array zugreifen?

In C# ist es üblich Felder zu kapseln, also Properties zu erstellen die zulassen auf das Feld zuzugreifen (schreibend/lesend).

Kurzes Beispiel:

class Kilometer {
 // Field
 private string[] \_strecke;
 // Property
 public string[] Strecke {
 get { return \_strecke; }
 set { \_strecke = value; }
 }
 // Constructor
 public Kilometer (int count) {
 \_strecke = new string[count];
 }
}

Wenn man nicht will, dass _strecke direkt geändert wird, lässt man das SET weg und somit ist _strecke „von außen“ schreibgeschützt. Man könnte dann über Methoden bestimmte Schreibroutinen implementieren.
Damit wäre der Zugriff über KM.Strecke gekapselt.

Gruß, Bernd

Hi ,
hätte dir nen Buchtipp:
C# für Ingenieure von Lothar Czarnecki
ziemlich gut erklärt !
MFG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]