Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi N - Z > Programmazione > [aiuto] ereditarietà
  Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
ste182
.arcimaestro.

User info:
Registered: Oct 2004
Posts: 258 (0.03 al dì)
Location:
Corso: informatica
Anno:
Time Online: 2 Days, 5:06:07: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged
[aiuto] ereditarietà

ciao a tutti, non riesco a capire il concetto di extends in java.. dunque: ho capito che se estendo una classe A con un B nella B eredito i metodi e i campi della A.
faccio un esempio:
class A
{
int a =0;

public A(){
a = getCampo();
}

public int getCampo(){
return ++a;
}
}

class B extends A
{
int b=0;

public B()
{
b = getCampo();
}
}

se eseguo:
B obj = new B();
System.out.println("a = "+obj.a+" b = "+obj.b);

perchè stampa a=2 b=2 ?? quando costruisco a la incremento solo 1 volta quindi perchè esce 2?? help please

__________________
Live Fast, Die Fun

15-01-2007 13:08
Click Here to See the Profile for ste182 Click here to Send ste182 a Private Message Find more posts by ste182 Add ste182 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Smirne
.arcimaestro.

User info:
Registered: Feb 2003
Posts: 479 (0.06 al dì)
Location: Milano
Corso: Comunicazione Musicale
Anno: -6
Time Online: 2 Days, 22:50:10 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

la prima istruzione del costruttore di ogni classe è una chiamata al costruttore della classe superiore.

Quindi quando esegui B obj = new B();

viene eseguito prima il costruttore di A (che contiene getCampo(), e incrementa quindi a al valore 1).

viene eseguito poi il contenuto del codice del costruttore, ovvero la chiamata di getCampo() che incrementa la variabile a, (che quindi diviene 2) e ne assegna il valore a b (sempre 2).

(credo) :)

__________________
www.welld.ch
Sviluppo software tra Italia e Svizzera

15-01-2007 14:27
Click Here to See the Profile for Smirne Click here to Send Smirne a Private Message Visit Smirne's homepage! Find more posts by Smirne Add Smirne to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ste182
.arcimaestro.

User info:
Registered: Oct 2004
Posts: 258 (0.03 al dì)
Location:
Corso: informatica
Anno:
Time Online: 2 Days, 5:06:07: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ah ecco! ora mi è chiaro! non la sapevo sta cosa della chiamata al costruttore della superclasse... ora avrei un'altra domanda riferita stavolta alla ricorsione:

class Prova
{
public static int f(int a, int b)
{
if (b < 0 || a < b)
return 0;
if(a == b && b >= 0)
return 1;
return f(a-1,b) + f(a-1,b-1) +1;
}
}

chiamando il metodo f(2,0) mi ritorna 3... non capisco come mai...

1) 0<0 falso e 2<0 falso
2)2==0 falso
quindi si richiama di nuovo f però con (1,0)

1) 0<0 falso 1<0 falso
2)1==0 falso
a diventa quindi 0 e b pure

1)0<0 falso
2)0==0 && 0>=0 vero!
quindi ritorno 1 e la prima parte dell'espressione l'ho risolta giusto?
(sarebbe return 1 + f(a-1,b-1) + 1)

ora passo al secondo termine ovvero f(a-1,b-1); qui devo partire dai valori iniziali 2,0 oppure da 0,0?

__________________
Live Fast, Die Fun

15-01-2007 14:37
Click Here to See the Profile for ste182 Click here to Send ste182 a Private Message Find more posts by ste182 Add ste182 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Smirne
.arcimaestro.

User info:
Registered: Feb 2003
Posts: 479 (0.06 al dì)
Location: Milano
Corso: Comunicazione Musicale
Anno: -6
Time Online: 2 Days, 22:50:10 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

primo passaggio:
1) 0<0 falso e 2<0 falso
2)2==0 falso

quindi devo ritornare f(1,0) + f(1,-1) + 1;

cominciamo a eseguire f (1,-1). Per la condizione 1) (b<0) il risultato è 1.

quindi aggiorniamo: f(2,0) = f(1,0) + 0 + 1;

calcoliamo il valore di f(1,0):

1) 1<0 falso 1<0 falso
2)1==0 falso

dovro' ritornare f(0,0) + f(0,-1) +1;

f(0,-1) = 0 (per b<0, condizione 1)

f(0,0) = 1 (0 == 0, 0 >= 0, condizione 2)

quindi f (1,0) = 1 + 0 + 1 = 2;

torniamo a f(2,0) = f(1,0) + 0 + 1;
esso sarà 3= 2 + 0 + 1;

spero si capisca..dimenticavi il +1 quando eseguivi f(1,0);

__________________
www.welld.ch
Sviluppo software tra Italia e Svizzera

Last edited by Smirne on 15-01-2007 at 15:22

15-01-2007 15:20
Click Here to See the Profile for Smirne Click here to Send Smirne a Private Message Visit Smirne's homepage! Find more posts by Smirne Add Smirne to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
ste182
.arcimaestro.

User info:
Registered: Oct 2004
Posts: 258 (0.03 al dì)
Location:
Corso: informatica
Anno:
Time Online: 2 Days, 5:06:07: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ah ho capito! grazie mille!
sai che facevo io? scomponevo l'espressione in pezzi e li eseguivo uno alla volta... in pratica trovavo prima il valore di f con a=1 b=0 e mi veniva 1 poi il valore di f(-1,-1) che dava 0.. quindi facevo 1+1+0=2..... ahaha che stupido....

grazie ancora!

cmq più che programazione mi sembra di studiare matematica... ahahahahahaha:D

__________________
Live Fast, Die Fun

15-01-2007 16:01
Click Here to See the Profile for ste182 Click here to Send ste182 a Private Message Find more posts by ste182 Add ste182 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 22:48.    Post New Thread    Post A Reply
  Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.070 seconds (70.26% PHP - 29.74% MySQL) con 27 query.