//Project Calcolatrice in Java con classi e metodi

Programmazione con la JVM.

Moderator: Falcon

//Project Calcolatrice in Java con classi e metodi

Postby Falcon on Thu Oct 26, 2006 9:04 pm

Ho tirato fuori un programma (visto ke in questo forum tti gli utenti hanno fatto almeno un progetto calcolatrice)volevo postare il mio il quale include una classe main e una classe calcolatrice....fatemi sapere per chiarimenti sulle classi o robe del genere...come sempre
Code: Select all
/*
* Calcolatrice.java
* Classe calcolatrice
* Created on 25 ottobre 2006, 16.53
*/
package calcolatrice;
/**
* @author FightingFalcon
*/
public class Calcolatrice {
    double Op1;
    double Op2;
    double somma(){
        double s;
        s=Op1+Op2;
        return(s);
    }
    double differenza(){
        double d;
        d=Op1-Op2;
        return(d);
    }
    double moltiplicazione(){
        double m;
        m=Op1*Op2;
        return(m);
    }
    double divisione(){
        double div;
        div=Op1/Op2;
        return(div);
    }
}

Code: Select all
/*
* Main.java
* Created on 25 ottobre 2006, 16.51
*/
package calcolatrice;
import java.io.*;
/**
*
* @author FightingFalcon
*/
public class Main {
   
    public static void main(String[] args)throws Exception {
       //Classe principale
        int R;
        Calcolatrice Test=new Calcolatrice();
        System.out.println("Inserisci il primo numero");
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
   String line=input.readLine();
        Test.Op1=Double.parseDouble(line);
        System.out.println("Inserisci il secondo numero");
        line=input.readLine();
        Test.Op2=Double.parseDouble(line);     
        System.out.println("Inserisci l'operazione che vuoi eseguire");
        System.out.println("1)Somma ");
        System.out.println("2)Differenza");
        System.out.println("3)Molptiplicazione ");
        System.out.println("4)Divisione");
        System.out.println("Inserisci l'operatore :");
        line=input.readLine();
        R=Integer.parseInt(line);
        switch(R){
            case 1:
                System.out.println("La somma vale "+Test.somma());
                break;
            case 2:
                System.out.println("La differenza vale "+Test.differenza());
                break;
            case 3:
                System.out.println("La moltiplicazione vale "+Test.moltiplicazione());
                break;
            case 4:
                    if(Test.Op2==0){
                        System.out.println("Non e' possibile effetuare la divisione per 0");
                    }else{
                        System.out.println("La divisione vale "+Test.divisione());
                    }
                    break;
            default:
                System.out.println("Errore nell'inserimento dell'operatore");
                break;
        }
    }
   
}

;)
Linux Slackware User
User avatar
Falcon
Java Programmer
 
Posts: 542
Joined: Sat Jul 08, 2006 8:38 am

//Project Calcolatrice in Java con classi e metodi

Sponsor

Sponsor


Postby k8 on Fri Oct 27, 2006 12:05 am

Bel Lavoro, Se hai tempo fai un bell'archivietto e postalo in homepage! ;)
User avatar
k8
Admin
 
Posts: 2115
Joined: Tue Jun 06, 2006 4:00 pm

Postby iceseyes on Fri Oct 27, 2006 3:00 am

Così per animare la discussione: perchè invece di fare una classe calcolatrice, non fai una classe operazione tipo:
Code: Select all
interface Operazione {
  public void setOperandi(double a, double b);
  public double compute();
  public String name();
}

class Somma implements Operazione {
  private double opA;
  private double opB;

  public void setOperandi(double a, double b) {
    opA = a; opB = b;
  }

  public double compute() { return opA + opB; }

  public String name() { return "Somma"; }
}

/*...Tutte le operazioni che vuoi...*/

class Calcolatrice {
  private List<Operazioni> operazioni = new ArrayList<Operazioni>();

  public Calcolatrice() {
    operazioni.add(new Somma());
    operazioni.add(new Moltiplica());
    operazioni....
    ....
  }

  public List<Operazioni> getOperazioni() { return operazioni; }

  public static void main (String[] args) {
   System.out.println("Scegli operazione:");
   Calcolatrice c = new Calcolatrice();

   int i=0;
   For(Operazione o : c.getOperazioni())
      System.out.println((i++) + ") " + o.name);

   // leggi input
 
   System.out.println(c.getOperazioni()[opSelezionata].compute()); 
  }
}



Cosa ne pensi/pensate? :D
Ci sono solo 10 tipi di persone al mondo: chi capisce il binario e chi no!
User avatar
iceseyes
Help Programmer
 
Posts: 137
Joined: Sun Jul 02, 2006 5:12 pm

Postby Ghost on Fri Oct 27, 2006 4:34 pm

già e poi lo applichi solo su due operandi... ;)
Nella fica mi ci fico!
User avatar
Ghost
Algoritmo
 
Posts: 140
Joined: Sat Jul 29, 2006 4:39 pm

Postby iceseyes on Sat Oct 28, 2006 12:49 pm

solo su due operandi? (se non si capisce, questo non è la versione completa è solo una bozza!)
Ci sono solo 10 tipi di persone al mondo: chi capisce il binario e chi no!
User avatar
iceseyes
Help Programmer
 
Posts: 137
Joined: Sun Jul 02, 2006 5:12 pm

Postby iceseyes on Sat Oct 28, 2006 3:05 pm

Ho implementato la mia bozza: qui trovate i sorgenti: http://www.dreamfactory.it/massimo/wp-content/uploads/2006/10/jcalctar.gz

Per una descrizione dettagliata: http://www.dreamfactory.it/massimo/archives/52

In pratica ho utilizzato I generics e le enumerazione per ridurre la dipendenza dall'implementazione. Si possono aggiungere facilmente nuove operazioni semplicemente aggiungendo voci all'enumerazione (unico punto da modificare) e si possono creare nuove calcolatrici non basate su Double, ma su qualunque classe scrivendo nuove enumerazioni e modificando Main. Adesso è più chiaro?
Ci sono solo 10 tipi di persone al mondo: chi capisce il binario e chi no!
User avatar
iceseyes
Help Programmer
 
Posts: 137
Joined: Sun Jul 02, 2006 5:12 pm

Postby iceseyes on Sat Oct 28, 2006 7:21 pm

Dato che avevo un po' di tempo libero ho ampliato JCalc per risolvere espressioni in forma polacca inversa. Il codice si trova qui: http://www.dreamfactory.it/massimo/wp-content/uploads/2006/10/jcalctar.gz

Ora basta inserire l'espressione che si vuole a patto di scrivere gli operatori dopo i parametri tipo 5 + 4 diventa 4 5 + e 3 + (4 * 2) => 2 4 * 3 +.
Per una spiegazione del meccanismo e del codice ecco l'indirizzo:
http://www.dreamfactory.it/massimo/archives/54
Ci sono solo 10 tipi di persone al mondo: chi capisce il binario e chi no!
User avatar
iceseyes
Help Programmer
 
Posts: 137
Joined: Sun Jul 02, 2006 5:12 pm


Return to Java

Who is online

Users browsing this forum: No registered users and 1 guest

cron