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
