Jürgen: EventOutObserver

Hallo Liebes Forum,

wer kann mir sagen was an dieser Klasse abstrakt ist und wie ich diese zu behandeln habe, sprich wie muß ich mit ihr verfahren úm sie zu benutzen? Oder wie mache ich sie "unabstrakt"? Es geht hier um die Klasse blockobs.

public class erste Klasse extends Applet {

publich class blockobs implements EventOutObserver {

[.....andere Klassen intern des Applets]

[.....andere Klassen extern des Applets
wenn keine externen Klassen vorhanden sind
kann ich blockobs instanzieren und mit ihr arbeiten ]

public abstract class blockobs extends Object implements EventOutObserver {
  public void callback (EventOut pos, double when, Object which) {
  Integer whichNum = (Integer) which;
   if (whichNum.intValue() == 1) {
    touchedCard.show(vrmlHaupt, "touchCard0");
   }
   else if (whichNum.intValue() == 2) {
    touchedCard.show(vrmlHaupt, "touchCard1");
   }
   else if (whichNum.intValue() == 3) {
    touchedCard.show(vrmlHaupt, "touchCard2");
   }
   else if (whichNum.intValue() == 4) {
    touchedCard.show(vrmlHaupt, "touchCard3");
   }
}
}//blockobs
  
blockobs obs = new blockobs();

Es würde mir das Wochenende um ca. 300% versüßen.

Vielen Dank Jürgen

  1. Hallo Liebes Forum,

    wer kann mir sagen was an dieser Klasse abstrakt ist und wie ich diese zu behandeln habe, sprich wie muß ich mit ihr verfahren úm sie zu benutzen? Oder wie mache ich sie "unabstrakt"? Es geht hier um die Klasse blockobs.

    public class erste Klasse extends Applet {

    publich class blockobs implements EventOutObserver {

    [.....andere Klassen intern des Applets]

    [.....andere Klassen extern des Applets
    wenn keine externen Klassen vorhanden sind
    kann ich blockobs instanzieren und mit ihr arbeiten ]

    public abstract class blockobs extends Object implements EventOutObserver {
      public void callback (EventOut pos, double when, Object which) {
      Integer whichNum = (Integer) which;
       if (whichNum.intValue() == 1) {
        touchedCard.show(vrmlHaupt, "touchCard0");
       }
       else if (whichNum.intValue() == 2) {
        touchedCard.show(vrmlHaupt, "touchCard1");
       }
       else if (whichNum.intValue() == 3) {
        touchedCard.show(vrmlHaupt, "touchCard2");
       }
       else if (whichNum.intValue() == 4) {
        touchedCard.show(vrmlHaupt, "touchCard3");
       }

    »»  }
    »»  }//blockobs

    »»  blockobs obs = new blockobs();

    Es würde mir das Wochenende um ca. 300% versüßen.

    Vielen Dank Jürgen

    Hallo Jürgen!

    Ich hatte gehofft, dass sich noch jemand mit mehr Java-Erfahrung meldet, aber bevor der Thread weg ist schreibe ich mal, was mir auffällt.

    Du hast da einen Klassennamen mit Leerzeichen, das geht? (das publich darunter ist sicher nur ein Vertipper)
    Du hast außerdem zweimal blockobs (oder habe ich dich jetzt falsch verstanden?) und das ist dazu noch "abstract". Welche Meldung kommt, wenn du das abstract rausnimmst?
    Sorry, aber mehr weiß ich jetzt auch nicht. Ah noch ein Link: http://ifib41.ifib.uni-karlsruhe.de/vrml-seminar/gruppe_5/uebers.htm. Vielleicht steht da ja noch was interessantes...

    Henryk Plötz
    Grüße von der Ostsee

    1. Hallo Jürgen

      Tja, wenn ich mal weg bin läuft hier mal wieder nichts ;-)

      Also was ist eine abstrakte klasse?
      Beispiel aus RL:
      Ein Vogel.
      Ein Vogel hat zwar gewisse eigenschaften (Flügel, Schnabel) und Methoden (fliegen) aber es
      gibt eigendlich keinen VOGEL es gibt enten, spatzen aber keinen Vogel. Es ist eine Verallgemeinerung
      Eben eine ABSTRAKTE Classe.

      Abstrakte klassen können nicht direkt verwendet werden, nur indem sie andere Klassen erben.
      Sie können abstrakte methoden enthalden. Diese müssen von erbenden Klassen dann implementiert werden.

      Beispiel:

      ***vogel.java***
      public abstract class vogel
      {
         public void fliegen()
         {
            ...
         }

      public abstract void schwimmen() throws VogelException;
      }

      ***spatz.java***
      public class spatz extends vogel
      {
         public void schwimmen() throws absaufexception
         {
            throw new absaufexception()
         }
      }

      ***ente.java***
      public class ente extends vogel
      {
         public void schwimmen() throws VogelException
         {
            system.schwimm()
         }
      }

      Fazit: Wenn du eine abstrakte Klasse verwenden willst mußt du sie erben und alle abstrakten methoden implementieren.

      Tschüs

      Daniel