sto studiando un libro che tratta JAVA e sono ad un capitolo che spiega la creazione delle classi, ma non ho capito molto bene come funziona tale creazione. Di seguito posto il codice degli esempi del libro e vorrei che qualcuno me li spieghi (se può!).
Primo esempio (creazione di una classe per la gestione di account bancari e relativi servizi):
codice:import java.text.NumberFormat; public class Account { private NumberFormat fmt = NumberFormat.getCurrencyInstance(); private final double RATE = 0.045; // tasso d'interesse del 4.5% private long acctNumber; private double balance; private String name; // Si definisce il nome del propietario del conto corrente, il numero del conto e il saldo iniziale public Account (String owner, long account, double initial) { name = owner; // nome propietario acctNumber = account; // numero conto balance = initial; // saldo iniziale } // operazione di deposito dopo il quale restituisce il nuovo saldo public double deposit (double amount) { if (amount < 0) // se il valore del versamento è negativo { System.out.println (); System.out.println ("Attenzione, avete inserito un valore non valido, riprovate!"); System.out.println (acctNumber + " " + fmt.format(amount)); } else balance = balance + amount; // saldo iniziale + versamento return balance; } // operazione di prelievo alla fine della quale viene visualizzato il nuovo saldo public double withdraw (double amount, double fee) { amount += fee; if (amount < 0) // condizione negativa di prelievo dato che non vi sono soldi nel conto { System.out.println (); System.out.println ("Attenzione! Prelievo non disponibile. Saldo insufficiente!"); System.out.println ("Numero conto: " + acctNumber); System.out.println ("Importo richiesto: " + fmt.format(amount)); } else if (amount > balance) // il prelievo supera il saldo { System.out.println (); System.out.println ("Attenzione " + name + ": l'importo immesso supera il saldo!"); System.out.println ("Numero conto: " + acctNumber); System.out.println ("Importo richiesto: " + fmt.format(amount)); System.out.println ("Disppnibile: " + fmt.format(balance)); } else balance -= amount; return balance; } // calcolo degli interessi public double addInterest () { balance += (balance*RATE); // il totale è uguale alla somma del totale iniziale + il prodotto tra saldo iniziale + 4,5% return balance; // mostra il saldo finale comprensivo degli interessi } // visualizza il saldo corrente public double getBalance () { return balance; } // visualizza il numero di conto public double getAccountNumber () { return acctNumber; } // visualizza la descrizione testuale del conto corrente public String toString () { return (acctNumber + "\t" + name + "\t" + fmt.format(balance)); } }
Secondo esempio (gestione di operazioni tra numeri razionali):
codice:public class Rational { private int numerator, denominator; // inizializza il numero verificando che il denominatore sia diverso da 0 e assegnando un segno solo al numeratore public Rational (int numer, int denom) { if (denom == 0) denom = 1; // memorizza il segno al numeratore if (denom < 0) { numer = numer * -1; denom = denom * -1; } numerator = numer; denominator = denom; reduce(); } // Somma il numero razionale corrente a quello passato come parametro. Il denominatore come è calcolato moltiplicando i singoli denominatori public Rational add (Rational op2) { int commonDenominator = denominator * op2.getDenominator(); int numerator1 = numerator * op2.getDenominator(); int numerator2 = op2.getNumerator() * denominator; int sum = numerator1 + numerator2; return new Rational (sum, commonDenominator); } // Sottrae il numero razionale passato come parametro da quello corrente public Rational substract (Rational op2) { int commonDenominator = denominator * op2.getDenominator(); int numerator1 = numerator * op2.getDenominator(); int numerator2 = op2.getNumerator() * denominator; int difference = numerator1 - numerator2; return new Rational (difference, commonDenominator); } // moltiplica il numero razzioanle corrente con quello passato come parametro public Rational multiply (Rational op2) { int numer = numerator * op2.getNumerator(); int denom = denominator * op2.getDenominator(); return new Rational (numer, denom); } // divide il numero razionale corrente con quello passato come parametro per quello corrente moltiplicandolo per il reciproco del parametro public Rational divide (Rational op2) { return multiply (op2.reciprocal()); } // restituisce il reciproco del numero razionale corrente public Rational reciprocal () { return new Rational (denominator, numerator); } // restiuscie ni numeratore del numero razionale corrente public int getNumerator () { return numerator; } // restituisce il denominatore del numero razionale corrente public int getDenominator () { return denominator; } // Determina se il numeratore del numero razionale corrente è uguale a quello passato come parametro. Suppone che entrambi siano ridotti public boolean equals (Rational op2) { return (numerator == op2.getNumerator() && denominator == op2.getDenominator() ); } // visualizza il numero razzionale corrente in forma testuale public String toString () { String result; if (numerator == 0) result = "0"; else if (denominator == 1) result = numerator + ""; else result = numerator + "/" + denominator; return result; } // riduce il numero razioanle corrente dividendo numeratore e donominatore per il loro massimo comun divisore private void reduce () { int common; common = gdc (Math.abs(numerator), denominator); numerator = numerator / common; } // clacola e visualizza il massimo comune divisore dei due parametri interi. Usa l'algoritmo di Euclide private int gdc (int num1, int num2) { while (num1 != num2) if (num1 > num2) num1 = num1 - num2; else num2 = num2 - num1; return num1; } }
vi ringrazio in anticipo, il vostro aiuto si rivelerà sicuramente prezioso!

Rispondi quotando