Avatar billede nanders Nybegynder
27. maj 2009 - 12:02 Der er 7 kommentarer og
1 løsning

Konstanter og variable, der kan læses på tværs af klasser

Kære eksperter,

Er det i nedenstående kode muligt at få klassen 'Beregn' til at kunne læse konstanten z fra 'Hovedprogram'. Hvis ja, hvordan gøres det så?

Det må gerne være sådan, at 'Beregn' ikke skal kalde 'Hovedprogram' for at få z hver eneste gang 'Beregn' kaldes fra 'Hovedprogram' for at udføre en beregning.

public class Hovedprogram
{
    public Hovedprogram() // Dette er hovedprogrammet
    {
        double z=1000;
        double a=7;
        double b=2;
        double c=3;
       
    double p1 = Beregn.plus(a,b,c);
    double p2 = Beregn.gange(a,b,c);
    double p3 = Beregn.minus(a,b,c);
   
    System.out.println(p1);
    System.out.println(p2);
    System.out.println(p3);
}
}

public class Beregn // Dette er beregningsprogrammet
{
public static double plus(double i,double j,double k)
    {
      return z*(i+j+k);
    }

    public static double minus(double i,double j,double k)
    {
      return -i-j-k;
    }
   
    public static double gange(double i,double j,double k)
    {
      return i*j*k;
    }
}

VH. nanders
Avatar billede arne_v Ekspert
27. maj 2009 - 13:47 #1
public class Hovedprogram
{
    public static double z = 1000;

så kan alt referere til det som HovedProgram.z

men men men - det er rigtigt dårligt program design. Jeg vil klart anbefale dig at redesigne.
Avatar billede nanders Nybegynder
28. maj 2009 - 09:05 #2
Arne, det er fordi jeg er i hastighedsproblemer.

Vil det dårlige "program design" være hurtigere end bare at kalde f.eks. plus med z også?

M.a.o. er

public class Hovedprogram
{
public static double z = 1000;

    public Hovedprogram() // Dette er hovedprogrammet
    {
        double a=7;
        double b=2;
        double c=3;
       
    double p1 = Beregn.plus(a,b,c);

og

public static double plus(double i,double j,double k)
    {
      return Hovedprogram.z*(i+j+k);
    }

hurtigere end

public class Hovedprogram
{
    public Hovedprogram() // Dette er hovedprogrammet
    {
        double a=7;
        double b=2;
        double c=3;
        double z = 1000;
       
    double p1 = Beregn.plus(a,b,c,z);

og

public static double plus(double i,double j,double k,double y)
    {
      return (y*(i+j+k));
    }
Avatar billede arne_v Ekspert
28. maj 2009 - 18:39 #3
Jeg ville klart vaelge den sidste.

Jeg kan ikke sige hvilken der er hurtigst.

Formentlig er der ikke en af dem som er universelt hurtigst, men det vil afhaenge af hvilken Java version man bruger.
Avatar billede arne_v Ekspert
28. maj 2009 - 18:40 #4
Jeg er ioevrigt meget sketisk overfor om forskellen paa de to skulle have en signifikant betydning for den samlede performance af din app.
Avatar billede arne_v Ekspert
28. maj 2009 - 18:40 #5
Har du husket det helt basale som f.eks. at koere med:

java -server ...

?
Avatar billede arne_v Ekspert
03. juli 2009 - 22:33 #6
Kommet videre ?
Avatar billede nanders Nybegynder
26. september 2010 - 12:49 #7
Hej Arne,

Vil du smide et svar her?
Avatar billede arne_v Ekspert
26. september 2010 - 15:16 #8
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester