Site des Oraux

Programmation Orientée Objet 2007 (4) :: post
Années :: 2004 :: 2005 :: 2006 :: 2008 :: 2009 :: Toutes

Post nº4 (id3303) envoyé par patrick  le 04 Sep 2007, 09:56
Voici ma question de ce matin:

On a trois classes A,B,C. A et B sont liées par un lien d'association et B et C sont liées par un lien de composition. Il donne ensuite un diagramme de séquence du genre:
" "a:A" "b:B" "c:C
" "|" "|" "|
" "|___faireB()________ >|___faireC()_______>|
" "|" "|" "|
" "|___________________> X ----------------->X
" "|" "|" "|

(rem:les fleches du bas indique qu'on effectue une procedure d'éliminationd es objets)

Question: donnez le code java représenté par ce diagramme de classe et de séquence. Expliquez la procedure l'élimination des objets.

Alors pour le diagramme UML , voir cours. Pour la procedure de suppression il faut dire qu'on invoque explicitement le garbage collector depuis A pour supprimer B avec finalize() et comme C est lié à B par un lien de composition, il sera éliminé qd B le sera. Mais Bersini veut savoir comment ca se passe dans la memoire cad comment peut on etre sure que tous les referents de l'objet B et de l'objet C seront éliminé!!
En somme il faut dire que pour l'objet C, comme il est instancié et crée dans c, tous ses referents sont assurée de disparaitre avec l'objet B. Mais pour le referent B on ne sait pas car il n'est que déclarer dans A(cf lien association).
Voila vla...

Post nº3 (id3302) envoyé par patrick  le 04 Sep 2007, 09:53
Voici ma question de ce matin:

On a trois classes A,B,C. A et B sont liées par un lien d'association et B et C sont liées par un lien de composition. Il donne ensuite un diagramme de séquence du genre:
a:A b:B c:C
| | |
|___faireB()________ >|___faireC()________|
| | |
|___________________> X ----------------->X
| | |

(rem:les fleches du bas indique qu'on effectue une procedure d'éliminationd es objets)

Question: donnez le code java représenté par ce diagramme de classe et de séquence. Expliquez la procedure l'élimination des objets.

Alors pour le diagramme UML , voir cours. Pour la procedure de suppression il faut dire qu'on invoque explicitement le garbage collector depuis A pour supprimer B avec finalize() et comme C est lié à B par un lien de composition, il sera éliminé qd B le sera. Mais Bersini veut savoir comment ca se passe dans la memoire cad comment peut on etre sure que tous les referents de l'objet B et de l'objet C seront éliminé!!
En somme il faut dire que pour l'objet C, comme il est instancié et crée dans c, tous ses referents sont assurée de disparaitre avec l'objet B. Mais pour le referent B on ne sait pas car il n'est que déclarer dans A(cf lien association).
Voila vla...

Post nº2 (id2714) envoyé par Slob  le 02 May 2007, 12:50
Il écrit au tableau:

public class A
{
private int a;
public A(int a)
{
this.a=a;
}
public void IncA()
{
a++;
}
}

public class Principale
{
public void Inc(int b)
{
b++;
}
public static void main(String []args)
{
A a=new A(5);
int b=5;
a.IncA();
Inc(b);
}
}

Et la question était: que vaut l'entier dans a et que vaut l'entier b?

Il fallait penser au fait que dans java, tout objet est passé par référence SAUF les objets de type primitif...comme notre entier b qui est passé par valeur. Bref, "a"=6 tandis que b=5.
J'ai très bien pu lui expliquer tout ce qui se passait, mais je n'ai pas pensé sur le moment à la particularité des objets primitifs. Il m'a laissé mariner pendant 10min puis m'a dit que je n'avais rien compris aux bases de la programmation OO. Je ne vois toujours pas en quoi cette question démontre la connaissance de l'OO, d'après moi, c'est une particularité du language JAVA.

GOOD LUCK, car ça se joue à ça.

Post nº1 (id2712) envoyé par Fluffzor  le 21 Apr 2007, 15:23
alors moi j'ai eu, après la défense du projet :

2 classes A et B, avec une association (ou dépendance je sais plus)

la classe A possède donc un objet de type B

ensuite il instancie 1 objet de A et m'a demandé comment faire une copie de a ? et quels problèmes peuvent survenir.

J'ai dis qu'il fallait utiliser la méthode clone() de la classe objet

il m'a demandé de faire un petit dessin pour expliquer ce qu'il se passait dans la mémoire, là j'ai un peu cafouillé mais il fallait simplement faire un objet a1 qui pointait vers un objet b.

ensuite un objet a2 mais qui pointe vers le même objet b <= c'est là que ça peut etre embetant donc comment faire pour avoir 2 trucs indépendants (clonage en profondeur quoi...)

bon bin là denouveau un peu lent à la détente moi...
pour me mettre sur la voie il me dit
"qu'est ce que java incite de faire?"
"bon dans la classe objet, la méthode clone est protected, (c quoi protected il me demande)"

tout ça pour que je lui sorte qu'il fallait redéfinir la méthode clone dans la classe A
avec un b2=b.clone() ou qqch du genre

il m'a dit "ah bin on y est arrivé c'est bon , ok!"

bye bye

A noter que le tout premier type a être entré à simplement eu 2 classes A et B (B fille de A) et du écrire les classes... (le mot magique était extends) il est resté 3 min...

y a également eu des histoires de polymorphisme (joueur = gardien...) et de garbage

aussi des histoires sur les interfaces et enfin une question sur le multithreading

bref en arrivant et en discutant avec le premier gars on se dit : "ahaha berber les doigts dans le pif" et puis c'est plutot lui qui nous passe à la broche...

note : il file pas les points


oraux.pnzone.net - infos - 79ms