/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Dumt(?) spørgsmål
Fra : Lars Fessel


Dato : 01-05-02 12:23



 
 
Dennis Thrysøe (01-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 01-05-02 12:43

Lars Fessel wrote:
> Som relativt nyudsprungen java-programmør er jeg løbet ind i følgende
> problem:
>
> Jeg vil gerne kunne oprette et objekt som kan spille rollen af en
> vilkårlig matematisk funktion. Med andre ord skal en constructor for
> objektet kunne tage et beregnings-udtryk som argument, og udfra dette
> definere en metode.

Du kan ikke umiddelbart definere metoder undervejs. Men du kan sagtens
lave en klasse der kan beregne et udtryk for dig.

Måske er det arv (eller mere specifikt noget ala Strategy pattern) du
leder efter?

Du kan evt. uddybe hvad det er du gerne ville opnå.

-dennis


Lars Fessel (01-05-2002)
Kommentar
Fra : Lars Fessel


Dato : 01-05-02 13:05



Dennis Thrysøe (01-05-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 01-05-02 14:08

Lars Fessel wrote:
> On Wed, 1 May 2002, Dennis Thrysøe wrote:
>
>>Du kan ikke umiddelbart definere metoder undervejs. Men du kan sagtens
>>lave en klasse der kan beregne et udtryk for dig.
>>
>>Måske er det arv (eller mere specifikt noget ala Strategy pattern) du
>>leder efter?
>>
>>Du kan evt. uddybe hvad det er du gerne ville opnå.
>
>
> Du har nok ret i at arv er den bedste løsning.
> Jeg havde håbet, at det var muligt at undgå at skrive en ny klasse for
> hvert funktions-objekt, men hvis det ikke er muligt at definere metoder
> ved oprettelse af objekter, er der vist ingen vej udenom.

Du kan vælge, at lave det som en mere dynamisk (nærmest fortolket)
løsning. Men det ville være et meget større arbejde. Jeg ville
sandsynligvis vælge at lave det som arv. Med mindre du har til hensigt
at implementere et uoverskueligt stort antal funktioner.

En dynamisk beregner kunne virke således:

float result = myCalculator.calculate("4 + (7 * sin(18))");



-dennis


Poul C (01-05-2002)
Kommentar
Fra : Poul C


Dato : 01-05-02 13:33

Hej Lars


"Lars Fessel" skrev
> Jeg vil gerne kunne oprette et objekt som kan spille rollen af en
vilkårlig matematisk funktion.

Mon det du søger ikke er en såkaldt "PARSER"
Dette er en klasse der kan analysere og evaluere et matematisk
streng-udtryk, som du giver til input.

Jeg bruger selv JAVA EXPRESSION PARSER, der kan hentes på:
http://jep.sourceforge.net/ (GNU licens)

Den virker perfekt, og er velegnet til plotning af matematiske funktioner,
som brugeren selv specificerer på Run-Time

Man kan definere flere uafhængive variable x, y, z, s, t osv.osv.

Venlig hilsen
Poul Christoffersen









Filip Larsen (01-05-2002)
Kommentar
Fra : Filip Larsen


Dato : 01-05-02 18:55

Lars Fessel skrev

> Jeg vil gerne kunne oprette et objekt som kan spille rollen af en
> vilkårlig matematisk funktion. Med andre ord skal en constructor for
> objektet kunne tage et beregnings-udtryk som argument, og udfra dette
> definere en metode.

Hvis ikke du er ude efter en parser, som foreslået tidligere i denne tråd,
så kunne det være du kan bruge anonyme klasser til at lave noget i stil med:

public interface Function {
}

public interface UnaryFunction extends Function {
double apply(double x);
}

public interface BinaryFunction extends Function {
double apply(double x, double y);
}


public class MyFunctionGenerator {
public Function getIncrementFunction() {
return new UnaryFunction() {
public double apply(double x) { return x+1; }
}
}
public Function getAddFunction() {
return new BinaryFunction() {
public double apply(double x, double y) { return x+y; }
}
}
}



Mvh,
--
Filip Larsen <filip.larsen@mail.dk>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste