Programm optimieren?



  • Hi,

    kann man dieses Programm noch optimieren?

    import java.io.*;  
    
    class bezugskosten  
    {  
         double listenpreis;  
         double rabattsatz;  
         double skontosatz;  
         double bezugskosten;  
         double zielpreis;  
         double barpreis;  
         double bezugspreis;  
         double rabatt;  
         double skonto;  
    
         void rechnen()  
         {  
              rabatt =  listenpreis * rabattsatz / 100;  
              zielpreis = listenpreis - rabatt;  
              skonto = zielpreis *skontosatz /100;  
              barpreis =  zielpreis - bezugskosten;  
              bezugspreis = barpreis + bezugskosten;  
         }  
    
         public static void main (String[]arguments) throws IOException  
         {  
              BufferedReader tastatur = new BufferedReader (new InputStreamReader(System.in));  
              bezugskosten neu = new bezugskosten();  
    
              String eingabe;  
              System.out.print("Geben Sie den Listenpreis ein!");  
                   eingabe = tastatur.readLine();  
              neu.listenpreis = Double.parseDouble(eingabe);  
              System.out.print("Geben Sie den Rabattsatz ein!");  
                   eingabe = tastatur.readLine();  
              neu.rabattsatz = Double.parseDouble(eingabe);  
              System.out.print("Geben Sie den Skontosatz ein!");  
                   eingabe = tastatur.readLine();  
              neu.skontosatz = Double.parseDouble(eingabe);  
              System.out.print("Geben Sie die Bezugskosten ein!");  
                   eingabe = tastatur.readLine();  
              neu.bezugskosten = Double.parseDouble(eingabe);  
              neu.rabatt = 0;  
              neu.zielpreis = 0;  
              neu.skonto = 0;  
              neu.barpreis = 0;  
              neu.bezugspreis = 0;  
              neu.rechnen();  
              System.out.println("Listenpreis " + neu.listenpreis);  
              System.out.println("Lieferrabatt " + neu.rabattsatz);  
              System.out.println("Zieleinkaufspreis " + neu.zielpreis);  
              System.out.println("Lieferskonto " + neu.skontosatz);  
              System.out.println("Bareinkaufspreis " + neu.barpreis);  
              System.out.println("Bezugskosten " + neu.bezugskosten);  
              System.out.println("Bezugspreis " + neu.bezugspreis);  
    
         }  
    }
    


  • Divisionen sind eigentlich nicht so gut wie Multiplikationen.
    Also bei /100 könnte man *0.01 schreiben.
    Ansonsten ist das Programm etwas klein um da etwas gescheites über Optimierungen sagen zu können.



  • Ja, in Bezug auf guten Stil. Variablen sollten erst definiert werden, wenn sie gebraucht werden.
    Und Klassennamen schreibt man in Java groß.



  • Man könnte auch noch Acces Modifier verwenden. rechnen() sieht zB sehr ach private aus 😉



  • Das ganze Design ist IMO mies. Wieso muss der Benutzer der Klasse erst alle (öffentlich zugänglichen) Variablen auf 0 setzen?
    Alle notwendigen Variablen sollten im Konstruktor übergeben werden. Momentan hat die Klasse nur einen Zweck: rechnen. Dann kannst du auch gleich rechnen() im Ctor aufrufen. Die Variablen würde ich private machen und getter anbieten.



  • könnte denn jemand mal eine "profi"-version posten? So zum vergleich?



  • > kann man dieses Programm noch optimieren?

    auf was? auf Geschwindigkeit?
    auf Programmgröße? (ich mein die Größe des Bytecodes)



  • code-größe und geschwindigkeit (2. ist optional)



  • So ein Programm klatscht man einfach in die main() und gut ist, jeder Gedanke an Design oder Optimierung ist hier absolute Verschwendung von Ressourcen.



  • Seh ich genau so. Eine Wiederverwendung wird wohl nicht stattfinden 🙂



  • SirLant schrieb:

    So ein Programm klatscht man einfach in die main() und gut ist, jeder Gedanke an Design oder Optimierung ist hier absolute Verschwendung von Ressourcen.

    CengizS schrieb:

    Seh ich genau so. Eine Wiederverwendung wird wohl nicht stattfinden 🙂

    Offensichtlich versucht hier ein Anfänger, das Programmieren zu lernen und dafür ist ein schneller h4ck genau richtig, sehe ich auch so.



  • Zum Thema sinnloses optimieren 😃 :

    Man könnte Fomeln optimieren:

    z. B. kann man für den Audruck:
    a * a * a + 3 * a * a * b + 3 * a * b * b + b * b * b
    auch
    (a + b) * (a + b) * (a+ b)
    schreiben

    erster Ausdruck enthält 13 Operatoren
    zwetier Ausdruck enthält 5 Operatoren

    der zweite Ausdruck wird wesentlich schneller ausgewertet als der erste - beide Ausdrücke liefern jedoch das gleiche Ergebnis


Anmelden zum Antworten