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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-03-2003, 10:15   #1 (permalink)
ketten_karusell_
 
Benutzerbild von ge_flash
 
Registriert seit: Jan 2002
Ort: Duitsland geen Westen
Beiträge: 1.246
Hilfe ! Wie vererbe ich Variabeln ?

Hallo,
ich bekomme es nicht hin Variabeln zu vererben. Vielen Dank im Voraus.

Hier ein Beispiel:


ActionScript:
  1. function Mutter (){
  2.     this.haare = "kurz"
  3.     }
  4.    
  5.    
  6. function Tochter(){}
  7. tochter.prototype.__proto__ = Mutter.prototype
  8. tochter.prototype.zeigHaar= function (){
  9.     trace(this.haare)
  10.  
  11.    
  12. }
  13.  
  14.  
  15. eva = new tochter()
  16. eva.zeigHaar()
__________________
-----------------------------------------------
wichtige Befehle:
-format internet
-fdisk internet
ge_flash ist offline   Mit Zitat antworten
Alt 10-03-2003, 10:27   #2 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
ActionScript:
  1. function Mutter() {
  2.     this.haare = "kurz";
  3. }
  4. function Tochter() {
  5. }
  6. Tochter.prototype = new Mutter();
  7. Tochter.prototype.zeigHaar = function() {
  8.     trace(this.haare);
  9. };
  10. eva = new Tochter();
  11. eva.zeigHaar();
michael ist offline   Mit Zitat antworten
Alt 10-03-2003, 10:41   #3 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
oder du machst die haare in den prototype:
ActionScript:
  1. function Mutter() {
  2. }
  3. Mutter.prototype.haare = "kurz";
  4. function Tochter() {
  5. }
  6. Tochter.prototype.__proto__ = Mutter.prototype;
  7. Tochter.prototype.zeigHaar = function() {
  8.     trace(this.haare);
  9. };
  10. eva = new Tochter();
  11. eva.zeigHaar();
michael ist offline   Mit Zitat antworten
Alt 10-03-2003, 12:15   #4 (permalink)
ketten_karusell_
 
Benutzerbild von ge_flash
 
Registriert seit: Jan 2002
Ort: Duitsland geen Westen
Beiträge: 1.246
gutKnut vielen Dank jetzt weiss ich schon wieder etwas mehr


Allerdings habe ich mein Problem noch nicht gelöst.
Ich kann die Variabel nicht ausserhalb ändern oder hochzählen
und dann den aktuellen Wert in der Vererbung aufrufen.
Vieleicht ist das auch Blödsin ?!

Hier erweitertes Problem:

ActionScript:
  1. function Mutter() {
  2.         this.haare = "kurz";
  3.         this.alter = 40
  4. }
  5. Mutter.prototype.geburtstag=function(){
  6.         this.alter++
  7. }
  8. function Tochter() {
  9. }
  10. Tochter.prototype = new Mutter();
  11. Tochter.prototype.zeigHaar = function() {
  12.         trace(this.haare);
  13.         trace(this.alter);
  14. };
  15. eva = new Tochter();
  16. theresia = new Mutter();
  17. theresia.geburtstag()
  18. eva.zeigHaar();
  19. // Alter ist nicht bei 41 !(
  20.  
__________________
-----------------------------------------------
wichtige Befehle:
-format internet
-fdisk internet
ge_flash ist offline   Mit Zitat antworten
Alt 10-03-2003, 12:30   #5 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
du schaffst dir mit deinen mutter/tochter-allegorien eher denkprobleme.

theresia ist die instanz der klasse Mutter
theresia hat geburtstag

eva ist eine instanz der klasse Tochter
eva erbt die eigenschaft alter aus der klasse Mutter
eva erbt nicht die eigenschaften der instanz theresia
oder auch: theresia ist eine Mutter, nicht zwangläufig die von eva

ok?

das noch zum grübeln:
ActionScript:
  1. function Mutter() {
  2.     this.haare = "kurz";
  3.     this.alter = 40;
  4. }
  5. Mutter.prototype.geburtstag = function() {
  6.     this.alter++;
  7. };
  8. function Tochter() {
  9. }
  10. Tochter.prototype = new Mutter();
  11. Tochter.prototype.zeigHaar = function() {
  12.     super.geburtstag();
  13.     trace(this.haare);
  14.     trace(this.alter);
  15. };
  16. theresia = new Mutter();
  17. theresia.geburtstag();
  18. eva = new Tochter();
  19. eva.zeigHaar();



gruss
michael
michael ist offline   Mit Zitat antworten
Alt 10-03-2003, 12:36   #6 (permalink)
ketten_karusell_
 
Benutzerbild von ge_flash
 
Registriert seit: Jan 2002
Ort: Duitsland geen Westen
Beiträge: 1.246
stimmt mit Mutter Tochter ist das ganze ein wenig daneben

Aber mit super.geburtstag(); könnte ich mein Problem lösen.

Vielen Dank dass baue ich jetzt mal in mein System ein und
wenn es klappt versuche ich super zu verstehen

Gruss ge_flash
__________________
-----------------------------------------------
wichtige Befehle:
-format internet
-fdisk internet
ge_flash ist offline   Mit Zitat antworten
Alt 10-03-2003, 13:54   #7 (permalink)
ketten_karusell_
 
Benutzerbild von ge_flash
 
Registriert seit: Jan 2002
Ort: Duitsland geen Westen
Beiträge: 1.246
Ich raff es immer noch nicht.


Ich möchte den Wert einer Klasse aktuallisieren!

z.B " this.xPos=1" in Klasse1

die Klasse2 erbt von Klasse1 und setz in Klasse1 "this.xPos=5"

jetzt kommt Klasse3 erbt auch brav von Klasse1 und möchte den aktuellen "this.xPos" haben also "this.xPos=5"

geht dass überhaupt oder muss ich die Variabel global festlegen?!

Oder muss ich Instanzen von Klasse 1 in Klasse 2 und 3 einbauen, dass möchte ich aber vermeiden.

__________________
-----------------------------------------------
wichtige Befehle:
-format internet
-fdisk internet

Geändert von ge_flash (10-03-2003 um 13:55 Uhr)
ge_flash ist offline   Mit Zitat antworten
Alt 10-03-2003, 14:10   #8 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Du musst in der SubKlasse Tochter als erstes den Constructor
der SuperKlasse Mutter aufrufen. Das machst du mit super();
Dadurch wird dann erst die Eigenschaft this.haare angelegt.

ActionScript:
  1. _global.dontinit = 2312312312;
  2.  
  3. function Mutter (){
  4.         trace("Mutter " + arguments);
  5.         if(arguments[0] != dontinit){
  6.               trace("Mutter: this.haare anlegen");
  7.               this.haare = "kurz";
  8.         }
  9. }
  10.  
  11. function Tochter(){
  12.         trace("Tocher");
  13.         super(); //SuperKlasse initialisieren
  14. }
  15.  
  16. Tochter.prototype = new Mutter(dontinit);
  17.  
  18. Tochter.prototype.zeigHaar= function (){
  19.         trace("Tochter.zeigHaar " + this.haare);
  20. }
  21.  
  22. eva = new Tochter()
  23. eva.zeigHaar()

Der Trick mit dontinit hilft dir dabei,
nicht irgendwelche ungewollten Eigenschaften
im Prototype der Tochter anzulegen.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 10-03-2003, 14:30   #9 (permalink)
ketten_karusell_
 
Benutzerbild von ge_flash
 
Registriert seit: Jan 2002
Ort: Duitsland geen Westen
Beiträge: 1.246
Ich versuche den wert zu ändern.
Eigentlich will ich dass Ergebniss "haare=lang"

Beispiel (leider mit "haare=kurz")



ActionScript:
  1. _global.dontinit = 2312312312;
  2.  
  3. function Mutter (){
  4.         if(arguments[0] != dontinit){
  5.                 this.haare = "kurz";
  6.         }
  7. }
  8. Mutter.prototype.wachse= function(){
  9.     this.haare="lang";
  10. }
  11. function Tochter(){
  12.         super(); //SuperKlasse initialisieren
  13. }
  14.  
  15. Tochter.prototype = new Mutter(dontinit);
  16.  
  17. Tochter.prototype.zeigHaar= function (){
  18.         trace(this.haare)
  19. }
  20.  
  21. function Einfluss(){
  22.     super()
  23.     super.wachse() // Überschreib doch endlich den Wert!?
  24. }
  25. Einfluss.prototype= new Mutter(dontinit)
  26.  
  27.  
  28. gott = new Einfluss()
  29. eva = new Tochter()
  30. eva.zeigHaar()
