Hallo,

> Was ich momentan habe ist "d�nn".  Da schreib ich nur dass eine Klasse
> Eigenschaften und Methoden hat und dass eine Klasse komplexe
> Funktionalit�t kapselt. Es ist wirklich d�nn.
>
> Wer kann mir da mit einer besseren Beschreibung helfen. Oder wer m�chte
> sich mal dran wagen und beschreiben was eine Klasse tut, warum ich so
> was brauche/haben will, was es besser macht als Programmieren ohne
> Klassen?

Das Hauptthema ist die Kapselung oder "Ordnung" im Code. Da Funktionen
wie Loops oder komplizierte Abfragen in das Objekt mit aufgenommen wurden,
kann sich der Entwickler beim Lesen des Quellcodes auf den wirklichen
Ablauf des Programms konzentrieren.

Daneben bist du nat�rlich sehr flexibel, wenn du Code mehrmals verwenden
willst, ihn jedoch f�r spezielle Situationen anpassen m�sstest. (z.b.
immer die selben Werte aus einer DB holen, wobei sich der Tabellenname
�ndert)

> Und wie schaffe ich den Sprung von Klassen zu Objekten?  Oder andersrum,
> wie erkl�re ich Objekte.

Mit Objekten meinst du COM-DLLs?

Du kannst...
- eine ActiveX-DLL in C++, Delphi, VB, ... schreiben
- eine ActiveX-DLL aus verschiedenen Umgebungen (WSH, ASP, VB, ..) aufrufen.

Und da COM-Objektes in den meisten F�llen (Ausnahme sind WSC) in Bin�rform
vorliegen, sind sie vermutlich in manchen F�llen auch etwas schneller.

> Als �bungsbeispiel (7. Klasse) hatte ich mir eine Klasse Quader
> zurechtgelegt. Die braucht drei Dinge (L�nge, Breite, H�he) und kann
> damit 3 Fl�chen und ein Volumen liefern.  Evtl. k�nnte man das Ding dann
> zur �bung von den Kindern auch erweitern lassen.  Beispiel: ich gebe
> Material an, die Klasse kennt einige spezifische Gewichte und spuckt mir
> dann das Gewicht des aktuellen Quaders aus.

(Ich habe lange kein VBScript mehr geschrieben, daher nur sinngem��)

Beispiel A:

class quader
 public laenge
 public breite
 public hoehe
 public function volumen
  if (laenge > 0) and (breite > 0) and (hoehe > 0) then
   volumen = laenge * breite * hoehe
  else
   err.raise "Angaben falsch"
  end if
 end function
end


Beispiel B:

class quader
 public laenge
 public breite
 public hoehe
 public function werteokay
  if (laenge > 0) and (breite > 0) and (hoehe > 0) then
   werteokay = true
  else
   werteokay = false
  end if
 end function
 public function volumen
  if werteokay then
   volumen = laenge * breite * hoehe
  else
   err.raise "Angaben falsch"
  end if
 end function
end


> Bleiben wir bei dem einfachen Beispiel mit Quader: da hab ich ja mehrere
> M�glichkeiten zur Berechnung.
>
> A) Jedesmal wenn eine Seitenl�nge "reinkommt" schaun ob alles da ist und
> dann alles berechnen.  Kostet Zeit und berechnet etwas, das ich
> vielleicht gar nicht brauche

Ineffizieng. So etwas hat in einem Programmierkurs Hausverbot.

> B) Nur dann berechnen wenn ich was brauche/abfrage.  Muss dann aber
> trotzdem einen gemeinsames St�ck code durchlaufen, das pr�ft ob ich alle
> Einzeltteile beieinander hab.  F�r ein einfaches Beispiel m�glicherweise
> schon ganz sch�n kompliziert.

Beispiel A: einfache Umsetzung, die Pr�fung geschieht jeweils innerhalb
 der Prozedur zur Berechnung.

Beispiel B: es gibt eine gemeinsame Funktion zur Pr�fung aller Werte. So
 kann man schon im Hauptprogramm pr�fen, *ob* die Funktion alle ben�tigten
 Werte besitzt. Und das, ohne Kenntnis davon zu haben, nach welchen
 Kriterien die Klasse pr�ft.

Ich w�rde letztere M�glichkeit bevorzugen. F�r jede zus�tzliche Berechnung
f�hrst du eine separate Function ein, welche auf die gemeinsame Pr�froutine
zur�ckgreift.

> Und was mir auch noch fehlt und schleierhaft ist: wie macht man in einer
> eigenen Klasse eine [von au�en nutzbare] Collection?

Am besten per Script.Dictionary.

MfG,
Markus Oestreicher [QualityHosting Support]
-------------------------------------------
Informationen: http://www.qualityhosting.de




| [aspdecoffeehouse] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffeehouse.asp

Antwort per Email an