Imparare a programmare in Java. Uno dei linguaggi più diffusi in tutti gli ambiti dell'informatica: applicando l'approccio di sviluppo e progettazione orientati agli oggetti.
Lettori fissi
domenica 12 ottobre 2014
27° Applicazione: Diagramma UML gerarchia interfaccia Pagabile
/*************************************************************/
public interface Pagabile {
double getPagamentoDovuto(); // calcola il pagamento
}
/*************************************************************/
public class Fattura implements Pagabile{
private String numeroPezzo;
private String descrizionePezzo;
private int quantita;
private double prezzoSingolo;
public Fattura(String numeroPezzo, String descrizionePezzo, int quantita,
double prezzoSingolo) {
this.numeroPezzo = numeroPezzo;
this.descrizionePezzo = descrizionePezzo;
this.quantita = quantita;
this.prezzoSingolo = prezzoSingolo;
}
public String getNumeroPezzo() {
return numeroPezzo;
}
public void setNumeroPezzo(String numeroPezzo) {
this.numeroPezzo = numeroPezzo;
}
public String getDescrizionePezzo() {
return descrizionePezzo;
}
public void setDescrizionePezzo(String descrizionePezzo) {
this.descrizionePezzo = descrizionePezzo;
}
public int getQuantita() {
return quantita;
}
public void setQuantita(int numero) {
this.quantita = (numero < 0) ? 0 : numero; // numero non negativo
}
public double getPrezzoSingolo() {
return prezzoSingolo;
}
public void setPrezzoSingolo(double price) {
this.prezzoSingolo = (price < 0 ) ? 0.0 : price;
}
public String toString() {
return String.format("%s: \n%s: %s (%s) \n%s: %d \n%s: $%,.2f",
"fattura ",
"numero del pezzo ", getNumeroPezzo(), getDescrizionePezzo(),
"quantita' ", getQuantita(),
"prezzo per singolopezzo ", getPrezzoSingolo());
}
@Override
public double getPagamentoDovuto() {
return getQuantita() * getPrezzoSingolo();
}
}
/**************************************************
* Non implementiamo i metodi astratti
* quindi ridefiniamo la classeImpiegato come astratta
* @author roberto
*
*/
public abstract class Impiegato implements Pagabile{
// attributi private
private String nome;
private String cognome;
private String codiceFiscale;
// costruttore con 3 argomenti: public
public Impiegato(String _nome, String _cognome, String _cf) {
super();
this.nome = _nome;
this.cognome = _cognome;
this.codiceFiscale = _cf;
}
// Metodi public
// Get| Set
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public String getCodiceFiscale() {
return codiceFiscale;
}
public void setCodiceFiscale(String codiceFiscale) {
this.codiceFiscale = codiceFiscale;
}
public String toString() {
return String.format("%s %s\ncodice fiscale: %s",
getNome(),
getCognome(),
getCodiceFiscale());
}
/**
* Non implementiamo il metodo
* getPagamentoDovuto
* quindi la classe la definiamo abstract
*/
}
/*************************************************************/
public class ImpiegatoSalariato extends Impiegato {
// attributi
private double pagaSettimanale;
// eredita costruttore da Impiegato
public ImpiegatoSalariato(String _nome, String _cognome,
String _codiceFiscale, double _pagaSettimanale) {
super(_nome, _cognome, _codiceFiscale);
// inizializzo pagaSettimanale
setPagaSettimanale(_pagaSettimanale);
}
/**
* Get | Set
*/
public double getPagaSettimanale() {
return pagaSettimanale;
}
public void setPagaSettimanale(double _paga) {
this.pagaSettimanale = _paga < 0.0 ? 0.0 : _paga;
}
public String toString() {
return String.format("Impiegato salariato: %s\n%s: $%,.2f",
super.toString(), "Paga settimanale", getPagaSettimanale());
}
@Override
public double getPagamentoDovuto() {
return getPagaSettimanale();
}
}
/********************************************************/
public class TestPagabile {
public static void main(String[] args) {
// definiamo array di 4 elementi
Pagabile oggettiPagabili[] = new Pagabile[4];
// popoliamo array
oggettiPagabili[0] = new Fattura("01234", "sedile", 2, 375.00);
oggettiPagabili[1] = new Fattura("56789", "gomma", 4, 79.95);
oggettiPagabili[2] = new ImpiegatoSalariato("Sara", "Rossi", "SRA RSS 01 A41 A123B", 800.00);
oggettiPagabili[3] = new ImpiegatoSalariato("Roberto", "Bianchi", "RBT BNC 71 F15 B321 H", 1200.00);
System.out.println("Fatture ed impiegati elaborati in modo polimorfica:\n");
for (Pagabile pagabile : oggettiPagabili) {
// visualizza pagabile
System.out.printf("%s \n%s: $%,.2f\n\n", pagabile.toString(),
"pagamento dovuto", pagabile.getPagamentoDovuto());
}
}// fine main
}
Iscriviti a:
Commenti sul post (Atom)

Nessun commento:
Posta un commento