Autor Beitrag
spitzname
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 05.05.10 08:26 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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?
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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
ausblenden 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:
ausblenden 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.
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 05.05.10 22:52 
danke euch für die Mühe!

gruß spitzname