Ralf Siegel wrote: >> Die ganze Variablendeklaration kann doch auch der Compiler machen. >> Ich sehe da keinen Sinn drin. Und ohne verschachtelte Klassen muss >> ich immer Methoden und Eigenschaften 'public' machen, die eigentlich >> für nur eine Klasse Sinn machen. > Kannst du das an einem kleinen Beispiel AS1 vs. AS2 deutlich machen? > Bin mir nicht sicher, was du meinst. ok. jetzt mal langsam. versuche gar nicht erst, direkt in die Trickkiste zu greifen, denn ich habe da keinen Spass dran. Natürlich habe ich - aber ich klage gerade an :o) Zunächst verschachtelte Klassen am Beispiel meiner aktuellen Projekte: 1.PathFinder (AS2) Wenn ich den PathFinder programmiere mit seinen Agenten, dann stellt sich die Frage, welche Struktur ich benutze. Alles deutet darauf hin, dem PathFinder eine eigene Klasse zu geben und den Agenten. In diesem Beispiel ist es mir noch egal, ob ich mit einem Singleton, bzw. einfacher (einsamer) Instanz den PathFinder zum laufen bekomme. Wichtig ist, dass die Agenten nur für den PathFinder arbeiten und für sonst zu nichts zu gebrauchen sind. Daher bin ich der Meinung, ich müsste Werkzeuge zur Verfügung haben, diese Klasse meinem PathFinder unterzuordnen und nicht einfach zuzuordnen. Denn dann könnte ich auch die Methoden, die ich im PathFinder public machen muss(!), damit die Agenten darauf zugreifen können auch privates (bzw. assigned privates) machen, damit diese geschützt sind. Denn fast alle Methoden und Eigenschaften sind für alle anderen Klassen nicht von bedeutung, nur für die Agenten Klasse. 2.IsoSprites(AS1) Ich habe wiederum 2 Klassen, eine für die IsoWelt und eine für die IsoSprites, sprich moveable Objects. Zunächst das gleiche Problem wie beim PathFinder - eine Verschachtelung ist nicht drin, obwohl IsoSprite ohne IsoWorld keine Funktion hat. Jetzt wäre es leicht zu sagen(AS1): IsoSprite.prototype = new IsoWorld(); Abgesehen davon, dass mir das immernoch heftig aufstößt, weil es unnötig ist, für jedes Sprite eine neue IsoWorld zu haben( besser wäre vieleicht IsoSprite.prototype = IsoWorld.__proto__;) kann ich meiner Superklasse (IsoWorld) keine Parameter einmal defnieren, um sie dann weiter zu vererben. Ich müsste hardcoden oder per For Schleife einen Übertrag machen. Wie frühzeitlich :) Variablendeklaration: Ich kann mir nicht vorstellen, dass es ein unüberwindbares Problem ist, einem Compiler so zu programmieren, dass er innerhalb eines Projektes den Typus verfolgt. In MX2003 lief das noch in Runtime, ein Performanceproblem bahnte sich an. Jetzt gelöst indem wir uns die Finger wundtippen(Number,String,etc.). So nebenbei Frage ich mich gerade, warum man immernoch keine flotten copyObject Befehle in Peto hat. > Eine Klasse ist einfach die Vorlage für das Objekt und erweiterbar. > Wenn du heute nur eine Instanz brauchst, brauchst du morgen > vielleicht doch noch eine zweite Instanz oder möchtest eine Klasse > ableiten und hast vorgesorgt. Sicher geht's einfach mit einem Objekt > und Methoden dranpappen, aber Klassen sind sauberer und leichter zu > warten. So argumentiere ich auch, wenn ich blutigen Anfängern OOP näherbringen will. Schau Dir das Math Objekt an und da hast du ein fettes Gegenbeispiel. Sicher ist es eine Instanz von MathClass, aber du brauchst niemals eine 2. Instanz, dort ist es mir völlig egal, was sich hinter den Kulissen abspielt. Mein Problem beim PathFinder ist da zB., dass ich kein Interesse daran habe, mir zu merken, wie meine Instanz im Projekt heisst. Es sind immer einfache Gründe, die einen zu solchen Schandtaten bringen. PathFinder ist PathFinder, es soll nur einen geben, basta :o) Für mich hat AS1 plötzlich eine ungeheuere Neufaszination durch AS2 bekommen. AS2 ist langweilig, stupide und nichts für schreibfaule für mich. Man ist halt enttäuscht, wenn einem das gewohnte und liebgewordene Umfeld entzogen wird und das Neue einem so gar nicht zusagt und man seinen Vorteil nicht drin sieht. aM http://www.andre-michelle.com http://public.extrajetzt.de ------------------------------------------------------ Archiv : //www.freelists.org/archives/ascoders/ Optionen : //www.freelists.org/list/ascoders ------------------------------------------------------