[ascoders] Re: AS2 und die Detektive

  • From: André Michelle <am@xxxxxxxxxxxxxxxxxx>
  • To: <ascoders@xxxxxxxxxxxxx>
  • Date: Wed, 24 Sep 2003 22:46:24 +0200

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
------------------------------------------------------

Other related posts: