Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: 207 on 08-02-2010, 11:46:16



Title: Soluzione Farmaci
Post by: 207 on 08-02-2010, 11:46:16
Ragazzi per favore qualcuno potrebbe postare il diagramma UML dell'esercizio sulla classe Farmaci svolto in classe con il professore Cincotti? help......


Title: Re:Soluzione Farmaci
Post by: m3l0 on 08-02-2010, 15:57:15
Ecco il codice, non capisco perchè l'ordinamento su ogni riga della matrice non funz  :-)|

Code:
//CLASSE Farmaco
abstract class Farmaco
{
private String nome;
private Data scadenza;
protected static int c=2;

public Farmaco(String nome, Data scadenza)
{
this.nome=nome;
this.scadenza=scadenza;
}

public Data getScadenza()
{
return this.scadenza;
}

abstract public String getTipo();
abstract public float getPrezzo();
abstract public String toString();
}

//CLASSE Antimicrobici
abstract class Antimicrobici extends Farmaco
{
private String formaFarmaceutica;
private int[] indicazioni;
protected static int totale;

public Antimicrobici(String nome, Data scadenza, String formaFarmaceutica, int[] indicazioni)
{
super(nome, scadenza);
this.formaFarmaceutica=formaFarmaceutica;
this.indicazioni=indicazioni;
totale++;
}

public int getNum()
{
return this.indicazioni.length;
}

public int getMicrobici()
{
return totale;
}

public float getPrezzo()
{
return (float)(1+Math.random() * 10 * getMicrobici() / 0.8);
}

abstract public String getTipo();
abstract public String toString();
}

//CLASSE Antivirale
class Antivirali extends Antimicrobici
{
private Rivestimento rivestimento;

public Antivirali(String nome, Data scadenza, String formaFarmaceutica, int[] indicazioni, Rivestimento rivestimento)
{
super(nome, scadenza, formaFarmaceutica, indicazioni);
this.rivestimento=rivestimento;
}

public Rivestimento getR()
{
return rivestimento;
}

public String getTipo()
{
return ">>FARMACO ANTIVIRALE<<";
}

public String toString()
{
return getTipo()+"\nData scadenza: "+super.getScadenza()+"\nINFO Rivestimento:\n"+getR()+"\nPrezzo: "+super.getPrezzo();
}
}

//CLASSE Antibatterici
class Antibatterici extends Antimicrobici
{
private String principioAttivo;

public Antibatterici(String nome, Data scadenza, String formaFarmaceutica, int[] indicazioni, String principioAttivo)
{
super(nome, scadenza, formaFarmaceutica, indicazioni);
this.principioAttivo=principioAttivo;
}

public String getTipo()
{
return ">>FARMACO ANTIBATTERICO<<";
}

public String toString()
{
return getTipo()+"\nData scadenza: "+super.getScadenza()+"\nPrezzo: "+super.getPrezzo();
}
}

//CLASSE Antimicotici
class Antimicotici extends Antimicrobici
{
private String produttore;

public Antimicotici(String nome, Data scadenza, String formaFarmaceutica, int[] indicazioni, String produttore)
{
super(nome, scadenza, formaFarmaceutica, indicazioni);
this.produttore=produttore;
}

public String getTipo()
{
return ">>FARMACO ANTIMICOTICO<<";
}

public String toString()
{
return getTipo()+"\nData scadenza: "+super.getScadenza()+"\nPrezzo: "+super.getPrezzo();
}
}

//CLASSE Vaccini
class Vaccini extends Farmaco
{
private Data dataProduzione;

public Vaccini(String nome, Data scadenza, Data dataProduzione)
{
super(nome, scadenza);
this.dataProduzione=dataProduzione;
}

public float getPrezzo()
{
return (float)(c * 20);
}

public String getTipo()
{
return ">>FARMACO VACCINO<<";
}

public String toString()
{
return getTipo()+"\nData scadenza: "+super.getScadenza()+"\nData produzione: "+this.dataProduzione+"\nPrezzo: "+getPrezzo();
}
}

//CLASSE Rivestimento
class Rivestimento
{
private String composizione;
private int resGastrica;
private Data brevetto;

public Rivestimento(String composizione, int resGastrica, Data brevetto)
{
this.composizione=composizione;
this.resGastrica=resGastrica;
this.brevetto=brevetto;
}

public int getGastrica()
{
return this.resGastrica;
}

public String toString()
{
return "\nRIVESTIMENTO:"+"\nComposizione: "+this.composizione+"\nResistenza gastrica: "+this.resGastrica+"\nData brevetto: "+this.brevetto;
}
}

//CLASSE Data
class Data
{
private int gg;
private int mm;
private int aaaa;

public Data(int gg, int mm, int aaaa)
{
this.gg=gg;
this.mm=mm;
this.aaaa=aaaa;
}

public String toString()
{
return this.gg+"/"+this.mm+"/"+this.aaaa;
}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++

class Prova
{
public static int giorno()
{
return (int)(Math.random()*31+1);
}

public static int mese()
{
return (int)(Math.random()*12+1);
}

public static int anno()
{
return (int)(Math.random()*110+1900);
}

public static String forma()
{
String str="";
for(int i=0; i<(int)(Math.random() * 4 + 4); i++)
str += (char)(Math.random() * 26) + 'A';
return str;
}

public static int[] indicaz()
{
int[] A = new int[3];
for(int i=0; i<A.length; i++)
A[i] = (int)(Math.random()*8+1);
return A;
}

public static int gastrica()
{
return (int)(Math.random() * 10 + 1);
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//MAIN
public static void main(String[] args)
{
Farmaco[][] vett = new Farmaco[10][4];

for(int i=0; i<vett.length; i++)
for(int j=0; j<vett[i].length; j++)
{
int x = (int)(Math.random() * 4);
switch(x)
{
//Antivirali
case 0:
Data a = new Data(giorno(), mese(), anno());
Rivestimento a1 = new Rivestimento("booo", gastrica(), a);
vett[i][j] = new Antivirali("AAA", a, forma(), indicaz(), a1);
break;

//Antibatterici
case 1:
Data b = new Data(giorno(), mese(), anno());
vett[i][j] = new Antibatterici("BBB", b, forma(), indicaz(), "-----");
break;

//Antimicotici
case 2:
Data c = new Data(giorno(), mese(), anno());
vett[i][j] = new Antimicotici("CCC", c, forma(), indicaz(), "-------");
break;

//Vaccini
case 3:
Data d1 = new Data(giorno(), mese(), anno());
Data d2 = new Data(giorno(), mese(), anno());
vett[i][j] = new Vaccini("DDD", d1, d2);
break;
}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//ORDINAMENTO
for(int a=0; a<vett.length; a++)
{
for(int i=0; i<vett[a].length-1; i++)
{
int minimo = i;
for(int j= i+1; j<vett[a].length; j++)
{
if(vett[a][minimo].getPrezzo()>vett[a][j].getPrezzo())
{
minimo = j;
}
}

if(minimo!=i)
{
Farmaco k = vett[a][minimo];
vett[a][minimo]= vett[a][i];
vett[a][i] = k;
}
}
}


//Stampa collezione ordinata
for(int a=0; a<vett.length; a++)
{
System.out.println("---------------RIGA "+(a+1)+"------------------");
for(int b=0; b<vett[a].length; b++)
{
System.out.println(vett[a][b]+"\n\n");
}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
}



Title: Re:Soluzione Farmaci
Post by: Flyer on 09-02-2010, 00:35:20
Ma nel compito oltre a sviluppare l'Uml e i frammenti di codice che vengono chiesti nel testo, bisogna sviluppare anche i metodi?


Title: Re:Soluzione Farmaci
Post by: isuccia89 on 09-02-2010, 10:49:53
Ma nel compito oltre a sviluppare l'Uml e i frammenti di codice che vengono chiesti nel testo, bisogna sviluppare anche i metodi?

no bisogna fare soltanto quello ke c'è scritto... quindi UML e i frammenti di codice ke vengono richiesti nei tre punti  .wink


Title: Re:Soluzione Farmaci
Post by: 207 on 09-02-2010, 12:10:06
Alla variabile di istanza scadenza di tipo Data della classe Farmaco, gli viene assegnato un'altro oggetto di tipo Data.
Conviene fare quello detto sopra oppure passare nel costruttore di Farmaco tre interi giorno,mese,anno e inizializzare scadenza di tipo Data con i tre interi?


Title: Re:Soluzione Farmaci
Post by: XDnl on 09-02-2010, 12:13:33
Alla variabile di istanza scadenza di tipo Data della classe Farmaco, gli viene assegnato un'altro oggetto di tipo Data.
Conviene fare quello detto sopra oppure passare nel costruttore di Farmaco tre interi giorno,mese,anno e inizializzare scadenza di tipo Data con i tre interi?

Secondo me conviene passare la Data direttamente, cosi' se dovessi eventualmente aggiungere altri parametri (che so, l'orario) non hai bisogno di modificare il costruttore della classe Farmaco.  :-OK

Poi mi permetto di farvi notare due cose:
1) I metodi che hai scritto per generare date e stringhe casuali sono ok, pero' nella terza prova non servono. Il professore ha detto che basta scrivere tipo new Antimicrobico(...); e te ne esci

2) Nella gerarchia ereditaria manca la classe per l'indicazione terapeutica (non è un int, ma bensi' una coppia codice-descrizione).

 .ciaociao



Title: Re:Soluzione Farmaci
Post by: m3l0 on 09-02-2010, 15:43:32
Ragazzi secondo voi dove sbaglio nel fare l'ordinamento su matrice  .penso


Title: Re:Soluzione Farmaci
Post by: XDnl on 09-02-2010, 16:14:00
Ragazzi secondo voi dove sbaglio nel fare l'ordinamento su matrice  .penso
I cicli sono impostati correttamente, è l'algoritmo all'interno che è errato:
Code:
//ORDINAMENTO
for(int a=0; a<vett.length; a++)
for(int i=0; i<vett[a].length-1; i++)
for(int j= i+1; j<vett[a].length; j++)
if(vett[a][i].getPrezzo()>vett[a][j].getPrezzo())
{
Farmaco temp = vett[a][i];
vett[a][i]= vett[a][j];
vett[a][j] = temp;
}


Title: Re:Soluzione Farmaci
Post by: m3l0 on 09-02-2010, 16:36:48
Ho provato il tuo codice, ma i farmaci non vengono ordinati in base al prezzo rimangono sempre casuali  .nono


Title: Re:Soluzione Farmaci
Post by: 207 on 10-02-2010, 09:59:26
Non ho capito bene che cosa vuole il metodo Revisione, ho capito che è un metodo astratto che deve essere inserito all'interno della classe Antimicrobici, ma cosa mettere all'interno? che tipo restituisce?


Title: Re:Soluzione Farmaci
Post by: Kentary on 11-02-2010, 10:43:58
ragazzi scusate una domanda  .wink,
nella terza prova quando dice:
 si fornisca un frammento di programma che descriva la creazione e l'inizializzazione casuale di una collezione di 100x300 farmaci raccolti in forma matriciale...  :boh
dobbiamo creare il main e l'inizializzazione casuale dell'oggetto? :-OK


Title: Re:Soluzione Farmaci
Post by: isuccia89 on 11-02-2010, 10:47:43
ragazzi scusate una domanda  .wink,
nella terza prova quando dice:
 si fornisca un frammento di programma che descriva la creazione e l'inizializzazione casuale di una collezione di 100x300 farmaci raccolti in forma matriciale...  :boh
dobbiamo creare il main e l'inizializzazione casuale dell'oggetto? :-OK

devi creare la matrice
Farmaco A[][] = new Farmaco[100][300];
con i relativi cicli for, e poi la random per elencare gli oggetti della collezione


Title: Re:Soluzione Farmaci
Post by: XDnl on 11-02-2010, 10:53:15
ragazzi scusate una domanda  .wink,
nella terza prova quando dice:
 si fornisca un frammento di programma che descriva la creazione e l'inizializzazione casuale di una collezione di 100x300 farmaci raccolti in forma matriciale...  :boh
dobbiamo creare il main e l'inizializzazione casuale dell'oggetto? :-OK

devi creare la matrice
Farmaco A[][] = new Farmaco[100][300];
con i relativi cicli for, e poi la random per elencare gli oggetti della collezione

Per la terza prova, su carta devi scrivere una cosa del genere:
Code:
// Generazione casuale di 100x300 elementi
Farmaco[][]m  = new Farmaco[100][300];
for (int i = 0; i < m.length; i++)
for (int j = 0; j < m[i].length; j++)
switch ((int)(Math.random() * 4))
{
case 0:
m[i][j] = new Vaccino(...);
break;
case 1:
m[i][j] = new AntiMicotico(...);
break;
case 2:
m[i][j] = new Antivirale(...);
break;
case 3:
m[i][j] = new Antibatterico(...);
break;
}

Basta mettere tre puntini nella chiamata ai vari costruttori

EDIT: Sì, io il main l'ho creato.


Title: Re:Soluzione Farmaci
Post by: AngyFio on 13-02-2010, 16:26:31
...

Basta mettere tre puntini nella chiamata ai vari costruttori

...

Ma il prof Cincotti accetta i puntini sospensivi oppure dobbiamo inizializzare casualmente anche ogni parametro da passare?


Title: Re:Soluzione Farmaci
Post by: XDnl on 13-02-2010, 17:31:03
...

Basta mettere tre puntini nella chiamata ai vari costruttori

...

Ma il prof Cincotti accetta i puntini sospensivi oppure dobbiamo inizializzare casualmente anche ogni parametro da passare?
Nella TERZA PROVA scritta, il prof Cincotti accetta i puntini sospensivi, non devi inizializzare casualmente manco un parametro...  .wink


Title: Re:Soluzione Farmaci
Post by: AngyFio on 14-02-2010, 12:59:25
...

Basta mettere tre puntini nella chiamata ai vari costruttori

...

Ma il prof Cincotti accetta i puntini sospensivi oppure dobbiamo inizializzare casualmente anche ogni parametro da passare?
Nella TERZA PROVA scritta, il prof Cincotti accetta i puntini sospensivi, non devi inizializzare casualmente manco un parametro...  .wink

Ok grazie mille...  .wink
 :-ciao


Title: Re:Soluzione Farmaci
Post by: 207 on 18-02-2010, 13:43:43
Come converrebbe gestire il numero di giorni di validità dei vaccini che serve per calcolare il prezzo? .poverinoi