__________________
-----------------------------------------------
wichtige Befehle:
-format internet
-fdisk internet
ge_flash ist offline   Mit Zitat antworten
Alt 10-03-2003, 14:38   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Einfluss und Tochter haben nichts miteinander zu tun. Sie
stehen auf der gleichen Stufe und beeinflussen sich nicht.

Du kannst jedoch die Eigenschaft haare im Prototyp der
Mutter anlegen, dann kannst du sie für alle Instanzen, die
von der Mutter erben, ändern.

ActionScript:
  1. _global.dontinit = 2312312312;
  2.  
  3. function Mutter (){
  4.         trace("Mutter " + arguments);
  5. }
  6.  
  7. Mutter.prototype.haare = "kurz";
  8.  
  9. Mutter.prototype.wachse = function(){
  10.     Mutter.prototype.haare = "lang";
  11. }
  12.  
  13. function Tochter(){
  14.         trace("Tocher");
  15.         super(); //SuperKlasse initialisieren
  16. }
  17.  
  18. Tochter.prototype = new Mutter(dontinit);
  19.  
  20. Tochter.prototype.zeigHaar= function (){
  21.         trace("Tochter.zeigHaar " + this.haare);
  22. }
  23.  
  24. function Einfluss(){
  25.         trace("Einfluss");
  26.         super();
  27.         super.wachse() // Überschreib doch endlich den Wert!?
  28. }
  29.  
  30. Einfluss.prototype = new Mutter(dontinit)
  31.  
  32. gott = new Einfluss();
  33. eva = new Tochter();
  34. eva.zeigHaar();

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 10-03-2003, 14:54   #11 (permalink)
ketten_karusell_
 
Benutzerbild von ge_flash
 
Registriert seit: Jan 2002
Ort: Duitsland geen Westen
Beiträge: 1.246
ja Danke bokel das funktioniert.

Noch eine bescheidene Frage ... macht das überhaupt Sinn was ich hier bastel oder ist dass ein ganz falscher Ansatz.


Wen man eine Klasse hat die dauernd von Aussen aktuelle Werte erhält und die Erben verschiedene Methoden dieser Klasse benutzen und immer die aktuellen Werte der Mutter Klasse mit berücksichtigen müssen sollte man dann überhaupt Vererben oder die Werte global ablegen.

mit
ActionScript:
  1. Mutter.prototype.wachse = function(){
  2.         Mutter.prototype.haare = "lang";
  3. }
kann ich das ja jetzt realisiern aber irgendwie habe ich das Gefühl ich bin auf dem Holzweg.
__________________
-----------------------------------------------
wichtige Befehle:
-format internet
-fdisk internet
ge_flash ist offline   Mit Zitat antworten
Alt 10-03-2003, 14:57   #12 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ich würde eine Instanz von Mutter global anlegen
und die Töchter darauf zugreifen lassen.

Die Töchter muessen in diesem Fall nicht von Mutter erben.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 10-03-2003, 15:02   #13 (permalink)
ketten_karusell_
 
Benutzerbild von ge_flash
 
Registriert seit: Jan 2002
Ort: Duitsland geen Westen
Beiträge: 1.246
Macht glaube ich mehr Sinn.

So war auch mein Grund-System hatte dann versucht alles zu Vererben.

Vielen Dank
__________________
-----------------------------------------------
wichtige Befehle:
-format internet
-fdisk internet
ge_flash ist offline   Mit Zitat antworten
Alt 10-03-2003, 15:22   #14 (permalink)
LastActionScriptHero
 
Benutzerbild von k7c4
 
Registriert seit: Apr 2002
Beiträge: 572
Ich habe erst gelesen

'Hilfe ! Wie VERDERBE ich Variabeln ?'

Nun, dazu könnte ich zumindest einiges sagen!
__________________
All your AS are belong to us! haha!
Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd!
k7c4 ist offline   Mit Zitat antworten
Alt 10-03-2003, 15:30   #15 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Meinst du jetzt in Bezug auf Mutter und Töchter ?



mfg r.
bokel 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 15:28 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele