Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Cerberus on 24-09-2011, 15:28:22



Title: UML rombo colorato e non
Post by: Cerberus on 24-09-2011, 15:28:22
Salve ragazzi, volevo sapere se qualcuno è in grado di spiegarmi kosa vuol dire il rombo con la freccia tra due classi..
E se per cortesia potete dirmi come si traduce in codice JAVA

come ad esempio la freccia normale --> si traduce in extends.

esempio:

(http://i.imgur.com/oJqvV.jpg)

Grazie mille  .smile


Title: Re:UML rombo colorato e non
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 24-09-2011, 15:46:25
Salve ragazzi, volevo sapere se qualcuno è in grado di spiegarmi kosa vuol dire il rombo con la freccia tra due classi..
E se per cortesia potete dirmi come si traduce in codice JAVA

come ad esempio la freccia normale --> si traduce in extends.

esempio:

(http://i.imgur.com/oJqvV.jpg)

Grazie mille  .smile
Per prima cosa, quella che tu chiami "freccia normale" dovrebbe in realtà essere un triangolo con un vertice nella classe madre e dal cui lato opposto a quel vertice escono una o più linee spezzate che terminano in classi figlie (è giusto l'extends).

Quello che chiedi tu, si chiama "composizione" altrimenti detta "aggregazione forte", e denota il fatto che una istanza della classe in cui è presente il rompo "si compone integralmente" di una istanza della classe dove termina la linea.

Tipo il corpo umano (classe col rombo) si compone della classe cuore (ove termina il rombo). L'aggregazione forte implica che una volta che muore l'istanza della classe col rombo, muore pure l'istanza della classe ove terminava e che la componeva, cioè che sono fortemente legate, nella buona e nella cattiva sorte, in salute e in malattia, finché morte garbage collection (o per meglio dire mancanza di riferimenti ad essi) non li separi :boh.


Title: Re:UML rombo colorato e non
Post by: Cerberus on 24-09-2011, 15:57:06
Quote
Per prima cosa, quella che tu chiami "freccia normale" dovrebbe in realtà essere un triangolo con un vertice nella classe madre e dal cui lato opposto a quel vertice escono una o più linee spezzate che terminano in classi figlie (è giusto l'extends).

Quello che chiedi tu, si chiama "composizione" altrimenti detta "aggregazione forte", e denota il fatto che una istanza della classe in cui è presente il rompo "si compone integralmente" di una istanza della classe dove termina la linea.

Tipo il corpo umano (classe col rombo) si compone della classe cuore (ove termina il rombo). L'aggregazione forte implica che una volta che muore l'istanza della classe col rombo, muore pure l'istanza della classe ove terminava e che la componeva, cioè che sono fortemente legate, nella buona e nella cattiva sorte, in salute e in malattia, finché morte garbage collection (o per meglio dire mancanza di riferimenti ad essi) non li separi :boh.

LoL ottima metafora, ma non ho ben capito come tradurlo in codice, appunto  .penso


Title: Re:UML rombo colorato e non
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 24-09-2011, 16:15:19
LoL ottima metafora, ma non ho ben capito come tradurlo in codice, appunto  .penso
Praticamente questa cosa si capisce meglio in linguaggi tipo C++, ove c'è distinzione tra variabile di tipo puntatore a oggetto (cioè tutte quelle che si riferiscono a oggetti in Java, sono tutte di questo tipo) e variabili oggetto loro stesse.

In C++ puoi usare due scritture diverse per istanziare oggetti:
Code:
NomeClasse* nomeoggetto = new NomeClasse ();
che fa quello che tu conosci già da Java, e anche:
Code:
NomeClasse nomeoggetto ();
che crea un oggetto di tipo/classe NomeClasse e che viene distrutto (realmente distrutto) non appena il campo di visibilità in cui esso è stato creato termina, ad esempio in questo codice C++:
Code:
int metodo (int a) {
    if (a == 1)
    {
        MiaClasse miooggetto (a + 2); //qui mio oggetto inizia a esistere
        miooggetto.metodo (3 - a);
    } //a questo punto del codice, miooggetto muore e viene distrutto letteralmente, anche dalla memoria allocata
}
In Java la composizione la puoi rendere istanziando l'oggetto componente in uno dei costruttori ed evitando che il riferimento a quell'oggetto passi ad altri oggetti esterni alla classe (perché finché quell'oggetto sarà referenziato, continuerà ad esistere).
Più importante del fatto che l'oggetto componente debba per forza morire (e non essere mantenuto da dentro altri oggetti come riferimento), è il fatto che l'oggetto DEVE esistere fintanto che l'oggetto che lo ha come componente è ancora in vita, cioè il riferimento d della classe B del tuo esercizio non dovrà MAI contenere il valore null (se non prima dell'esecuzione del costruttore ovviamente :boh).


Title: Re:UML rombo colorato e non
Post by: Cerberus on 24-09-2011, 19:38:53
grazie 1000 ...