Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-03-2008, 20:20   #1 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Richtige Polymorphie

Also das man Funktionen und Operatoren nicht
überladen kann bzw. seine eigenen Operatoren nciht
erstellen kann ist klar.

Gibt es aber eine Möglich keit seine eigenen Klassen von
int oder anderen elementare Datentypen erben zu lassen?

Wenn ich sagen wir mal einen erweiterten int Datentyp erstellen
möchte kann ich nicht wie gewohnt mit ihm + und - rechnen
sondern müsste mir Funktionen erstellen. Kann man sowas
nicht umgehen?
Code:
    var n : short = new short( 100 ); // möglich var n : short = 125; // geht nicht

Mir geht es darum:
Meine eigenen Datentypen so sinnvoll und flexibel
wie möglich zu gestalten. Vllt hat ja einer ein paar Anregungen
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 26-03-2008, 20:51   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.403
Müsstest du im Zeile 2 nicht den Zuweisungsoperator überladen? Das hat mit deinem Datentyp short doch nichts zu tun, oder sehe ich das falsch?
Omega Psi ist offline   Mit Zitat antworten
Alt 26-03-2008, 21:00   #3 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.586
Da hat Omega Psi recht.
So etwas wirst du nicht hinbekommen in AS.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 26-03-2008, 21:10   #4 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Ich sagte ja überladen geht ja leider nicht,
deswegen erschwert es mir eine sinnvolle struktur zu finden,
für meine eigenen datentypen die ich gern erstellenwürde:

dashalb die frage wie man sowas sinnvoll und flexibel aufbaut,
damit ich sogut wie alle funktionen abdecken kann, da int Number und
uint ja final sind und ich diese nicht benutzen kann.

es geht darum das ich gern meinen zahlenbereich durch eine klasse
erweitern möchte, und dafür wärs cool wenn man überladen könnte aber
sowas geht ja nicht, und deshalb frag ich wie man einen neuen "zahlentyp"
am sinnvollsten struckturiert etc.

ich habe ja gefragt ob jmd. ein paar vorschläge hat
eben weil ich nicht operatoren schreiben kann, das ich aber trozdem
alles an funktionalität abdecken kann.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 26-03-2008, 21:22   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.586
Du könntest eine Wrapperklasse schreiben.
Und anstelle der Operatoren müsstest du halt "normale" Methoden implementieren (add(), sub(), ...).
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 26-03-2008, 22:28   #6 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Wird wohl die einzigste Lösung sein.
Die sollen sich bei Adobe mal ins Zeug legen und
AS immer weiter ausbauen
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 26-03-2008, 22:35   #7 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
Nachdem das Flex SDK offen ist, könntest du auch selber Hand anlegen, und im guten alten Macromedia-Stil den Kompiler pimpen, und auf die Laufzeit einen lassen.

Was das ganze mit Polymorphie (und dazu noch richtiger) zu tun hat, ist mir noch nicht klar
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 26-03-2008, 22:41   #8 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Wie im Macromedia-Stil, was kann man mitm Flex SDK (hab den Builder)
was man mit Flash nicht kann an AS?

Ja ich hab ja gefragt ob es irgendeine möglichkeit gibt eben
überladen und anderes sachen der polymorphie (was überlaen z.b. ja ist
irgendiwe erstellen bzw. so gut wie möglich nachzuahmen.

Naja titel ist bisschen fehlgeraten

nochmal zur wrapperklasse, da bei wiki nix zu finden is udn ich nur so kleine seiten finde:
Code:
    package{    public class Integer    {        private var n : int;                public function Integer( number : int )        {            this.n = number;        }                public function parseInt() : int        {            // ...        }                public function toString() : String        {            // ...        }    }}
das sind also verbindungsklassen, um einzelnde typen wie int und char z.b. zu verbinde seh ich das richtig?
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi

Geändert von _crypto_ (26-03-2008 um 22:46 Uhr)
_crypto_ ist offline   Mit Zitat antworten
Alt 26-03-2008, 22:58   #9 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
Ok, da ich nur in AS Programmierung wirklich Erfahrung habe, was ja bekanntermaßen ein Polymorphie-feindliches Gebiet ist, habe ich bisher keine konkrete Vorstellung von der Bedeutung des Polymorphie-Begriffs gehabt. Ich dachte immer, es hieße Mehrfachvererbung, aber Wiki sagt:
Zitat:
Zitat von http://de.wikipedia.org/wiki/Polymorphie_%28Programmierung%29
Polymorphie (griechisch, „Vielgestaltigkeit“) ist die Eigenschaft eines Bezeichners – der Wert (Literal) oder Variable sein kann – sich, in Abhängigkeit von der Umgebung in der er verwendet wird, unterschiedlich darzustellen. Sie erlaubt also dem Bezeichner – je nach Kontext – einen unterschiedlichen Datentyp anzunehmen.
Und damit passt dein Betreff eigentlich gut, du möchtest, dass Operatoren je nach Kontext unterschiedliche Aktionen bewirken ...

Zum SDK. Alles ist offen, d.h. du kannst den mxml-Compiler selber Kompilieren, klingt verrückt, ist aber so. Und wenn du das kannst, dann kannst du ihm auch beibringen, dass er, wenn er eine Variable vom Typ short findet, und dann einen Plus-Operator, statt dessen den Bytecode für deineVariable.add( erzeugt. Der Aufwand wäre wahrscheinlich sehr groß, aber möglich wäre es. Zur Laufzeit wäre das alles hinfällig, im Bytecode stehen doch wieder nur Funktionsaufrufe.
Macromedia-Stil deshalb, weil Macromedia ganz AS2 auf diese Weise implementiert hat, der Kompiler verstehts, macht aber dumpfes AS1 draus.

Wrapper Klassen enthalten irgendwas, und ermöglichen der Umwelt den Zugriff darauf auf komfortable, oder anderweitig vorteilhafter Weise.
Eine short-Wrapper-Klasse könnte z.B. in einer setValue Methode den Wert auf 256 beschränken, so dass bei getValue unmöglich was größeres rauskommt als 256.

Anscheindend ist die uint-Klasse übrigens auf diese Art implementiert, es handelt sich dabei einfach um eine Wrapper-Klasse, die eine Number wrappt. (daher auch die Performance-Einbußen bei der Verwendung von uint)
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 26-03-2008, 23:40   #10 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
jo danke für das wrappererklärungsbeispiel
werd mich mal dransetzen,

aber das mit dem macromedia-stil muss ich mir unbedingt anschauen,
schließlich geht es bei meinem vorhaben um zahlen von einer größe bis zu 4096 bit sprich 1233 dezimalstellen.

ich hoffe adobe macht sich zumindest bei operatoren überladen, funktionen is mir bis jetz in AS nie aufgefallen, dass ichs brauchte, ich glaube das liegt daran das adobe bei der entwicklung von AS gut gedacht hat.

AS unterscheidet nicht zwischen wrapper und normaler klasse
Code:
var i : int = 10;
var j : int = new int( 10 );
zum schluss: haste vllt noch n paar links grad so parat ohne zu suchen zum thema compiler ompilieren ?
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 27-03-2008, 00:14   #11 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg
Beiträge: 4.388
Erste Anlaufstelle ist mit Sicherheit Adobe. Dort bekommst du den Source-Code, und auch Dokumentation.

Ein wichtiger Punkt bei dieser Sache ist, dass du dir im klaren bist, dass keiner deinen Code ohne deinen Compiler kompilieren kann, schließlich schreibst du dann kein gültiges Standard Adobe AS3 mehr.

Dass die bei der Entwicklung für AS3 gut gedacht haben, halte ich mal für eine gewagte Behauptung , aber auf jeden Fall haben sie den Entwicklungsprozess durch die Veröffentlichung extrem verbessert, die öffentliche Bug-Datenbank ist für mich immer noch ein Wunder.

EDIT: also wenn ich mal eine grobe Aufwandseinschätzung abgeben darf, dann tippe ich auf einen grauen Bart an deinem Kinn, wenn du den Compiler entsprechend angepasst hast.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)

Geändert von Janoscharlipp (27-03-2008 um 00:16 Uhr)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 27-03-2008, 23:45   #12 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 923
Nur für den Fall, dass du wirklich den Compiler suchst, die Sourcen sind erst ab Sommer erhältlich. Wenn du den Pfad des kleinsten gemeinsamen Nenners eh verlassen willst, kannst du auch gleich eine bessere Sprache benutzen. Für haxe kannst du alle Sourcen bekommen und an deine Bedürfnisse anpassen.
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 28-03-2008, 16:06   #13 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
ich kann auch einfach mit C++ weitermachen
ich finde AS aber iwie cooler im momment ^^
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 29-03-2008, 11:14   #14 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 923
Mit haxe kannst du allerdings für den Flashplayer programmieren. Mit C++ ist das schon schwieriger.
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Alt 29-03-2008, 15:23   #15 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Naja wir weichem vom eigentlichem thema iwie ab ^^
aber ich meinte, wenn ich n anderes programm nehmen soll
nur damit ich was mit flash ändern kann, bringts mich nicht
viel da es dann nicht jedem zu verfügung steht, ähnlich wie
Janoscharlipp meinte, es könne nur jder mit meinem compiler kompilieren.

und dann kann ich ja auch gleich C nehmen da hab ich alles was ich brauche
aber wie gesagt mir geht C++ grad so auf die nerven ^^
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele