Commit 8df5e4b8 authored by Sara Nicastro's avatar Sara Nicastro

versione 1

parents
package nuovopackage;
interface Confronto {
//provare: metti static sui metodi della interface
public boolean maggiore(int intero1, int intero2);
public boolean minore(int intero1, int intero2);
public boolean maggiore(double double1, double double2);
public boolean minore(double double1, double double2);
}
/*
NOTA: nel seguito ho usato tipi dati primitivi e non le corrispettive classi wrapper, pertanto gli operatori agiscono sui valori e non sui riferimenti, che è ciò che voglio.
/*
Q: la conversione di tipo se provo a costruire un OriginArray con int viene fatta già dal costruttore?
*/
package nuovopackage;
public class EseguiOperazioni extends Operazioni {
boolean booleanoUltimo;
//questo costruttore deve inizializzare i campi:
// doubles di OriginArray
//
public EseguiOperazioni(double double1, double double2){
super(double1, double2); //inizializzo classe base con input utente
booleanoConfronto1=minore(double1, double2);
booleanoConfronto2=maggiore(double1, double2);
booleanoLogico1=and(booleanoConfronto1, booleanoConfronto2);
booleanoLogico2=or(booleanoConfronto1, booleanoConfronto2);
booleanoUltimo=not(booleanoLogico1, booleanoLogico2);
System.out.println("costruisco EseguiOperazioni");
}
public static void main(String[] args){
EseguiOperazioni esegOp = new EseguiOperazioni(3.14, 2.7);
System.out.println(esegOp);
}
}
package nuovopackage;
interface Logici{
public boolean and(boolean booleano1, boolean booleano2);
public boolean or(boolean booleano1, boolean booleano2);
public boolean not(boolean booleano1, boolean booleano2);
}
package nuovopackage;
class Operazioni extends OriginArray implements Confronto, Logici {
public Operazioni(double a, double b){
super(a,b);
}
boolean booleanoConfronto1, booleanoConfronto2;
boolean booleanoLogico1, booleanoLogico2;
/* **** IMPLEMENTS CONFRONTO ****** */
public boolean maggiore(int intero1, int intero2){
boolean booleano;
if (intero1>intero2){booleano=true;}
else if (intero1<intero2){booleano=false;}
else {booleano=false;}
// ed il caso di uguaglianza? come si mette con la precisione finita di macchina?
return booleano;
}
//esiste un modo per assegnare a minore la negazione di maggiore senza dover riscrivere il codice?
public boolean minore(int intero1, int intero2){
boolean booleano;
if (intero1>intero2){booleano=false;}
else if (intero1<intero2){booleano=true;}
else {booleano=false;}
return booleano;
}
public boolean maggiore(double double1, double double2){
boolean booleano;
if (double1>double2){booleano=true;}
else if (double1<double2){booleano=false;}
else {booleano=false;}
return booleano;
}
public boolean minore(double double1, double double2){
boolean booleano;
if (double1>double2){booleano=false;}
else if (double1<double2){booleano=true;}
else {booleano=false;}
return booleano;
}
/* **** FINE IMPLEMENTS CONFRONTO *************** */
/* **** IMPLEMENTS LOGICI ****** */
public boolean and(boolean booleano1, boolean booleano2){
boolean booleano;
booleano= booleano1 && booleano2;
return booleano;
}
public boolean or(boolean booleano1, boolean booleano2){
boolean booleano;
booleano= booleano1 || booleano2;
return booleano;
}
public boolean not(boolean booleano1, boolean booleano2){
boolean booleano;
booleano = booleano1 != booleano2;
return booleano;
}
/* **** FINE IMPLEMENTS LOGICI ************ */
// Ti conviene scrivere una sottoclasse di Operazioni che contiene meno codice. Cioè operazioni ti implementa le interface e ti dice quali sono i campi della classe Operazioni.
//Nella sottoclasse che scriverai farai l'assegnazione delle variabili e scriverai il costruttore.
} // FINE CLASSE
package nuovopackage;
public class OriginArray{
//se si prova ad inizializzare OriginArray con int al posto di double, sicuramente il compilatore si lamenta. Dovrei scrivere del codice che gestisce gli errori per far sì che avvenga in automatico una conversione di tipo in double dove possibile?
private double[] doubles = new double[2];
//non metto static perché questo campo deve poter essere diverso per istanze di classe diverse.
public OriginArray(double double1, double double2){
this.doubles[0]=double1;
this.doubles[1]=double2;
}
//i seguenti get,set non sono statici perché si possono applicare solo ad istanze della classe
public void getOriginArray(double doubles[]){
System.out.println(doubles);
}
//uso protected oppure public?
//quale differenza c'è tra questo metodo ed il metodo costruttore, oltre allo specificatore di accesso? --> cambio i campi senza costruire un nuovo oggetto?
protected void setOriginArray(double double1, double double2){
this.doubles[0]=double1;
this.doubles[1]=double2;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment