Pages: 1 [2] 3   Go Down
Print
Author Topic: Terza prova: Camini  (Read 5454 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
arcotix
Matricola
*
Offline Offline

Posts: 18


« Reply #15 on: 28-02-2009, 19:20:52 »

ok mi sa che ti seguo
intanto continuo a farlo e poi lo posto..
Logged
arcotix
Matricola
*
Offline Offline

Posts: 18


« Reply #16 on: 28-02-2009, 19:56:34 »

il metodo getCannaFumaria che restituisce la canna fumaria, a livello di codice, come va scritto?cioè mi restituisce le informazioni relative alla canna fumaria?quindi lunghezza, larghezza ecc...?
Logged
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #17 on: 28-02-2009, 20:00:00 »

io ho fatto semplicemente return Canna;
nn dice nulla a riguardo
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #18 on: 28-02-2009, 20:31:21 »

io ho fatto semplicemente return Canna;
nn dice nulla a riguardo


Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
arcotix
Matricola
*
Offline Offline

Posts: 18


« Reply #19 on: 01-03-2009, 00:00:12 »

 testate giusto giusto....
Logged
Dhavamba
Apprendista Forumista
**
Offline Offline

Posts: 286


« Reply #20 on: 01-03-2009, 10:31:25 »

zelotto, vedendo il tuo esercizio ho visto una classe data che comprende gorni mesi o anni...scusa ma perchè complicarsi? non bastava mettere solo il numero dei giorni o al limite un codice per trasformare gli anni o in mesi in giorni?
Logged
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #21 on: 01-03-2009, 10:36:25 »

Mi permetto di risponderti xkè credo di sapere il xkè (chiedo scusa a Zeloto)
Quando programmi qualcosa in generale (purtroppo) devi sempre pensare che il programma sia davvero messo in circolazione ed usato da qualche persona...quindi se lo usasse una ditta che fa camini probabilmente registrerebbe ogni camino consegnato con le sue caratteristiche (tipo, quantità di calore) e anche con la data in cui viene x esempio creato. In questo caso si crea una classe data x implementare questa "opzione"
Java tende a crear + classi possibili...quindi si crea anche una classe data...poi sarà un problema del programmatore implementarla correttamente...a noi sta solo il compito di indicare dove dovrà andare e quando richiamare un oggetto di tale classe. Spero d'esser stato d'aiuto =)
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #22 on: 01-03-2009, 11:28:29 »

zelotto, vedendo il tuo esercizio ho visto una classe data che comprende gorni mesi o anni...scusa ma perchè complicarsi? non bastava mettere solo il numero dei giorni o al limite un codice per trasformare gli anni o in mesi in giorni?
bè ma non si sta complicando la vita  in fondo non siete voi che poi dovete scrivere tutte le classi in java quindi fate le cose per bene!!così come dice Manna l'uml che voi create "in teoria" dovrebbe essere effettivamente utilizzato quindi nelle classi vanno messe tutte le variabili e i metodi necessari...non solo quelli che servono per svolgere le consegne del prof  più accurata è la descrizione delle classi e meglio è!
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
•Black Angel•
Matricola
*
Offline Offline

Posts: 56



« Reply #23 on: 01-03-2009, 14:42:36 »

ecco il mio UML

ve lo posto qui perchè non so disegnarlo..

Code:
[u]Classe Abstract Camino[/u]

- volume:int
# totale:int
- final c:int

+Camino(volume:int)
+getVolume():int  -->> {return volume;}
+getTotale():int  -->> {return totale}
+setVolume():void
<<abstract>> +getPrezzo():double
<<abstract>> +toString():String


[u]Classe Ornamentale Extends Camino[/u]

-marmo:String

+Ornamentale(volume:int, marmo:STring)
+getMarmo():String
+getPrezzo():double  -->> { return 5,2 * c * getVolume();}
+toString():String


[u]Classe Abstract Riscaldamento Extends Camino[/u]

- calore:float
-canna: Canna

+Riscaldamento(volume:int, calore:float, canna:Canna)
+getCalore():int
+getCanna():Canna  -->>{return canna;}
+getPrezzo():double  -->> {return c*getDiametro()}
+toString():String


[u]Classe Muratura extends Riscaldamento[/u]

- altezza:int

+Muratura(volume:int, calore:float, canna:Canna, altezza:int)
+getAltezza():int
+toString():String


[u]Classe Ghisa extends Riscaldamento[/u]

-vetri:int

+Ghisa(volume:int, calore:float, canna:Canna, vetri:int)
+getVetri():int
+toString():String


[u]Classe Autopulente extends Ghisa[/u]

-controllo:Data
-delta:int

+Autopulente(volume:int, calore:float, canna:Canna, vetri:int, controllo:Data)
+getUltimoControllo():Data
+getDelta():int
+toString():String
+Svuota():void
+getPrezzo():double  -->> {return (((Math.pow(c,4)*getDelta())/8,67);}


[u]Class Data collegata a Autopulente[/u]

-gg:int
-mm:int
-aaaa:int

+Data(gg:int, mm:int, aaaa:int)
+getGiorno():int
+getMese():int
+getAnno():int


[u]Class Canna collegata a Riscaldamento[/u]

-diametro:float
-lunghezza:int
-codice:char[8]

+Canna(diametro:float, lunghezza:int, codice:char[])
+getDiametro():float
+getLunghezza():int
+getCodice():char[]
+toString():String


Questa è la seconda parte

Code:
public class Esercizio
{
   public static void main(String[]args)
  {
     Camino [] C=new Camino [28];
     int i=0;
     for(i=0; i<C.length; i++)
     {
        int x=(int)(Math.random()*4);
        switch(x)
        {
           case 0:
           {
              C[i]=new Ornamentale(...);
           }
           case 1:
           {
              C[i]=new Ghisa(...);
           }
           case 2:
           {
              C[i]=new Muratura(...);
           }
           case 3:
           {
              C[i]=new Autopulente(...);
           }
        }
     }
     for(i=0; i<C.length; i++)
        System.out.println(C[i].toString());

     int caloretot=0;
     for(i=0; i<C.length; i++)
     {
        if(C[i] instanceof Ghisa)
          caloretot+=((Ghisa)C[i]).getCalore();
     }
     if (caloretot >= 13,8)
        System.out.println("true");
     else
        System.out.println("false");

     Camino [] Array =new Camino [C.length];
     int j=0;
     for(i=0; i<C.length; o++)
        Array [i] =C [i];
     for(i=0; i<Array.length; i++)
        volume+=Array[i].getVolume()*(3/15)/100;
     for(i=0; i<Array.length-1; i++)
     {
        for(j=i+1; j<Array.length; j++)
        {
           if(Array[j].getVolume() < Array[i].getVolume())
           {
              int temp=Array[j];
              Array[j]=Array[i];
              Array[i]=temp;
            }
         }
     }
     for(i=0; i<Array.length; i++)
       System.out.println(Array[i]);
  }   
}   
     


che ve ne pare?? se nell'esame scrivo esattamente questo codice potrebbe andare?
« Last Edit: 01-03-2009, 19:35:09 by •Black Angel• » Logged

Link Immagine

GlI aNgElI vEnGoNo, LaScIaNo Un'ImPrOnTa InDeLeBiLe NeLlA tUa ViTa E nEl TuO .. e VaNnO vIa PeR sEmPrE.. RoSaRiO sEmPrE qUi

♥ NoN e' MaI tR tArDi PeR eSsErE qUeLlO cHe AvReStI vOlUtO ♥
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #24 on: 01-03-2009, 16:55:51 »

Code:
Onestamente nn saprei...ti posso dire quello che ho fatto io...o almeno l'idea....
Tu hai implementato molti metodi nn richiesti, (esempio il setVolume nella classe Camino)
cosa che io invece nn ho fatto...ma cmq nn credo sia un errore ne il tuo ne il mio...io
onestamente me ne frego...io scrivo solo l'essenziale...e nn so se è giusto o sbagliato
(anche xkè cincotti ha fatto 1 solo esempio...qundi nn saprei) ma da quello che ha fatto
cincotti ha scritto solo quello che era strettamente necessario...Ti porto un esempio x
essere + chiaro: Nella classe scorrimento (esercizio delle chiavi fatto in classe),
cincotti ha messo solo 1 metodo abstract blocca (e ha detto di aggiugnere il
costruttore) ma in questa stessa classe cè una variabile privata chiamata lunghezza...
ke x quello che ha scritto lui è praticamente uno spreco di memoria, in quanto nn viene:
ne scritta dal costruttore, ne tramite 1 metodo specifico, ne è visibile nelle altre classi...
cmq ritornando al tuo esercizio credo sia giusto almeno nel modo di ragionare!
Io la classe camino l'ho fatta così:

<<abstract>>Camino
-Volume:float
-totaleCamini:int
+c:int
+delta:int

+Camini(V:float,d:int)
+getTotale():int
+getVolume():float
<<abstract>>+getPrezzo():float
+setVolume(float):void

Altra cosa che nn ho fatto è sovrascrivere il metodo toString()
Code:
Altra cosina
 if(C[i] instanceof Ghisa) caloretot+=((Ghisa)C[i]).getCalore();     
questa istruzione l'ho scritta diversamente:
if(C[i] instanceof (Riscaldamento))  caloretot+=((Ghisa)C[i]).getCalore();
E penso sia + giusta la mia...xkè anche quelli in muratura hanno una quantità di calore e non solo quelli in Ghisa

if (caloretot >= 13,8) dovrebbe essere if (caloretot >= 13,8*1000) (xkè era 13,8 Kcal)

Mentre (e prometto che concludo) l'ultimo punto l'ho scritto così:
Code:
Camini [] D=new Camini[28];
for(int i=0;i<D.length;i++){
        D[i]=C[i];
        float x=(int)(Math.random()*13)+3;
        D[i].setVolume(D[i].getVolume()+D[i].getVolume()*x/100);
E poi x ordinare tutti gli elementi basta usare un bubbleSort con lo swap
So che potevo far di meglio ed essere + chiaro...spero cmq d'esserti stato almeno un pò utile =)

Se serve altro scrivi pure 
« Last Edit: 01-03-2009, 17:04:14 by Manna » Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
damy88
Guest
« Reply #25 on: 01-03-2009, 17:25:00 »

ciao ragazzi scusate non ho capito bene una cosa di questo esercizio.
Quando nel testo è indicato di  implementare il "getTotale; restituisce il numero di camini creati fino all’istante di invocazione del metodo" non ho capito bene cosa devo scrivere...come faccio a mettere in quella variabile il numero di camini?grazie anticipatamente
Logged
Manna
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 156



« Reply #26 on: 01-03-2009, 17:28:18 »

Io ho messo una variabile totaleCamini di tipo intero nella classe astratta Camini (diciamo la classe madre) e, se si dovesse scrivere tutto il codice, metterei un totaleCamini++; nel costruttore
Implementare solo il getTotale() è una cosa molto semplice:
metti la variabile totaleCamini dove ti ho detto e scrivi il getTotale():int come metodo
questo metodo sarà
return totaleCamini;
Tutto qua =)
Logged

I'll be here...Why?...I'll be waiting...here...For what?...I'll be waiting...for you...so...If you come here...You'll find me...I promise!
damy88
Guest
« Reply #27 on: 01-03-2009, 18:26:05 »

non ho capito dove devo implementare il metodo totaleCamini++, per il resto tutto ok Cheesy
Logged
gaernik
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 114


« Reply #28 on: 01-03-2009, 18:29:10 »

non lo devi implementare, quello andrebbe messo nel caso in cui si dovesse implementare in java tutta la gerarchia, e in quel caso il totaleCamini++ lo andresti a mettere all'interno del costruttore della classe Camino.
Logged
Bart46
Apprendista Forumista
**
Offline Offline

Posts: 152



« Reply #29 on: 01-03-2009, 18:32:24 »

scusate.. ho notato una cosa.. hai dichiarato Riscaldamento abstract, e fino a qua è giusto.. ma muratura e ghisa, non sono derivati dalla classe riscaldamento piuttosto che camini?
Logged
Pages: 1 [2] 3   Go Up
Print
Jump to: