Pages: [1]   Go Down
Print
Author Topic: Emh....costruttore...  (Read 878 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« 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??
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Eleirgab
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 344


Apprezzatemi ora. Eviterete la fila


WWW
« Reply #1 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!
Logged

Collettivo SDAI

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GIT d-- s+:+ a-- C++ UL++ P L+++ E- W+++>$ N? o? K- w-- O? M V? PS++ PE- Y+ PGP- t 5? X+ R>+ tv-- b++ DI+++ D- G e h! r y+
------END GEEK CODE BLOCK-----
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


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

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Eleirgab
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 344


Apprezzatemi ora. Eviterete la fila


WWW
« Reply #3 on: 12-06-2009, 18:37:12 »

Di fatto si, sebbene un oggetto "immutabile" non è che abbia molto senso nella programmazione orientata agli oggetti...
Logged

Collettivo SDAI

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GIT d-- s+:+ a-- C++ UL++ P L+++ E- W+++>$ N? o? K- w-- O? M V? PS++ PE- Y+ PGP- t 5? X+ R>+ tv-- b++ DI+++ D- G e h! r y+
------END GEEK CODE BLOCK-----
Pages: [1]   Go Up
Print
Jump to: