Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Daréios89 on 12-06-2009, 17:08:12



Title: Emh....costruttore...
Post by: Daréios89 on 12-06-2009, 17:08:12
Non ho capito a cosa serve esattamente....cioè in alcuni esempi ho visto che nel costruttore c'erano cose come:

Code:
class Motore
{
   private int potenza;
   private int kmAlLitro;
   private boolean avviato;     
       
   
   public  Motore (int _potenza,
                   int _kmAlLitro)
   {
      potenza   = _potenza;
      kmAlLitro = _kmAlLitro;
      avviato   = false;
   }


Perchè?? al posto di mettere i valori nel costruttore perchè quando li fichiariamo non li mettiamo e basta?
Che bisogno c'è prima di dichiararli, e poi in un costruttore inizializzarli al posto di fare tutto in una volta??


Title: Re:Emh....costruttore...
Post by: Eleirgab on 12-06-2009, 18:07:38
Se intendi una cosa del tipo
Code:
class Motore
{
   private int potenza = 12;
   private int kmAlLitro = 2;
   private boolean avviato = false; 
La risposta è:
No, perché noi vogliamo creare degli oggetti che siano diversi l'uno dall'altro. Con un codice come quello, potremmo creare infiniti oggetti motore, ma che avrebbero tutti la stessa informazione.
Noi invece vogliamo una classe "generale" che configuriamo di volta in volta in maniera opportuna.
Ad esempio
Code:
Motore uno = new Motore(12, 3);
Motore uno = new Motore(22, 89);
Crea due istanze della classe Motore con variabili d'istanza diverse.

Se invece intendevi una cosa del tipo:
Code:
class Motore
{
   public  Motore (int _potenza,
                   int _kmAlLitro)
   {
     int  potenza   = _potenza;
      int kmAlLitro = _kmAlLitro;
      boolean avviato   = false;
   }
La risposta è ancora no, per una questione di visibilità delle variabili.
In questo modo la variabile potenza sarebbe visibile solo quando richiamato il costruttore, ma non la potrei usare in metodi accessori.
Ricordati inoltre che è privo di senso dichiarare la variabili public o private all'interno di un metodo!


Title: Re:Emh....costruttore...
Post by: Daréios89 on 12-06-2009, 18:15:39
A cioè intendi che se io avessi un solo motore allora andrebbe bene come dicevo io, ma se abbiamo a che fare con più oggetti allora è meglio indicare potenza nel costruttore così ogni volta lo definiamo in base al motore che cambia di volta in volta, sennò sarebbe un valore costante per tutti?


Title: Re:Emh....costruttore...
Post by: Eleirgab on 12-06-2009, 18:37:12
Di fatto si, sebbene un oggetto "immutabile" non è che abbia molto senso nella programmazione orientata agli oggetti...