Pages: [1] 2   Go Down
Print
Author Topic: Soluzione Farmaci  (Read 3204 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
207
Matricola
*
Offline Offline

Posts: 95


« 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......
Logged
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #1 on: 08-02-2010, 15:57:15 »

Ecco il codice, non capisco perchè l'ordinamento su ogni riga della matrice non funz  testate

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");
}
}

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

Logged
Flyer
Apprendista Forumista
**
Offline Offline

Posts: 100



« Reply #2 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?
Logged
isuccia89
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 481



« Reply #3 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 
Logged

Se incontrerai qualcuno persuaso di saper tutto e di esser capace di far tutto non potrai sbagliare, costui è un imbecille! (Confucio)
207
Matricola
*
Offline Offline

Posts: 95


« Reply #4 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?
Logged
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #5 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).

 

Logged
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #6 on: 09-02-2010, 15:43:32 »

Ragazzi secondo voi dove sbaglio nel fare l'ordinamento su matrice 
Logged
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #7 on: 09-02-2010, 16:14:00 »

Ragazzi secondo voi dove sbaglio nel fare l'ordinamento su matrice 
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;
}
Logged
m3l0
Matricola
*
Offline Offline

Posts: 74



« Reply #8 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 
Logged
207
Matricola
*
Offline Offline

Posts: 95


« Reply #9 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?
Logged
Kentary
Guest
« Reply #10 on: 11-02-2010, 10:43:58 »

ragazzi scusate una domanda  ,
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
Logged
isuccia89
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 481



« Reply #11 on: 11-02-2010, 10:47:43 »

ragazzi scusate una domanda  ,
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
Logged

Se incontrerai qualcuno persuaso di saper tutto e di esser capace di far tutto non potrai sbagliare, costui è un imbecille! (Confucio)
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #12 on: 11-02-2010, 10:53:15 »

ragazzi scusate una domanda  ,
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.
« Last Edit: 11-02-2010, 13:22:58 by XDnl » Logged
AngyFio
Matricola
*
Offline Offline

Posts: 29


« Reply #13 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?
Logged
XDnl
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 376



« Reply #14 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... 
Logged
Pages: [1] 2   Go Up
Print
Jump to: