|  | 		    
					
    
        
            
                
                        
                
            
            
                
                | |  | Accepteret svar Fra :
  vnc  |  Modtaget 210  point
 Dato :  05-02-01 13:33
 | 
 |  | 
 
                Hej Engo,
 Du skal bare skrive
 if (a instanceof minklasse1)
   ...
 else if (a instanceof minklasse2)
   ...
 else if (a instanceof minklasse3)
   ...
 VNC
                
                
                 |  |  | 
 | |  | Godkendelse af svar Fra :
  engo  | 
 Dato :  05-02-01 15:33
 | 
 |  |  |  |  | 
 |  |  | 
 
                EnKlasse a = new EnKlasse();
 if(a.Class instanceoff [pakkenavn].EnKlasse){
 }
 mvh
 Simon
 "engo" <engo.news@kandu.dk> wrote in message
 news:RKvf6.15603$zw.280987@twister.sunsite.dk...
 > Jeg har 3 forskellige klasse som er nedarvet fra den samme klasse, nu vil
 jeg godt lave en fælles funktion for disse klasser, men inde i funktionen
 skal den checke hvad for en af klasserne den blev kaldt med. Kan det lade
 sig gøre?
 >
 > f.eks således, det ville være smart :
 >
 > function minfunc(testclass a)
 > {
 >    if (a.type == minklasse1)
 >      ...
 >    else if (a.type == minklasse2)
 >      ...
 >    else if (a.type == minklasse3)
 >      ...
 > }
 >
 > >>Engo
 >
 >
 > Leveret af:
 > http://www.kandu.dk/ > "Vejen til en hurtig løsning"
 >
                
                
                 |  |  | 
 |  |  | 
 
                engo wrote:
 > 
 > Jeg har 3 forskellige klasse som er nedarvet fra den samme klasse, nu vil jeg godt lave en fælles funktion for disse klasser, men inde i funktionen skal den checke hvad for en af klasserne den blev kaldt med. Kan det lade sig gøre?
 Kan du ikke bare lave en funktion "int hvemErJeg()"
 base-klassen kan returnere 0
 de andre klasser kan fx. returnere 1, 2 eller 3 
 mvh. Morten N
                
                
                 |  |  | 
 |  |  | 
 Brug funktionen instanceOf(klasse navn)
 --
 With many Thanks
 Soren ' Disky ' Reinke  ICQ #1413069 remove 'ihsyd' when email replying
 Please visit my Freshwater Aquaria Webpage
http://www.disky-design.dk/fish "engo" <engo.news@kandu.dk> wrote in message
 news:RKvf6.15603$zw.280987@twister.sunsite.dk...
 > Jeg har 3 forskellige klasse som er nedarvet fra den samme klasse, nu vil
 jeg godt lave en fælles funktion for disse klasser, men inde i funktionen
 skal den checke hvad for en af klasserne den blev kaldt med. Kan det lade
 sig gøre?
 >
 > f.eks således, det ville være smart :
 >
 > function minfunc(testclass a)
 > {
 >    if (a.type == minklasse1)
 >      ...
 >    else if (a.type == minklasse2)
 >      ...
 >    else if (a.type == minklasse3)
 >      ...
 > }
 >
 > >>Engo
 >
 >
 > Leveret af:
 > http://www.kandu.dk/ > "Vejen til en hurtig løsning"
 >
                
                
                 |  |  | 
 |  |  | 
 
                On Mon, 05 Feb 2001 12:36:38 +0100, Morten Nedertoft
 <mmn@pr-group.sdu.dk> wrote:
 >engo wrote:
 >> 
 >> Jeg har 3 forskellige klasse som er nedarvet fra den samme klasse, nu vil jeg godt lave en fælles funktion for disse klasser, men inde i funktionen skal den checke hvad for en af klasserne den blev kaldt med. Kan det lade sig gøre?
 >
 >Kan du ikke bare lave en funktion "int hvemErJeg()"
 >
 >base-klassen kan returnere 0
 >de andre klasser kan fx. returnere 1, 2 eller 3 
 Tåbeligt, når der nu er en instanceof operator.
 Derudover er der en metode 'getClass()' i Object som man kan kalde og
 får reference til en beskrivelse af klassen for objektet, som man så
 igen kan få navnet fra.
 Bortset fra de detaljer, så tyder spørgsmålet på at det er et design
 problem eet eller andet sted, da 'engo' vil lave en funktion der
 hedder det samme for alle klasserne, men opfører sig anderledes. 
 'Engo': Du burde, som Morten N foreslår, lave en fælles 'abstract'
 metode i din base class, som du så overstyrer i dine subclasses.
 Dog skal de ikke returnere 1,2,3 alt efter klasse typen, men faktisk
 udføre den funktionalitet du ville samle i din base class.
 Ihvertfald lyder det til at du burde læse lidt op på dine OO
 principper, idet det du er ved at designe ikke lyder helt fornuftigt.
 >mvh. Morten N
 vh. ld
 -- 
 "Time is the fire in which we burn"
                
                
                 |  |  | 
 |  |  | 
 
                Lars Dam wrote:
 > >Kan du ikke bare lave en funktion "int hvemErJeg()"
 > >
 > >base-klassen kan returnere 0
 > >de andre klasser kan fx. returnere 1, 2 eller 3
 > 
 > Tåbeligt, når der nu er en instanceof operator.
 Ikke nødvendigvis.
 Hvor meget tid tager et typecheck versus et opslag i en int?
 -- 
   Thorbjørn Ravn Andersen              "...sound of...Tubular Bells!"
  http://bigfoot.com/~thunderbear |  |  | 
 |  |  | 
 
                On Mon, 12 Feb 2001 11:24:01 +0100, Thorbjørn Ravn Andersen
 <thunderbear@bigfoot.com> wrote:
 >Lars Dam wrote:
 >> >Kan du ikke bare lave en funktion "int hvemErJeg()"
 >> >base-klassen kan returnere 0
 >> >de andre klasser kan fx. returnere 1, 2 eller 3
 >> Tåbeligt, når der nu er en instanceof operator.
 >Ikke nødvendigvis.
 >Hvor meget tid tager et typecheck versus et opslag i en int?
 Aner det ikke, og er også ligeglad med hvor lang tid det tager.
 Hvad jeg derimod ikke er ligeglad med, er om man kan slippe for at
 implementere noget som allerede eksisterer på en smartere måde, _som_
 man så senere også skal vedligeholde.
 vh. ld
 -- 
 "Time is the fire in which we burn"
                
                
                 |  |  | 
 |  |  | 
 
                Lars Dam wrote:
 
 > Derudover er der en metode 'getClass()' i Object som man kan kalde og
 > får reference til en beskrivelse af klassen for objektet, som man så
 > igen kan få navnet fra.
 Apropos objekt.getClass(), saa har jeg set i en test, at den tager lang
 tid at udfoere. Er der en der kan give mig en god grund til dette?
 Desuden vil jeg meget gerne have omformuleret nedenstaaende
 dokumentation til getClass() - jeg forstaar ikke meningen.
 Returns the runtime class of an object. That Class object is the object
 that is locked by static synchronized methods of the represented class.
 mvh. Morten N
                
                
                 |  |  | 
 |  |  | 
 
                > Apropos objekt.getClass(), saa har jeg set i en test, at den tager lang
 > tid at udfoere. Er der en der kan give mig en god grund til dette?
 > Desuden vil jeg meget gerne have omformuleret nedenstaaende
 > dokumentation til getClass() - jeg forstaar ikke meningen.
 >
 > Returns the runtime class of an object. That Class object is the object
 > that is locked by static synchronized methods of the represented class.
 Ja, det lyder også lidt sort, men jeg tror at meningen med det er at hvis
 du laver en
 almindelig synchronized metode, låser du det enkelte objekt. Hvis du laver
 en static
 synchronized "metode", låser du jo også noget - klassen selv - og det er et
 objekt, nemlig
 det objekt som getClass() returnerer.
 Altså alt, der kan låses må være et objekt, og derfor må static
 synchronized jo
 også låse et objekt - klasseobjektet.
 Ok, min forklaring er måske lige så sort (og måske ikke korrekt?), men i
 det ser
 ud som om at teksten bare prøver at forklare hvad getClass() returnerer ud
 fra
 hvad der ligger bag et tilfælde af klasseobjektets brug.
 Ulrik Magnusson
 --
 "Look! Ducks in the lake"
       'Agent Cooper' in Twin Peaks - Lynch, 1990
 Visit my home page: http://www.geocities.com/ulrikm |  |  | 
 |  |  | 
 
                > Hvad jeg derimod ikke er ligeglad med, er om man kan slippe for at
 > implementere noget som allerede eksisterer på en smartere måde, _som_
 > man så senere også skal vedligeholde.
 Det vil jeg også have en tilbøjelighed til at mene, og derfor piner det
 mig at konstatere
 at jeg faktisk har lavet klasseid'er - med stor succes mht programmets
 hastighed. Det
 er da noget svineri, men "desparate times calls for desperate measures"..
 Hvad gør man i øvrigt i C++ - der har man da ikke en instanceof operator?
 Ulrik Magnusson
 --
 "Look! Ducks in the lake"
       'Agent Cooper' in Twin Peaks - Lynch, 1990
 Visit my home page: http://www.geocities.com/ulrikm |  |  | 
 |  |  | 
 
                Ulrik Magnusson wrote:
 > 
 > > Apropos objekt.getClass(), saa har jeg set i en test, at den tager lang
 > > tid at udfoere. Er der en der kan give mig en god grund til dette?
 > > Desuden vil jeg meget gerne have omformuleret nedenstaaende
 > > dokumentation til getClass() - jeg forstaar ikke meningen.
 > >
 > > Returns the runtime class of an object. That Class object is the object
 > > that is locked by static synchronized methods of the represented class.
 > 
 > Ja, det lyder også lidt sort, men jeg tror at meningen med det er at hvis
 > du laver en
 > almindelig synchronized metode, låser du det enkelte objekt. Hvis du laver
 > en static
 > synchronized "metode", låser du jo også noget - klassen selv - og det er et
 > objekt, nemlig
 > det objekt som getClass() returnerer.
 > 
 > Altså alt, der kan låses må være et objekt, og derfor må static
 > synchronized jo
 > også låse et objekt - klasseobjektet.
 > 
 > Ok, min forklaring er måske lige så sort (og måske ikke korrekt?), men i
 > det ser
 > ud som om at teksten bare prøver at forklare hvad getClass() returnerer ud
 > fra
 > hvad der ligger bag et tilfælde af klasseobjektets brug.
 Jeg tror, at du har tolket det rigtigt. Det lyder fornuftigt.
 mvh. Morten N
                
                
                 |  |  | 
 |  |  | 
 
                On Mon, 12 Feb 2001 12:30:33 GMT, Ulrik Magnusson <ulrikm@yahoo.com>
 wrote:
 >> Hvad jeg derimod ikke er ligeglad med, er om man kan slippe for at
 >> implementere noget som allerede eksisterer på en smartere måde, _som_
 >> man så senere også skal vedligeholde.
 >
 >Det vil jeg også have en tilbøjelighed til at mene, og derfor piner det
 >mig at konstatere
 >at jeg faktisk har lavet klasseid'er - med stor succes mht programmets
 >hastighed. Det
 >er da noget svineri, men "desparate times calls for desperate measures"..
 Det er iorden at lave det, hvis det er nødvendigt. Men ikke før man
 konstaterer at det er nødvendigt.
 >Hvad gør man i øvrigt i C++ - der har man da ikke en instanceof operator?
 No idea - det er et stykke tid siden jeg har rodet med C++ så dybt    Det kunne være man skulle spørge Igor i dk.edb.programmering.c hvis
 man vil have svar på det spørgsmål    >Ulrik Magnusson
 vh. ld
 -- 
 "Time is the fire in which we burn"
                
                
                 |  |  | 
 |  |  | 
 
                Lars Dam wrote:
 > 
 > On Mon, 12 Feb 2001 11:24:01 +0100, Thorbjørn Ravn Andersen
 > <thunderbear@bigfoot.com> wrote:
 > 
 > >Lars Dam wrote:
 > >> >Kan du ikke bare lave en funktion "int hvemErJeg()"
 > >> >base-klassen kan returnere 0
 > >> >de andre klasser kan fx. returnere 1, 2 eller 3
 > >> Tåbeligt, når der nu er en instanceof operator.
 > >Ikke nødvendigvis.
 > >Hvor meget tid tager et typecheck versus et opslag i en int?
 > 
 > Aner det ikke, og er også ligeglad med hvor lang tid det tager.
 > 
 > Hvad jeg derimod ikke er ligeglad med, er om man kan slippe for at
 > implementere noget som allerede eksisterer på en smartere måde, _som_
 > man så senere også skal vedligeholde.
 Personligt ville jeg i så fald kikke på Interfaces og ikke nedarv.
 -- 
   Thorbjørn Ravn Andersen              "...sound of...Tubular Bells!"
  http://bigfoot.com/~thunderbear |  |  | 
 |  |  | 
 
                > >Hvad gør man i øvrigt i C++ - der har man da ikke en instanceof operator?
 >
 > No idea - det er et stykke tid siden jeg har rodet med C++ så dybt    > Det kunne være man skulle spørge Igor i dk.edb.programmering.c hvis
 > man vil have svar på det spørgsmål    Det tør jeg ikke   . Jeg kunne jo også lige kigge i min "C++ for Java
 Programmers" og
 læse at man bruger "dynamic_cast" operatoren, som er en kombination af
 "instanceof" og
 det egentlige cast - der bliver returneret null, hvis konverteringen ikke
 lykkes..
 Ulrik Magnusson
 --
 DEUTSCH: You two have some sick sex thing?
 BARTON: Sex?! He's a MAN! We WRESTLED!
         Barton Fink - Joel and Ethan Coen, 1991
 Visit my home page: http://www.geocities.com/ulrikm |  |  | 
 | |  | Du har følgende muligheder |  | 
 |  | 
            
               
                    Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
 Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
 |  |  | 
 |  |