Entwickler-Ecke
C# - Die Sprache - Zwei klassen "bekannt machen"
spitzname - Mi 05.05.10 08:26
Titel: Zwei klassen "bekannt machen"
Hallo, wie kann man eine Elementvariable von eigenem Typ in diesem Fall z.B. Typ Lampe in der Klasse deklarieren und intern abspeichern. Typ String deklariert man z.B so --> String wort = "Hallo";
aber wie geht das mit einem eigenen Typ in dem Beispiel Lampe würde mich über Tipps freuen.
Klasse Schalter:
Parameter-Konstruktor
public Schalter( Lampe aktLampe ) { ... }
Der Lampenverweis wird intern in einer privaten Elementvariablen vom Typ Lampe abgespeichert.
Der Schalter "kennt" damit die Lampe, die es an und aus schaltet.
Eine private Elementvariable für den Schaltzustand des Schalters wird auf 0 (aus) gesetzt.
gruß spitzname
JüTho - Mi 05.05.10 09:15
Dringende Empfehlung: Befasse dich mit den Grundlagen einer jeden höheren Programmiersprache und speziell von C#. Was sind Datentypen, was sind Variable, wo und wie werden diese deklariert, initialisiert und benutzt?
C#-Quelltext
1: 2:
| Lampe myLamp = new Lampe(); Schalter mySwitch = new Schalter(myLamp); |
Außerdem musst du die Zusammenhänge der Objekte beachten. Zu einer Lampe gehört natürlich ein bestimmter Schalter; aber ein Schalter kann nicht nur eine Lampe steuern, sondern auch ein Gerät.
Jürgen
PS. Für Code benutze bitte die C#-Tags: [cs]code-auszug[/cs] bzw. über: "Bereiche" öffnen, C# auswählen, Auszug markieren, Plus-Button.
danielf - Mi 05.05.10 09:22
Ich bin mir nicht sicher, ob ich dich richtig verstanden hab und ob deine Idee umsetzbar ist.
Angenommen du hast eine Lampe
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| public class Lampe { public bool Leuchtet { private set; get; }
public void Schalte() { Leuchtet = !Leuchtet; } } |
Die verändert ihren Zustand (leuchtet an/aus) über die Funktion Schalte.
Wenn du nun einen Schalter hast, dem du Lampen hinzufügen kannst:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| public class Schalter { public Lampe { get; set; }
public void Schalte() { if (Lampe != null) { Lampe.Schalte(); } } } |
So könntest du es machen. Wobei ich dann nicht kapiere warum es die Schalte Klasse gibt.
Ich denke es wäre sinnvoller, wenn du einer Lampe Schlater hinzufügen kannst und wenn ein Schalter gedrückt wird die Lampe toggelt.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| public class Lampe { public bool Leuchtet { private set; get; }
private List<Schalter> _schalter = new List<Schalter>(); private void AddSchalter(Schalter schalter) { schalter.Clicked += new Eventhandler(schalter_clicked); _schalter.Add(schalter); }
private void Eventhandler(object sender, Eventargs e) { this.Schalte(); }
public void Schalte() { Leuchtet = !Leuchtet; } } |
Code ist (vermutlich) nicht ganz korrekt.. aber ich hoffe du verstehst was ich meine.
Sehe gerade Jürgens Beitrag und ergänze deshalb, das mein Beispiel sich auf eine Lampe mit mehreren Schaltern bezieht.. zum Beispiel in einem Flur bei dem sich am Ende und Anfang jedesmal Schalter befinden. Mit dem Ansatz wären allerdings beide Fälle abgedeckt (ein Schalter kann mehrere Lampen steuern und mehrere Schalter können ein Lampe steuern --> Observer-Pattern). Noch schöner ist Jürgens Erweiterung, damit man mit einem Schalter auch andere Gegenstände bedienen kann. Dann müsstest du ein Interface einführen ...
So weit so gut,
Gruß
spitzname - Mi 05.05.10 22:52
danke euch für die Mühe!
gruß spitzname
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!