Kalle_B: Einstieg in OOP

Hallöle,

ich möchte mehrere kleine grafische Elemente unabhängig voneinander auf der Seite bewegen. Das ist doch sicher ein Fall für objektorientierte Programmierung.

Für jedes Objekt ist zu speichern:
 X- und Y- Position,
 Richtung,
 Schrittweite,
 Intervall.

Dann ist pro Intervall die nächste Position zu errechnen und das Objekt neu anzuzeigen.

Habe schon mal mit vorgefertigten Objekten experimentiert:
 objAjax = new ActiveXObject("Microsoft.XMLHTTP");

Habe aber keine Ahnung, wie ActiveXObject von innen aussieht.

Wer nennt mir ein Beispiel für die Definition (oder heisst es Deklaration?) eines Javascript- Objekts?

22:23 - es ist dunkel im Odenwald.  Kalle

  1. Hi,

    Für jedes Objekt ist zu speichern:
    X- und Y- Position,
    Richtung,
    Schrittweite,
    Intervall.

    na, dann kennst Du ja schon mal die Eigenschaften, die das Objekt haben muss.

    Habe schon mal mit vorgefertigten Objekten experimentiert:
    objAjax = new ActiveXObject("Microsoft.XMLHTTP");

    Das ist erstens ein sehr spezielles Objekt, welches zweitens mit Deinem Problem nichts zu tun hat und drittens IE-only ist.

    Habe aber keine Ahnung, wie ActiveXObject von innen aussieht.

    Uninteressant. Du musst nur wissen, wie Object von innen aussieht: Leer.

    Wer nennt mir ein Beispiel für die Definition (oder heisst es Deklaration?) eines Javascript- Objekts?

    Es heißt "Prototype". Zumindest das Stichwort, welches Dich weiter bringt.

    22:23 - es ist dunkel im Odenwald.  Kalle

    22:33 - mal sehen, wie es im Wald von Elwynn aussieht.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi, Cheatah,

      danke für das Stichwort Prototype.

      Habe da was gefunden: http://demo.script.aculo.us/scripts/prototype.js

      Scheint eher für Fortgeschrittene zu sein, ich verstehe nur "Bahnhof".

      Bin noch immer auf der Suche nach einem einfachen Objekt.

      Kalle

      1. Hallo Kalle_B.

        Habe da was gefunden: http://demo.script.aculo.us/scripts/prototype.js

        Scheint eher für Fortgeschrittene zu sein, ich verstehe nur "Bahnhof".

        Um obigen Klumpen habe ich bisher ebenfalls erfolgreich einen großen Bogen gemacht.

        Vielleicht helfen dir die erläuternden Worte im Developer-Bereich auf der Mozilla-Site ein wenig weiter.

        Einen schönen Montag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
      2. danke für das Stichwort Prototype.

        aber falsch gesucht.

        Habe da was gefunden: http://demo.script.aculo.us/scripts/prototype.js

        Das ist lediglich ein Framework, dass sich so nennt.

        Scheint eher für Fortgeschrittene zu sein, ich verstehe nur "Bahnhof".

        kommt drauf an, ich benutze es nicht, aber ich denke es vereinfacht viel.

        Bin noch immer auf der Suche nach einem einfachen Objekt.

        Das ist ein einfaches Objekt:

        function Objekt(){}

        var o = new Object();

        Das ganze ist nicht einfach, in selfhtml ist ein kurzer Anriss wie man Objektorientiert mit JS programmiert http://de.selfhtml.org/javascript/sprache/objekte.htm#eigene

        aber das ist wirklich nur ganz wenig (es fehlt z.b. auch die von Cheatah erwähnte protoype Eigenschaft)

        http://www.javascriptkit.com/javatutors/oopjs.shtml
        ein gutes teutsches Tutorial hab ich nicht auf die schnelle gefunden, dei meisten sind Mist.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
    2. Hi Cheatah!

      22:33 - mal sehen, wie es im Wald von Elwynn aussieht.

      _Du_ spielst? Das hätte ich nicht von dir gedacht. *kopfschüttel* ;-)

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      1. Hi,

        22:33 - mal sehen, wie es im Wald von Elwynn aussieht.
        _Du_ spielst? Das hätte ich nicht von dir gedacht. *kopfschüttel* ;-)

        spielen? Ich evaluiere Netzwerkprotokolle.

        Cheatah ;-)

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi Cheatah!

          _Du_ spielst? Das hätte ich nicht von dir gedacht. *kopfschüttel* ;-)
          spielen? Ich evaluiere Netzwerkprotokolle.

          Und bezahlst auch noch Geld dafür. -.-

          [dsf 1.13]

          MfG H☼psel

          --
          "It's amazing I won. I was running against peace, prosperity, and incumbency."
          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
          1. Hi,

            _Du_ spielst? Das hätte ich nicht von dir gedacht. *kopfschüttel* ;-)
            spielen? Ich evaluiere Netzwerkprotokolle.
            Und bezahlst auch noch Geld dafür. -.-

            Weiterbildung kostet nun mal.

            [dsf 1.13]

            [dsf 4.11]

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hi Cheatah!

              Weiterbildung kostet nun mal.

              Nichtsdestotrotz hätte ich niemals von dir gedacht, dass du mir nochmal so sympatisch wirst. ;-)

              Wie dem auch sei...
              [dsf 2.8]

              MfG H☼psel

              --
              "It's amazing I won. I was running against peace, prosperity, and incumbency."
              George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
              Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
              1. Hi,

                Nichtsdestotrotz hätte ich niemals von dir gedacht, dass du mir nochmal so sympatisch wirst. ;-)

                nun, niemand ist frei von Fehlern ;-)

                [dsf 2.8]

                [dsf 3.1]

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. yo,

                  nun, niemand ist frei von Fehlern ;-)

                  ich würde einfach das wort "Fehlern" mit "Menschlichkeit" ersetzen.

                  Ilja

                  1. Hi Ilja!

                    nun, niemand ist frei von Fehlern ;-)
                    ich würde einfach das wort "Fehlern" mit "Menschlichkeit" ersetzen.

                    Ähm... Es geht um Cheatah!

                    scnr ;-)

                    MfG H☼psel

                    --
                    "It's amazing I won. I was running against peace, prosperity, and incumbency."
                    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
                    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
                    1. yo,

                      Ähm... Es geht um Cheatah!

                      genau deswegen sollte dort Menschlichkeit stehen.

                      Ilja

                      1. Hi Ilja,

                        Ähm... Es geht um Cheatah!
                        genau deswegen sollte dort Menschlichkeit stehen.

                        Weil er sich zum Zwecke des zeitkillenden Computerspielens an eine Maschine andockt und glaubt, er sei eine Nachtelfe oder ein Gnom?

                        Viele Grüße
                        Mathias Bigge

                        1. Hi Mathias!

                          Ähm... Es geht um Cheatah!
                          genau deswegen sollte dort Menschlichkeit stehen.
                          Weil er sich zum Zwecke des zeitkillenden Computerspielens an eine Maschine andockt und glaubt, er sei eine Nachtelfe oder ein Gnom?

                          Troll! :-)
                          Desweiteren hoffe ich nicht, dass nicht alle Menschen Computerspiele als zeitkillend empfinden. Schließlich möchte ich damit später mein Geld verdienen.

                          MfG H☼psel

                          --
                          "It's amazing I won. I was running against peace, prosperity, and incumbency."
                          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
                          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
                          1. Hi Hopsel,

                            Ähm... Es geht um Cheatah!
                            genau deswegen sollte dort Menschlichkeit stehen.
                            Weil er sich zum Zwecke des zeitkillenden Computerspielens an eine Maschine andockt und glaubt, er sei eine Nachtelfe oder ein Gnom?
                            Troll! :-)
                            Desweiteren hoffe ich nicht, dass nicht alle Menschen Computerspiele als zeitkillend empfinden. Schließlich möchte ich damit später mein Geld verdienen.

                            Sie empfinden es nicht so, höchstens beim Kater danach oder wenn die Frau weggelaufen ist, weil sie den wertguten Gamer nur noch von hinten kennt, sonst würden sie ja nicht Stunden damit verbringen, aus der Realität in künstliche, anders als unsere von ständigen Gemetzeln exotischer Allianzen bedrohte Welten abzutauchen! Deiner Zukunft als Top-Spieleprogrammierer steht also nichts im Wege, außer Du verlierst Dich selbst allzulange im Dickicht der virtuellen Kriege. Das mit der Frau lösen die erfahrensten Krieger, wie undichte Quellen verbreiten, indem sie sie selber mitkämpfen lassen... *g*

                            Meine aktuelle Computersucht heißt übrigens Wikipedia, ein Projekt, das zum Genre der Nervenkriege gehört und damit perfekter als Warcraft auf das spätere Eheleben vorbereitet oder an das vergangene erinnert...

                            Viele Grüße
                            Mathias Bigge

                            1. Hi Mathias!

                              Desweiteren hoffe ich nicht, dass nicht alle Menschen Computerspiele als zeitkillend empfinden. Schließlich möchte ich damit später mein Geld verdienen.
                              Sie empfinden es nicht so [...] Deiner Zukunft als Top-Spieleprogrammierer steht also nichts im Wege, außer Du verlierst Dich selbst allzulange im Dickicht der virtuellen Kriege.

                              Ich würde sagen, ich habe einen gesunden Mittelweg gefunden. :-)

                              Das mit der Frau lösen die erfahrensten Krieger, wie undichte Quellen verbreiten, indem sie sie selber mitkämpfen lassen... *g*

                              Und ich verlier doch so ungern...

                              Meine aktuelle Computersucht heißt übrigens Wikipedia, ein Projekt, das zum Genre der Nervenkriege gehört und damit perfekter als Warcraft auf das spätere Eheleben vorbereitet

                              Das glaube ich dir. :)

                              oder an das vergangene erinnert...

                              Da ist wohl was schief gelaufen... :(

                              MfG H☼psel

                              --
                              "It's amazing I won. I was running against peace, prosperity, and incumbency."
                              George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
                              Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
                        2. yo,

                          Weil er sich zum Zwecke des zeitkillenden Computerspielens an eine Maschine andockt und glaubt, er sei eine Nachtelfe oder ein Gnom?

                          ich würde sagen weil er trotz aller weltlicher und ausserweltlicher fähigkeiten immer noch ein mensch bleibt.

                          Ilja

          2. Hallo Hopsel und Cheatah,

            [dsf 1.13]

            Ihr habt an euren Posts immer [dsf x.yy] dranstehen, darf der nicht ohweoweler mal fragen was das heißt?
            Danke.

            B-ellanna

            1. Hi B!

              [dsf 1.13]
              Ihr habt an euren Posts immer [dsf x.yy] dranstehen, darf der nicht ohweoweler mal fragen was das heißt?

              Das hat gar nichts mit einem Spiel zu tun, sondern gehört zur Netzkultur.

              Danke.

              Bitte. ;-)

              MfG H☼psel

              --
              "It's amazing I won. I was running against peace, prosperity, and incumbency."
              George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
              Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
              1. Das hat gar nichts mit einem Spiel zu tun, sondern gehört zur Netzkultur.

                Hallo Hopsel.

                [dsf 4.7]
                B-ellanna

                1. Hallo,

                  Das hat gar nichts mit einem Spiel zu tun, sondern gehört zur Netzkultur.
                  [dsf 4.7]

                  [dsf 3.6]

                  *scnr*
                   Martin

                  --
                  F: Was sagt die kleine Kerze zur großen Kerze?
                  A: Ich gehe heute nacht aus!
    3. 你好 Cheatah,

      22:33 - mal sehen, wie es im Wald von Elwynn aussieht.

      RCK? ;))

      再见,
       克里斯蒂安

      --
      Umzug | Der Ärger mit der Telekom ist vorbei!
      Fatal! Ich kann kein Reserve-Offizier mehr sein!
      http://wwwtech.de/
      P.S.: Realm, Character, Klasse ;)
  2. Hi,

    Wer nennt mir ein Beispiel für die Definition (oder heisst es Deklaration?) eines Javascript- Objekts?

    Du brauchst einen Konstruktor, in dem Du Eigenschaften und Methoden festlegst, hier z.B. Farbänderung und Ausgabe per alert. Diese sind nur innerhalb des Objektes bekannt.

    // konstructor
    function myObj() {
        this.color       =  "red"; // eigenschaft farbe
        this.changeColor =  changeColor; // methode definieren
        this.alertColor  =  alertColor;
    }

    // methode farbe ändern
    function changeColor(color) {
        this.color       =  color;
    }

    // methode farbe ausgeben
    function alertColor() {
        alert(this.color);
    }

    Jetzt erzeugst Du eine Instanz und wendest die Methoden auf diese Instanz an:

    var obj =  new myObj();
    obj.alertColor();
    obj.changeColor('green');
    obj.alertColor();

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. ... dein Beispiel ist gut verständlich.

      Hier noch so ein einfaches Beispiel: http://www.javascriptkit.com/javatutors/oopjs2.shtml

      Kalle

      1. Hier noch so ein einfaches Beispiel: http://www.javascriptkit.com/javatutors/oopjs2.shtml

        (von Struppi)

      2. ... dein Beispiel ist gut verständlich.

        Man kann es zwar so machen, aber du soltest lieber mit prototype arbeiten. In dem Beispiel hast du unnötige Globale Funktionen. Methoden, innerhalb der Konstruktorfunktion sind privielgierte Methoden die Zugriff auf private Eiegnschaften haben, das ist hier aber nicht nötig.

        So sähe das Beispiel mit prototype aus:

          
        // Konstruktorfunktion  
        function myObj() {  
            this.color       =  "red"; // Eigenschaft Farbe  
        }  
          
        // Methode Farbe ändern  
        myObj.prototype.changeColor = function (color)  
        {  
            this.color       =  color;  
        }  
          
        // Methode Farbe ausgeben  
        myObj.prototype.alertColor =  function() {  
            alert(this.color);  
        }  
        
        

        Hier noch so ein einfaches Beispiel: http://www.javascriptkit.com/javatutors/oopjs2.shtml

        Die Links von wahsaga, sind nochmal präziser. Allerdings muss man dann auch eine Ahnung von OOP haben.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Hallo Struppi,

          // Konstruktorfunktion
          function myObj() {
              this.color       =  "red"; // Eigenschaft Farbe
          }

          // Methode Farbe ändern
          myObj.prototype.changeColor = function (color)
          {
              this.color       =  color;
          }

          // Methode Farbe ausgeben
          myObj.prototype.alertColor =  function() {
              alert(this.color);
          }

            
          spricht eigentlich etwas gegen  
            
          ~~~javascript
            
          // Konstruktorfunktion  
          function myObj() {  
              this.color       =  "red"; // Eigenschaft Farbe  
            
          // Methode Farbe ändern  
           this.changeColor = function (color)  
           {  
              this.color       =  color;  
           }  
            
          // Methode Farbe ausgeben  
           this.alertColor =  function() {  
              alert(this.color);  
           }  
            
          }  
          
          

          bzw. was ist der Unterschied zwischen der Definition der Methoden im Objekt und über prototype?

          Gruß, Jürgen

          1. spricht eigentlich etwas gegen

            Grundsätzlich nicht, wie gesagt, wennn du die Seiten die dir wahsaga gezeigt hat gelesen hast verstehst du den Unterschied.

            bzw. was ist der Unterschied zwischen der Definition der Methoden im Objekt und über prototype?

            Das eine sind Methoden, die auf private Mitglieder zugreifen können und müssen ausserdem bei jedem neuen Objekt neu erzeugt werden.

              
            function obj1()  
            {  
                this.func = function() {;  }  
            }  
            obj1.prototype.func2 = function() { ;  }  
              
            var o1 = new obj1();  
            var o2 = new obj1();  
            alert( o1.func === o2.func); // = false  
            alert( o1.func2 === o2.func2); // = true  
            
            

            und um zu verstehen ob du private, privliegierte oder public Methoden/Attriobute verwendest solltest (nochmal der Hinweis auf die Links von wahsaga, wo der unterschied erklärt wird), musst du natürlich Kenntnisse über OOP haben.

            Struppi.

            --
            Javascript ist toll (Perl auch!)
            1. Hallo Struppi,

              danke. Die Seiten von wahsaga werde ich sicher irgendwann lesen müssen. Aber für jemanden, dar das Programmieren noch mit Fortran gelernt hat, ist OOP schon eine fremde Welt.

              Dein Hinweis

              ... und müssen ausserdem bei jedem neuen Objekt neu erzeugt werden.

              überzeugt mich aber davon, besser mit prototype zu arbeiten.

              Gruß, Jürgen

              1. danke. Die Seiten von wahsaga werde ich sicher irgendwann lesen müssen. Aber für jemanden, dar das Programmieren noch mit Fortran gelernt hat, ist OOP schon eine fremde Welt.

                ich hatte gar nicht mitbekommen dass hier ein "userwechsel" stattfand ;-)
                Ging natürlich in erster Linie an Karl.

                Struppi.

                --
                Javascript ist toll (Perl auch!)
  3. hi,

    wenn du einen Einstieg in OOP in Javascript suchst, sind neben CKs Feature-Artikel Objekt-Handling in JavaScript auch OOP in JS, Part 1 : Public/Private Variables and Methods und OOP in JS, Part 2 : Inheritance m.E. sehr empfehlenswert (sind allerdings in Englisch).
    Und im Eintrag zu Javascript in der Wikipedia steht auch noch'n bisschen was dazu.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo wahsaga.

      Und im Eintrag zu Javascript in der Wikipedia steht auch noch'n bisschen was dazu.

      Und sogleich beweist man mir das Gegenteil meiner Behauptung.

      Einen schönen Montag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]